Skip to content
Back to search
100
MCP live MCP 2025-11-25 http

Umtri

io.umtri/umtri

Give your AI agent a persistent map of your project's structure, dependencies, and bugs.

Watch this dependency Share evidence report
Uptime
100.0%
1 direct probes · 30d
Response
1816ms
last probe
Tools
32
callable
Resources
12
readable
Prompts
0
available
Primary URL
https://mcp.umtri.io
Score: 100/100
Handshake verified by our own probe.
pass Answers the MCP handshake 50/50
The handshake and the list calls succeeded on the primary URL.
pass Lists tools, resources or prompts 30/30
32 tools, 12 resources, 0 prompts returned.
pass 3 or more catalogue items 10/10
44 items in total; 3 or more earns these points.
pass Describes itself 10/10
88 characters; more than 30 earns these points.

Tools · 32

list_projects

Returns all grounds the authenticated user can access, with latest activity timestamp. Use this first to discover slugs for other tools. By default returns a summary view — each ground carries slug, n…

get_graph

Returns the tree(nodes), edges, apis, seasons, and bugs for one ground. The tree is the project's information-structure (IA) diagram — each node is a structural element (an object, or an action it per…

get_impact

Walks the connection graph (edges + apis) from a start node — or a bug's target — to find which other nodes a problem would reach. This is the tool for "if this breaks / I change this, what else do I …

list_bugs

Scans the bugs (issues eroding the ground) of one ground. Looking at ONE bug you already know the number/id of? Call get_bug instead — no need to list. Bugs default to status="active" (wild + chasing)…

get_bug

Returns a single bug by reference — the cheap path when you already know which bug you mean. `ref` accepts either the human-facing number shown in the UI (seq — "14" or #14) or the internal id (bug-<u…

list_seasons

Returns the seasons (time epochs) of a ground in chronological order. A season is the human's declaration that a chapter closed. You may create one with create_season, but only after the user confirms…

export_ground

Returns everything in a ground as one JSON document — project, seasons, nodes (removed ones included, with removedAt), edges, apis, bugs and wiki pages with full bodies. For backups, moving off Umtri,…

list_events

Returns the append-only change history (most recent first) of a ground: node/edge/api/bug create, update (with a field-level diff {from,to}), delete, and plan_commit. Each event carries the actor ("us…

create_bug

Creates a new bug (issue eroding the target). target.kind = "node" or "api" requires target.id of an existing node/api in the ground. target.kind = "ground" attaches the bug to the project itself (no …

create_project

Creates a new ground. Slug must match /^[a-z0-9][a-z0-9-]{0,49}$/ and be unique. By default it goes into the authenticated user's personal space; pass org (a team slug, as list_projects shows it) to c…

create_season

Creates a new season and makes it the "now" season. This is not an additive act: the ground's current now-season is sealed as past and every node in it is marked grown, which locks that node's parent/…

create_node

Creates a node. Follows the plant vocabulary protocol — see umtri://rules/vocabulary. type ∈ trunk · limb · twig · leaf · vein. Role is derived (structure / object / action). Build leaf-first: when ad…

update_node

Partial update of a node. Patchable fields: label, type, parent, season, description, tags, metadata, sproutedAt. metadata is merged key by key: only the keys you send change, keys you leave out (comm…

delete_node

Sets removed_at on the node. By default this tool rejects deletion if the node has any active descendant, so a subtree is never lost silently. To soft-delete the node together with all its active desc…

commit_plan

Promotes a plan node (metadata.plan=true) to the real tree by clearing the plan flag. VERIFICATION GATE: the node must already carry metadata.implements (the source path(s) you wrote) — without it the…

record_commit

Configuration record (CI/CD). Given a commit SHA and the files it changed, finds nodes whose metadata.implements include any of those files and appends the commit (sha + timestamp + optional message) …

create_edge

Creates a directed edge (source → target) for a STRUCTURAL relation: type "dependency" (A is built on / needs B) or "data_flow" (data moves A → B outside a request). Use for module/library deps, a rou…

delete_edge

Removes an edge from the ground. Use to retire dependencies/flows that no longer reflect reality.

create_api

Records an API flow (start → end) for a RUNTIME request / call / data flow: a screen calling an endpoint, an endpoint hitting a table, an external integration (payment, SMS, webhook). Direction is cal…

update_api

Partial update of an API. Patchable fields: label, description, metadata, start, end.

delete_api

Sets removed_at on the API. History is preserved — the API can still be seen in past season views via the time slider.

update_bug

Partial update of a bug. Most common use: status transition. Send only the fields that actually change. A status transition is patch:{status} alone — do not re-send an unchanged solution, description,…

delete_bug

Permanently removes a bug record. Bugs do not have history — once deleted, the record is gone. For "I resolved this", use update_bug with status="resolved" instead, so the tree remembers what was erod…

send_feedback

Files a suggestion or a defect report about **Umtri the product** — this MCP server, its tools, the app, the docs. This is NOT for issues in the user's own project: those are bugs on a ground (create_…

list_feedback

Lists feedback filed about **Umtri the product** (see send_feedback) — not the bugs of any ground. Umtri operators only: every other account gets 403, so do not call this to check on feedback you file…

update_feedback

Updates one feedback record about **Umtri the product** — typically closing it: status="done" once it shipped, or "wontfix" when it was declined. Put what was actually done (or why not) in note; that …

list_wiki

Lists the ground's wiki — the prose the tree cannot hold: conventions, decisions and why they were made, glossary, onboarding. Reference entries describing how things work, not a log of what happened:…

get_wiki

Returns one wiki page. `ref` takes either the page slug (what a human says) or the internal id (wiki-<uuid>) — renaming a page changes its slug but never its id, so ids stay safe to store. Every respo…

list_wiki_revisions

Returns what this page said before, newest first — rev number, who wrote it, when, and the body length. Bodies are not included (a history of twenty full documents is expensive to skim); read one with…

write_wiki

Writes one wiki page. Creates it if the page slug is new, updates it otherwise — you do not need to check first. **The wiki is the project's encyclopedia: one page is one entry, and its body is the cu…

edit_wiki

Replaces one passage of an existing wiki page without resending the body. Pass the exact text to replace (oldString) and what it becomes (newString) — the same contract as a code editor's Edit: oldStr…

delete_wiki

Permanently removes a wiki page **and its whole revision history** — unlike an overwrite, this cannot be undone, and only the history entry (list_events) remains to say it happened. Prefer rewriting a…

Resources · 12

vocabulary

Node types (trunk/limb/twig/leaf/vein), first-class citizens, label rules, dormant policy, warning catalog. Read before creating or describing nodes. For restructuring/auditing, also read vocabulary-d…

umtri://rules/vocabulary
vocabulary-detailed

Reclassification policy, twig vs leaf decision matrix, twig promotion signals, redundant-child antipattern, Korean label heuristics. Read only when restructuring an existing tree or wrestling with a b…

umtri://rules/vocabulary-detailed
trunk-kinds

Six trunk kinds (front, server, database, library, device, tooling) recorded in metadata.kind, the limb axis for each, one common limb per trunk (metadata.common), the same domain name across trunks w…

umtri://rules/trunk-kinds
seasons

create_season exists but is gated: the first call only reports what would be sealed, and creation needs confirm:true after the user agrees. Read before opening a season, or when unsure which season a …

umtri://rules/seasons
transplant

While a ground is transplanting (project.transplanting=true), past-season edits and hard-delete are allowed for reconstructing an imported project; seasons stay human-only. Read when project.transplan…

umtri://rules/transplant
plan

Nodes marked plan:true are the human's structural brief (intent expressed as nodes, not a prompt). Read them as instructions, realize the code, attach metadata.implements (required), keep new detail a…

umtri://rules/plan
commit-sync

Umtri never reads git — nodes drift unless something records the change. Recommends writing a short commit-sync policy into the repo's own agent rules file (CLAUDE.md/AGENTS.md), with a snippet to ada…

umtri://rules/commit-sync
wiki

The wiki is the project's encyclopedia, read front to back as a tree: overview → chapters → entries. Covers the tree (parent/position), noun titles, kinds and their skeleton (lead → Spec → Rules → foo…

umtri://rules/wiki
wiki-templates

Recommended wiki trees for a web service, an app service and a library — page, Korean title, kind, and what each holds. Read when starting a ground's wiki or when its table of contents has no clear sh…

umtri://templates/wiki
system-structure

Modelling principle: nodes are user-visible units, not code files. Metadata key conventions.

umtri://rules/system-structure
data

Umtri holds only what tool calls send (labels, descriptions, file paths, connections, bug and wiki text) and never reads files or git. Lists what must not be recorded (secrets, env values, personal da…

umtri://about/data
vision

Project archaeology — track growth, trace dependencies, locate origins. Tone guidance for AI tools.

umtri://about/vision

How to use

Claude Desktop or claude.ai: add a custom connector (Customize → Connectors; on Team and Enterprise plans an owner adds it under Organization settings → Connectors) with this server URL: https://mcp.umtri.io

Cursor or Cline: add to your MCP config:

{
  "mcpServers": {
    "umtri": {
      "url": "https://mcp.umtri.io",
      "transport": "http"
    }
  }
}