{
  "name": "Crub",
  "description": "Look after your garden with Crub: what needs doing and when, planning and planting, the journal, soil readings, and identifying plants, mushrooms and insects from a photo. Sign in with your Crub account.",
  "transport": "https://mcp.crub.ai/mcp",
  "tools": [
    {
      "name": "list_gardens",
      "title": "Your gardens",
      "description": "The gardens the person can open, with their role in each: an owner or editor can change anything, a contributor can log what they did, a viewer can only look. Start here: every other tool takes the gardenId it gives.",
      "annotations": {
        "title": "Your gardens",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_garden_overview",
      "title": "Your garden at a glance",
      "description": "One garden at a glance, as the top of its Garden page shows it: its size and hardiness zone, how many plants and species it holds, the open jobs soonest first, the care and harvest that fall due around today (up to a week overdue, or within a fortnight), what is in bloom today, and the latest journal entries. The place to start when the person asks what needs doing.",
      "annotations": {
        "title": "Your garden at a glance",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_garden_layout",
      "title": "How the garden is laid out",
      "description": "How a garden is laid out: its zones, the features in each (beds, borders, structures) and the plants in each, by name, with the ids every other tool takes. Features and plants in no zone are listed apart.",
      "annotations": {
        "title": "How the garden is laid out",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_plant",
      "title": "A plant in full",
      "description": "One plant in full: its species and where it grows, when it was planted, what its species needs (sun, water, hardiness) and when it blooms, is planted and harvested, its open jobs, and its history from the journal, newest first.",
      "annotations": {
        "title": "A plant in full",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_jobs",
      "title": "The jobs",
      "description": "A garden’s jobs: open ones soonest due first, or those done. Narrow to a type, or to a zone, feature or plant — a zone holds what is filed under it, a feature what is in it.",
      "annotations": {
        "title": "The jobs",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_calendar",
      "title": "The garden’s year",
      "description": "A garden’s year as its Planner shows it, month by month: when each plant blooms, is sown or planted, needs care and is harvested — predicted from its species and the garden’s frost dates — with what was recorded in the journal marked as observed. Narrow to a month or a kind of event.",
      "annotations": {
        "title": "The garden’s year",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "add_jobs",
      "title": "Add jobs",
      "description": "Add jobs to a garden’s planner: care (prune, fertilise, repot, divide, transplant), harvest or general work, each with a title and, where it has them, a due date, the plant, feature or zone it is for, and who it is for (a member’s user id; the person themselves when left out). To plant something new, use plan_planting.",
      "annotations": {
        "title": "Add jobs",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "plan_planting",
      "title": "Plan a planting",
      "description": "Plan to plant species in a garden, as “Add to garden” does in the app: each queues a planting job, and nothing is in the ground until it is completed (complete_jobs), which is when the plant is placed. Give a due date to plan it for a day. Mushrooms can be planted; an insect cannot.",
      "annotations": {
        "title": "Plan a planting",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "update_job",
      "title": "Change a job",
      "description": "Change a job: reschedule it, retitle it, reassign it to another member, or move it to another plant, feature or zone. Only what is given changes.",
      "annotations": {
        "title": "Change a job",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "complete_jobs",
      "title": "Mark jobs done",
      "description": "Mark jobs done, when the person says they are. Each is recorded in the journal as theirs: a care or harvest job on a plant as that plant’s entry, any other as a job done. A planting job puts its plant in the ground: name the feature or zone it went into, and it is placed there and its harvest job queued; left out, it waits at the middle of the garden for the person to place it in the app. Completing a planting job needs an owner or editor.",
      "annotations": {
        "title": "Mark jobs done",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_jobs",
      "title": "Delete jobs",
      "description": "Delete jobs from the planner, done or not. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Delete jobs",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "add_plants",
      "title": "Add plants to the garden",
      "description": "Put plants in the garden that are already in the ground: each by species, in the feature or zone the person names, spread across it where a plant may go. A species with a harvest season gets a harvest job for that bed, as in the app. To plan a planting instead, use plan_planting. Needs an owner or editor, and a garden whose outline is drawn.",
      "annotations": {
        "title": "Add plants to the garden",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "move_plants",
      "title": "Move plants",
      "description": "Move plants to another feature or zone of the same garden: where they grew and what they are filed under follow them. Needs an owner or editor.",
      "annotations": {
        "title": "Move plants",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "remove_plants",
      "title": "Take plants out",
      "description": "Take plants out of the garden’s plan. To record that one died or was lifted, write a journal entry as well. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Take plants out",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "update_places",
      "title": "Rename or recategorise places",
      "description": "Rename a zone or change its colour; rename a feature, change what it is (a bed, a border, a greenhouse …) or its notes. Outlines are drawn in the app. Needs an owner or editor.",
      "annotations": {
        "title": "Rename or recategorise places",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "remove_places",
      "title": "Take out zones or features",
      "description": "Take zones or features off the plan. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Take out zones or features",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "read_journal",
      "title": "Read the journal",
      "description": "A garden’s journal, newest first, a page at a time: what was planted, pruned, harvested or spotted, the notes, the species snapped and the jobs done, each with who and where. Narrow to one plant or one year.",
      "annotations": {
        "title": "Read the journal",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "write_journal",
      "title": "Write in the journal",
      "description": "Record what happened in a garden’s journal, in the person’s name. About a plant: its plantId and what happened to it — planted, transplanted, bloom_start, bloom_end, harvested, pruned, divided, repotted, fertilised, pest_spotted, disease_spotted, die_back, note — on the day it did. About the garden: a note, with a title, filed under a zone or feature where it belongs; or snapped, a species seen, by its speciesId. A completed job writes its own entry: use complete_jobs for that.",
      "annotations": {
        "title": "Write in the journal",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_journal_entries",
      "title": "Take entries out of the journal",
      "description": "Take entries out of a garden’s journal. An owner or editor can take out any; a contributor only their own. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Take entries out of the journal",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_conditions",
      "title": "The garden’s conditions",
      "description": "What was measured in a garden, one feature, or one zone, as the Conditions page shows it: the latest readings, and each measure over time in buckets — the mean, the lowest and highest single reading, and for light, exposure and soil type the most common value. A garden or zone is the unweighted mean of its places’ own means, so a bed measured often does not outweigh one measured once. Buckets nobody measured are there with no values.",
      "annotations": {
        "title": "The garden’s conditions",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "record_readings",
      "title": "Record readings",
      "description": "Record what was measured, in the person’s name: each reading is of one feature (a bed, a border — the ground, never a plant or a whole zone) and measures at least one of soil pH, moisture %, light, exposure and soil type, on the day it was taken (today when left out). Its zone is the feature’s.",
      "annotations": {
        "title": "Record readings",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    },
    {
      "name": "delete_readings",
      "title": "Take readings out",
      "description": "Take readings out of a garden’s conditions: the series no longer counts them. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement.",
      "annotations": {
        "title": "Take readings out",
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "find_species",
      "title": "Find a species",
      "description": "Search the catalogue of plants, mushrooms and insects by name — common or scientific — or by what the person wants: when it blooms, flower colour, light, water, kind of plant, edible or medicinal, family or native region. With a garden, only what is hardy there. When a name finds nothing, the names it may have meant come back instead.",
      "annotations": {
        "title": "Find a species",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_species",
      "title": "A species in full",
      "description": "A species’ fact sheet: its names and family, what it needs (light, water, soil, hardiness), its size, when it blooms, is planted and harvested, what is edible or medicinal and any hazards, its companions and the plants it does badly beside, and how many of its facts more than one source agrees on. With a garden: how many are planted there, and which of its antagonists already grow there. A species the catalogue knows only in outline is filled in from Kindwise first, as the app does when it is opened.",
      "annotations": {
        "title": "A species in full",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "recommend_plants",
      "title": "What would grow well here",
      "description": "What would grow well in a garden now, as the Identify page suggests it: species hardy in its zone that are in bloom or harvest this month, companions of what already grows there first, with the plants each pairs with. Measured conditions do not change them.",
      "annotations": {
        "title": "What would grow well here",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_snaps",
      "title": "Snaps left",
      "description": "How many identifications (Snaps) are left before identify_photo is refused, and whose plan pays: in a garden, its owner’s; outside one, the person’s own. Check before identifying.",
      "annotations": {
        "title": "Snaps left",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "identify_photo",
      "title": "Identify from a photo",
      "description": "Identify a plant, mushroom or insect from up to five photos of the one subject, as data:image/… base64 URLs: the likely matches, each with its confidence and whether the catalogue already has it. Spends one Snap, paid by the garden’s owner when a garden is given and by the person otherwise; nothing is written to the garden. A location (both latitude and longitude, coarse is enough) sharpens it. Only with the person’s explicit agreement in this conversation, for exactly these items: say what you will do and why, and wait for their yes. Silence, a general instruction or your own judgement is never agreement. To keep a match, keep_identification.",
      "annotations": {
        "title": "Identify from a photo",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "keep_identification",
      "title": "Keep a match",
      "description": "Keep a match identify_photo found: its species is added to the catalogue if it is new, and its fact sheet comes back. With a garden, it is also noted in that garden’s journal as snapped — the Identify page’s “That’s my plant”. Spends no Snap. It does not plant anything: plan_planting or add_plants does.",
      "annotations": {
        "title": "Keep a match",
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    }
  ]
}
