11

MCP tools

The read and write data commands the MCP server provides, and what they return.

Read

list_projects

Reads the list of your project grounds. It returns the following.

  • Slug (slug)
  • Name (name)
  • Last activity (latestActivityAt)
  • Active or not (isActive)
  • Transplanting status (transplanting)
  • Node count (nodeCount), open bug count (openBugs), season count (seasonCount)
  • Current season name (nowSeasonLabel)
  • Description excerpt (description)
  • Wiki page count (wikiCount) — only when there are pages
  • The team it belongs to (org, the team slug) and your role there (role: owner / editor / viewer) — only for team grounds. As a viewer, write tools are rejected with 403

Parameters

KindNameValuesNotes
Optionalviewsummary / fullfull also returns the ground’s intent (seedMeta: goal, end date, budget, audience)

get_graph

Reads the tree drawn on one project ground, along with its details.

  • Nodes (nodes): including plan / implements / dormant flags
  • Dependencies (edges)
  • APIs (apis)
  • Seasons (seasons)
  • Bugs (bugs)
  • Transplanting status (project.transplanting)
  • The ground’s intent (project.seedMeta) — the goal, end date, budget, and audience a person wrote down. Read it before proposing structure

Parameters

KindNameValuesNotes
RequiredslugSlug of the ground whose tree to read
Optionalviewsummary / fullDefault summary. full returns every field, soft-deleted nodes included
OptionalrootIdnode idOnly this node (a trunk, a limb …) and the branches below it
OptionaldepthnumberHow many levels down from rootId (0 = just that node). Omit for all
OptionalmaxTypetrunk / limb / twig / leaf / veinOnly up to this level. e.g. twig: trunk, limb and twig, without leaf and vein
Optionalrolestructure / object / actionOnly what has that role
Optionalseasonseason idOnly nodes that grew in that season
Optionaldescriptionsnone / excerpt / fullHow much description to include. Default excerpt (200 chars)
OptionalbugStatusactive / wild / chasing / resolved / allWhich bugs to include. active (default): every unresolved bug (wild + chasing)

When the tree has grown large, these parameters let you read part of it instead of all at once: “Show me only what grew in the previous season.” “Read this project’s tree without descriptions.” “Read the bugs currently open in this project.”

get_impact

Checks the blast radius — the nodes affected when something breaks, following dependencies and API flow.

Parameters

KindNameValuesNotes
Requiredslug
Requirednodenode idStarting point to check from (node)
Requiredbugbug idStarting point to check from (bug)
Optionaldirectionaffected / dependsOn / bothaffected (default): what is affected when the starting point breaks. dependsOn: what can affect the starting point
OptionalmaxDepthnumberMaximum hops to traverse. Unbounded if omitted

list_bugs

Reads the bug list of a project ground, with each bug’s risk (score, 0–8) and impact (impactCount).

Parameters

KindNameValuesNotes
Requiredslug
Optionalstatusactive / wild / chasing / resolved / allactive (default): wild + chasing
OptionallimitnumberMaximum count
Optionalorderasc / descOrder of registration. asc (default): oldest first
Optionalviewsummary / fullsummary (default): leaves out description and metadata

get_bug

Reads one bug, by its number (ref: 14 — the #014 shown in the UI) or its id. Returns the full description plus its blast radius.

Parameters

KindNameValuesNotes
Requiredslug
Requiredrefnumber or idBug number (14) or bug-<uuid>
Optionaldescriptionsnone / excerpt / fullHow much description to include. full (default): all of it
Optionalsolutionnone / open / fullfull (default): all of it. open: only the unchecked items left to do

list_seasons

Reads the list of seasons.

Parameters

KindNameValuesNotes
Requiredslug
Optionalviewsummary / fullfull includes UI-only metadata

list_events

Reads the change history of a project ground (create / update / delete / plan_commit).

Parameters

KindNameValuesNotes
Requiredslug
OptionallimitnumberDefault 50, max 200
OptionalbeforeISO timestampOnly events older than this (paging)
OptionalentityTypenode / edge / api / bugOne kind of entity only
OptionalentityIdidOne entity’s history only (usually with entityType)

Write — tree, dependencies, APIs

create_node

Follows the plant vocabulary hierarchy: violations are rejected, and softer issues come back as warnings that steer you to adjust.

  • Build from the leaf. When adding a leaf or vein, create only the ancestors (trunk, limb, twig) still missing on its path, then attach the leaf. Don’t lay down every trunk, then every limb, filling one layer at a time.
  • A trunk can’t be a plan. A trunk is the frame of the tree and is always created committed; metadata.plan on a trunk is rejected.

Parameters

KindNameValuesNotes
Requiredslug
Requiredtypetrunk / limb / twig / leaf / vein
RequiredlabelThe name shown on the tree
Optionalparentnode idOmit to place it at the top level (a new trunk)
Optionalseasonseason idOmit to place it in the now season
Optionaldescription
Optionaltagslist of strings
OptionalmetadataobjectFor a leaf or vein, put the implementing file paths in metadata.implements
OptionalsproutedAtISO timestampThe real creation time — when the file was actually created, not when it was imported

update_node

Edits an existing node. Record realized code in metadata.implements.

A node that already grew in a past season keeps its place in time and in the tree — parent, season, type, and sproutedAt can’t be changed; only label, description, metadata, and tags can. While the ground is first transplanting, its place can be changed too, whatever the season.

Parameters

KindNameValuesNotes
Requiredslug
Requiredidnode id
RequiredpatchobjectOnly the fields to change

delete_node

Deletes an existing node. Its record stays, though — turn the slider back and you can still see the trace of the branch (soft-delete). While the ground is first transplanting, you can remove the trace as well (hard-delete).

Parameters

KindNameValuesNotes
Requiredslug
Requiredidnode id
Optionalcascadetrue / falseDeletes the active descendants too
Optionalhardtrue / falsePermanent delete. Only while transplanting; irreversible

create_edge / delete_edge

Edits dependencies (edges) between nodes. Direction is source → target.

Parameters

Create (create_edge)

KindNameValuesNotes
Requiredslug
Requiredsourcenode idThe side that relies on the other / where data leaves
Requiredtargetnode id
Requiredtypedependency / data_flowdependency: source depends on target. data_flow: data flows from source to target
Optionallabel
Optionalmetadataobject

Delete (delete_edge)

KindNameValuesNotes
Requiredslug
Requiredidedge id

create_api / update_api / delete_api

Edits call flows between nodes. Direction is caller (start) → callee (end).

Parameters

Create (create_api)

KindNameValuesNotes
Requiredslug
Requiredstartnode idThe caller
Requiredendnode idThe callee
Optionallabel
Optionaldescription
Optionalmetadataobject

Update (update_api)

KindNameValuesNotes
Requiredslug
Requiredidapi id
RequiredpatchobjectOnly the fields to change

Delete (delete_api)

KindNameValuesNotes
Requiredslug
Requiredidapi id

Write — grounds & bugs

create_project

Creates a new project ground. A new ground starts in transplant mode.

Parameters

KindNameValuesNotes
RequiredslugURL identifier. Lowercase letters, digits, hyphens; 1–50 chars
RequirednameDisplay name
Optionaldescription
Optionalorgteam slugCreates the ground in that team. Only the team’s owner can

create_bug

Reports a new bug.

Parameters

KindNameValuesNotes
Requiredslug
RequiredtitleOne-line summary
Requiredtarget{kind, id?}kind: node / api / ground. Use {kind: "ground"} for a problem with the project itself
Optionaldescription
Optionalsolution
Optionalscore0–8Risk. Default 4
Optionalstatusopen / in_progress / resolved / closedStatus. Default open

The description and solution are written in markdown. In the solution, - [ ] item lines make a checklist you can keep track of.

update_bug / delete_bug

Edits or deletes a bug.

Parameters

Update (update_bug)

KindNameValuesNotes
Requiredslug
Requiredidbug id
RequiredpatchobjectOnly the fields to change. One checklist item: solutionItem

Delete (delete_bug)

KindNameValuesNotes
Requiredslug
Requiredidbug id

Growth

commit_plan

Confirms a plan node and promotes it into the growth record. It needs metadata.implements (proof it was realized) to be confirmed.

Parameters

KindNameValuesNotes
Requiredslug
Requiredidplan node id

record_commit

Writes a commit record into metadata.commits of every node whose realization proof (implements) matches a changed file.

Parameters

KindNameValuesNotes
Requiredslug
RequiredshaCommit SHA (short is fine)
Requiredfileslist of pathsFiles the commit changed (repo-relative)
OptionalmessageCommit message

create_season

Opens a new season and makes it now. The agent asks the user first, and the season is created only when it sends confirm: true.

Parameters

KindNameValuesNotes
Requiredslug
RequiredlabelThe season name the person chose (a version, phase or period)
OptionalconfirmtrueOnly on the second call, after the user agreed. Omit on the first

Wiki

Records the spec of the project as it is built now. Changes are kept as revisions.

list_wiki

The ground’s wiki pages. Bodies come back as 200-character excerpts by default.

Parameters

KindNameValuesNotes
Requiredslug
Optionalnodenode id or noneIf given, reads the pages attached to that node. none reads the pages not attached to any node
Optionalkindoverview / concept / component / rule / glossary / noneReads only pages of that kind. none reads only pages not yet classified
Optionalbodynone / excerpt / fullHow much of the body to include: default excerpt
OptionallimitnumberMaximum number of pages to read
Optionalorderasc / desc / treeOrder by last update: default desc. tree reads in table-of-contents order (the order you read from the overview)

get_wiki

Reads one wiki page in full. Pass rev to read an older revision.

Parameters

KindNameValuesNotes
RequiredslugGround slug
Requiredrefpage slug or id
OptionalrevnumberRevision to read. Omit to read the current page

list_wiki_revisions

Reads the list of a page’s revisions.

Parameters

KindNameValuesNotes
Requiredslug
Requiredrefpage slug or id
Optionallimitnumber
Optionalorderasc / descBy revision number. Default desc

write_wiki

Edits a page. A name that doesn’t exist yet creates a new page. The default replace mode overwrites the whole body, so read it with get_wiki first. By default, edits by the same author within 30 minutes don’t become a new revision, but you can force one by passing newRevision: true.

Parameters

KindNameValuesNotes
RequiredslugGround slug
RequiredpagePage name. Lowercase letters, digits, hyphens (e.g. deploy-notes)
OptionaltitleDisplay title. Required when creating a page
Optionalkindoverview / concept / component / rule / glossaryPage kind (overview, concept, component, rule, glossary). Each kind needs different sections
Optionalparentpage slug or id, nullThe page this one sits under in the table of contents. null puts it at the top (only the overview belongs there)
OptionalpositionnumberOrder among pages under the same parent (ascending)
OptionalbodyMarkdown body. With append, the text to add
Optionalmodereplace / append / restoreDefault replace. append adds a missing section at the end; restore brings back the revision in rev
OptionalrevnumberThe revision to bring back with restore
OptionalbaseRevnumberThe revision you read. If someone changed the page since, the write is refused instead of overwriting
OptionalnewRevisiontrue / falseBreak the 30-minute fold and start a new revision
Optionalnodenode id or nullNode to attach the page to. null detaches; omit to leave it as is
OptionalrenameNew page name. Keeps the id and revision history

delete_wiki

Deletes a page.

Parameters

KindNameValuesNotes
Requiredslug
Requiredrefpage slug or id

Feedback on Umtri

You can send problems with the product or requests for improvement. When needed, the agent checks with the user before sending.

send_feedback

Files a suggestion (improvement, the default) or a defect report (bug).

Parameters

KindNameValuesNotes
RequiredtitleOne-line summary
Optionalkindbug / improvementDefault improvement
OptionalbodyWhat you expected, what happened, why it matters (markdown)
OptionalsourceWhere it came up — a ground slug, tool name or screen