Skip to content

MCP Tools Reference

WarmHub exposes a full MCP tool catalog for organizations, repositories, shapes, things, assertions, commits, subscriptions, actions, and meta (capability discovery). In repo-scoped mode, orgName/repoName are omitted from all tool schemas. In global mode, they’re required on repo-level tools.

Orientation and capability discovery. The meta category covers two tools:

ToolDescription
warmhub_capabilitiesStatic, endpoint-scoped overview of the MCP tool catalog: tools grouped by category, a workflow cookbook, wref syntax, and a pointer to the full write operation contract. Read-only; no arguments.
warmhub_repo_describePer-repo live view: schema, shape descriptions, field types, summary stats, wref syntax, operation contract, and write examples generated from the repo’s own shapes. Documented under Repository Tools.

Call warmhub_capabilities first to orient on what tools exist; then call warmhub_repo_describe to learn the repo-specific shapes and write examples.

Takes no arguments. Returns a static orientation payload with the following fields:

Response FieldTypeDescription
categoriesobject[]One entry per tool category (org, repo, shape, thing-read, commit, subscription, action, meta), each with name, description, and the tools (name, description, readOnly) advertised on the current endpoint.
cookbookobject[]Common workflows as { task, steps: [{ tool, note }] } — e.g. discovering shapes, searching by content, writing first data.
wrefSyntaxobjectLocal and canonical wref forms, version modifiers, path/name constraints, and write-path preview rules.
commitContractRefobjectPointer to warmhub_repo_describe, which returns the full write operation contract, operation variants, and live write examples scoped to a specific repo.

The payload reflects the endpoint scope. On the repo-scoped endpoint (/mcp/:org/:repo), categories omits global-only tools: warmhub_org_list, warmhub_org_get, warmhub_repo_list, and warmhub_repo_create.

Call warmhub_capabilities first to orient an agent, then call warmhub_repo_describe for per-repo schema and write examples.

warmhub_org_list and warmhub_org_get are global-only. The per-org administration tools (warmhub_org_set_description, warmhub_org_archive, warmhub_org_unarchive) are available in both global and repo-scoped mode; repo-scoped callers operate on the org baked into the URL.

ToolDescription
warmhub_org_listList organizations (archived hidden by default). (global only)
warmhub_org_getGet an organization by name. (global only)
warmhub_org_set_descriptionSet or clear an organization description.
warmhub_org_archiveArchive an organization.
warmhub_org_unarchiveUnarchive an organization.
ParamTypeRequiredDescription
includeArchivedbooleannoInclude archived organizations in results
ParamTypeRequiredDescription
orgNamestringyesOrganization name
ParamTypeRequiredDescription
orgNamestringyesOrganization name
descriptionstringnoNew org description. Trimmed; empty strings clear the value; max 2000 characters.
ParamTypeRequiredDescription
orgNamestringyesOrganization name

Archived organizations block new repo creation and member additions.

ParamTypeRequiredDescription
orgNamestringyesOrganization name
ToolDescription
warmhub_repo_createCreate a new repository in an organization. (global only)
warmhub_repo_listList repositories in an organization (archived hidden by default). (global only)
warmhub_repo_getGet repository metadata by org/repo.
warmhub_repo_describeDescribe repository schema, shape descriptions, field types, per-shape queryHints, and summary stats for agent bootstrapping.
warmhub_repo_set_descriptionSet or clear a repository description.
warmhub_repo_archiveArchive a repository.
warmhub_repo_unarchiveUnarchive a repository.
ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name
descriptionstringnoRepository description
visibilitystringno"public" or "private". Defaults to "private".

Returns the created repo object (same shape as warmhub_repo_get). Only available on the global MCP endpoint.

ParamTypeRequiredDescription
orgNamestringyesOrganization name
includeArchivedbooleannoInclude archived repositories in results
limitintegernoMax repos to return (1–200). Must be paired with cursor when paging.
cursorstringnoPagination cursor from a prior response. Must be paired with limit.
ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name
descriptionstringnoNew repo description. Trimmed; empty strings clear the value; max 2000 characters.
ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name

Archived repositories reject new commits.

ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name

The most important tool for agent bootstrapping. Returns:

  • Repository metadata
  • Shape definitions with field types and optional shape-level description
  • Per-shape queryHints with queryableFields, wrefFields, and suggested MCP query patterns
  • Per-field descriptions inlined into each field entry. Fields without descriptions appear as bare type strings (e.g. "string"); fields with descriptions appear as { "type": "number", "description": "Horizontal position" }. Descriptions are extracted from typed field objects.
  • Summary counts (shapeCount, subscriptionCount, totalCount)
  • Counts by kind and by shape
  • Sample wrefs from the repo
  • Wref syntax reference
  • Operation contract (add/revise/retract variants, inline collection syntax, rules, about semantics)
  • Write examples generated from actual repo shapes

Call this first when connecting to a repo.

The response includes an additionalInformation array pointing at the three well-known Content shape wrefs:

"additionalInformation": [
{ "name": "Readme", "wref": "Content/Readme", "synthesized": false },
{ "name": "Agents", "wref": "Content/Agents", "synthesized": false },
{ "name": "LlmsTxt", "wref": "Content/LlmsTxt", "synthesized": true }
]

Three tools cover the built-in Content shapeReadme, Agents, and the synthesized LlmsTxt — discriminated by a kind argument.

ToolDescription
warmhub_repo_content_getFetch repo Content markdown by kind. For readme/agents, returns a synthesized empty stub when nothing has been written — never null. kind: llms-txt always returns a synthesized response with the rendered sitemap and a structured refs field. Read-only.
warmhub_repo_content_setSet Content/Readme or Content/Agents markdown (commits an add or revise operation). Writes to kind: llms-txt are rejected — it is synthesized and cannot be stored. Requires things:write.
warmhub_repo_content_generateAI-generate a draft for kind: readme or kind: agents from the repo’s current shapes, things, and assertions. Returns { content: string }. Does not commit. Requires things:write.
ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name
kindstringyesOne of readme, agents, or llms-txt

For kind: readme and kind: agents, returns the stored content thing after the first write. When nothing has been written yet, the response is a synthesized empty stub ({ synthesized: true, shape: "Content", name: "...", data: { content: "" }, active: true }).

For kind: llms-txt, always returns a synthesized response. data.content contains the full rendered markdown, and the response includes a refs field with partitioned outbound/inbound references; cross-org refs the caller cannot read are omitted. (MCP requests are always authenticated; for the anonymous reduced-body variant of llms.txt, see Content Shape.)

ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name
kindstringyesOne of readme, agents, or llms-txt. llms-txt is read-only — set attempts are rejected.
contentstringyesMarkdown content to store

Returns the standard single-operation commit result: operationCount, one operations[] entry (name, operation, version, dataHash), plus optional committer, createdByEmail, and message metadata. Unlike warmhub_commit_submit, this helper does not return partial-result fields; rejected writes surface as tool errors.

ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name
kindstringyesOne of readme, agents, or llms-txt. llms-txt is read-only — generate attempts are rejected.

Returns { content: string }. The draft is not automatically saved — follow up with a warmhub_repo_content_set call to persist it.

ToolDescription
warmhub_thing_headList all items at HEAD with optional filters (shape, kind, glob match). Use to enumerate a repo’s current state; for fuzzy lookups use warmhub_thing_search.
warmhub_thing_getFetch one thing/assertion/collection by wref. For many wrefs in one call use warmhub_thing_get_many; to resolve a wref’s canonical identity first use warmhub_wref_resolve.
warmhub_thing_graphGet one thing and its embedded assertion/about/wref graph to a bounded depth.
warmhub_thing_get_manyBatch-fetch things by wref in one call — prefer over looping warmhub_thing_get. Missing wrefs are returned in a missing array.
warmhub_thing_historyList version history for a thing. Provide wref for one thing’s history, or shape/about to survey history across matching things. With about, resolveCollections:true includes assertions about collections containing the target identity.
warmhub_thing_aboutList assertions whose about target resolves to the supplied target identity. For identity-scoped inputs, use resolveCollections:true to include assertions about Pair/Triple/Set/List collections containing the target; pinned @vN inputs stay version-exact. Use warmhub_thing_refs with direction:"inbound" for broader backlink discovery.
warmhub_thing_queryQuery things by structured filters (shape, kind, about, glob match). Best for exact/structured lookups; for fuzzy or semantic search use warmhub_thing_search.
warmhub_thing_searchFull-text/vector/hybrid search across thing data. Best for fuzzy lookups; for exact field matches use warmhub_thing_query with a glob filter.
warmhub_thing_refsList inbound or outbound refs for a target wref. Use direction:"inbound" to find what references X. Pair with warmhub_thing_get to resolve details.
warmhub_wref_resolveResolve a wref (local or canonical) to its canonical thing identity. Accepts cross-repo canonical wrefs (wh:org/repo/Shape/name); pair with warmhub_thing_get to fetch the resolved data.
ParamTypeRequiredDescription
shapestringnoFilter by shape name
kindstringnoFilter by kind
matchstringnoGlob pattern to filter wrefs (* = one segment, ** = zero or more)
excludeInfraShapesbooleannoHide internal infra shapes from results
countbooleannoReturn count of matching items instead of the full result list
limitintegernoMax items (minimum 1)
cursorstringnoPagination cursor from previous response
ParamTypeRequiredDescription
wrefstringyesWarmHub reference
versionintegernoSpecific version number
includeRetractedbooleannoReturn the thing even if it is retracted
ParamTypeRequiredDescription
wrefstringyesWarmHub reference
versionintegernoSpecific version number
depthintegernoEmbedded traversal depth, 1 through 5
limitintegernoMax embedded nodes, 1 through 500

Returns the root thing with readable assertion about links and readable wref-typed fields embedded as objects. Refs the caller cannot read remain string wrefs, with no internal IDs or denial reasons exposed.

ParamTypeRequiredDescription
wrefsstring[]yesArray of wrefs, 1 through 500 entries per call
versionintegernoPin all lookups to this version
includeRetractedbooleannoReturn things even when retracted at HEAD or at the requested version (mirrors warmhub_thing_get)

Missing wrefs are returned in a missing array. When a top-level version is supplied and the input wref is not already pinned, missing entries are version-qualified (Shape/name@vN) so the round-trip is unambiguous; per-wref pins survive intact (no double-pinning). Duplicates in wrefs are not deduped — they count toward the 500-entry cap and produce duplicate items/missing entries.

ParamTypeRequiredDescription
wrefstringnoThing wref
shapestringnoFilter by shape
aboutstringnoFilter by about target
includeRetractedbooleannoAllow resolving retracted shape or about targets (does not filter results)
resolveCollectionsbooleannoWith about, include assertion history for Pair/Triple/Set/List collections containing the target identity, including when the about wref is pinned
limitintegernoMax versions to return
cursorstringnoPagination cursor from previous response

At least one of wref, shape, or about is required.

By default, this tool returns assertions whose about target resolves to the supplied target identity. It does not expand collection member refs, so assertions about Pair, Triple, Set, or List collection things that contain the target appear only when resolveCollections:true is set on identity-scoped inputs: bare wrefs, @HEAD, or @ALL. Pinned @vN inputs stay version-exact and do not expand collection members.

For broader graph discovery, use warmhub_thing_refs with direction:"inbound" to find current things that reference the target through wref fields. Use warmhub_thing_about when you specifically need assertion records and about-target filtering.

ParamTypeRequiredDescription
wrefstringyesTarget thing wref
shapestringnoFilter assertions by shape
matchstringnoGlob pattern to filter assertion wrefs
resolveCollectionsbooleannoInclude assertions about Pair/Triple/Set/List collections containing the target thing for identity-scoped inputs; ignored for pinned @vN inputs
includeRetractedbooleannoResolve a retracted target and include retracted assertions
depthintegernoRecursive assertion depth
limitintegernoMax assertions to return
cursorstringnoPagination cursor from previous response
ParamTypeRequiredDescription
shapestringnoFilter by shape
aboutstringnoFilter by about target
kindstringnoFilter by kind
matchstringnoGlob pattern to filter wrefs
countbooleannoReturn count of matching items instead of the full result list
resolveCollectionsbooleannoWhen about is set, also include assertions about collections containing the target
includeRetractedbooleannoInclude retracted entities
componentIdstringnoFilter results to items owned by the given component
excludeComponentsbooleannoExclude component-owned items from results. Cannot be combined with componentId.
excludeInfraShapesbooleannoHide internal infra shapes from results
limitintegernoMax results. Must be between 1 and 500.
cursorstringnoPagination cursor from previous response
ParamTypeRequiredDescription
querystringyesSearch query text
shapestringnoFilter by shape name
kindstringnoFilter by kind
aboutstringnoFilter by about target (not supported with vector mode)
matchstringnoGlob pattern to filter wrefs
resolveCollectionsbooleannoWhen about is set, also include assertions about collections containing the target (text mode only)
modestringno"text" (default), "vector", or "hybrid"
includeRetractedbooleannoInclude retracted entities
componentIdstringnoFilter results to items owned by the given component
excludeComponentsbooleannoExclude component-owned items from results. Cannot be combined with componentId.
excludeInfraShapesbooleannoHide internal infra shapes from results
limitintegernoMax results. Must be between 1 and 500.
cursorstringnoPagination cursor from previous response (text mode only — vector and hybrid reject cursor). When about or resolveCollections is set, pages may be sparse — paginate until nextCursor is absent.
ParamTypeRequiredDescription
wrefstringyesWarmHub reference
directionstringno"inbound" (default) or "outbound"
fieldPathstringnoFilter by field path (inbound only)
limitintegernoMax results. Must be between 1 and 500.
cursorstringnoPagination cursor from previous response

Direction "inbound" returns things that reference the target wref. Direction "outbound" returns things the target wref references.

Use inbound refs as a broad discovery tool when you are unsure whether data points directly at a thing or at a collection containing it. Inbound refs are not a substitute for warmhub_thing_about when you need assertion-only results or assertion filters.

ParamTypeRequiredDescription
wrefstringyesWarmHub reference to resolve

Cross-repo wref lookups (canonical form wh:org/repo/Shape/name) require effective repo:read permission on the target repo. Public repos are readable by anyone. For private repos, callers without that access see an error — except warmhub_thing_search with a cross-repo about (returns { items: [] }) and warmhub_thing_get_many (puts unreadable wrefs into missing[]) — both to keep batch and search streaming-friendly.

See Getting Access for the precise rules.

ToolDescription
warmhub_commit_submitSubmit a list of operations against a repo. Returns per-operation results; see the heading section below for the failure taxonomy and write examples.

Use warmhub_thing_history for per-thing version trails.

The tool returns per-operation results. Per-op failures show up as operations[] entries with status: "error" and partial: true. For the full operation contract and shape-specific write examples, call warmhub_repo_describe and inspect the commitContract field. Opinion-bearing assertions must be binary propositions.

See MCP Error Handling for the full failure taxonomy. Ambiguous append failures (a separate class from per-op failures) return a tool-result error with continuation recovery state; the failed append may have landed server-side, so inspect repository state before deciding whether to resume.

ParamTypeRequiredDescription
committerstringnoOptional wref identifying the actor on whose behalf the writes are made (e.g. Agent/bot-1). Omit to attribute to the authenticated user via createdByEmail.
componentIdstringnoAttribute writes to an installed component. See component identity rules below.
messagestringnoOptional message recorded with each thing-version produced by this call
operationsarrayyesOperations array (non-empty). When resuming after an ambiguous append failure, pass only the operations that haven’t been acknowledged (the prior attempt’s slice from operationOffset onward).
streamIdstringnoWhen resuming after an ambiguous append failure, copy the streamId from the prior error’s continuation payload.
allocatedTokensarraynoWhen resuming, copy allocatedTokens from the prior error’s continuation payload. Must accompany the matching streamId.
operationOffsetintegernoWhen resuming, copy operationOffset from the prior error’s continuation payload.

Component identity rules:

  • User tokens may claim components installed by that user.
  • Callers with org:configure for the org may claim any installed component in the org.
  • Action tokens derive the component from the running subscription and reject mismatched explicit values.

Operation variants:

  • ADD shape: { operation: "add", kind: "shape", name, data, skipExisting? }
  • ADD thing: { operation: "add", kind: "thing", name, data, skipExisting? }
  • ADD assertion: { operation: "add", kind: "assertion", name, about, data, skipExisting? }
  • ADD collection: { operation: "add", kind: "collection", type, members, name?, skipExisting? }
  • REVISE shape/thing/assertion: { operation: "revise", kind, name, data }
  • RETRACT: { operation: "retract", name, reason? } — withdraws the entity from default reads; kind is an optional hint

Token rules: $N allocates in the last segment of add-operation names. #N references prior allocations in the same stream. Write path rejects @ALL.

Per-operation result warnings:

Successful and noop result entries can include:

{
"warnings": {
"undeclaredFields": ["status", "filePath"],
"undeclaredFieldsTruncated": true,
"totalUndeclared": 600
}
}

warnings.undeclaredFields lists top-level keys present in the submitted data but not declared in the target shape. When the list is capped, undeclaredFieldsTruncated: true is set and totalUndeclared reports the full count. This warning is informational; it does not turn the operation into a failure. For add operations, skipExisting: true returns noop when the target already exists instead of failing.

Unauthorized component claims reject with FORBIDDEN.

ToolDescription
warmhub_shape_listList shapes in a repository. Each item includes per-shape queryHints.
warmhub_shape_getGet a shape by name. Response includes queryHints.
ParamTypeRequiredDescription
shapeNamestringyesShape name

Both warmhub_shape_get and warmhub_shape_list include a queryHints block (queryableFields, wrefFields, suggestedPatterns) to help agents choose warmhub_thing_query, warmhub_thing_search, and warmhub_thing_refs patterns for each shape.

See Subscriptions for concepts and Creating Subscriptions for setup guides with filter and credential examples.

ToolDescription
warmhub_subscription_listList subscriptions in a repository.
warmhub_subscription_getGet subscription metadata by name.
warmhub_subscription_createCreate a webhook or cron subscription.
warmhub_subscription_updateUpdate an existing subscription’s trigger or webhook config.
warmhub_subscription_pausePause an active subscription.
warmhub_subscription_resumeResume a paused subscription.
warmhub_subscription_deleteDelete a subscription.
ParamTypeRequiredDescription
namestringyesSubscription name
ParamTypeRequiredDescription
namestringyesSubscription name
kindstringyes"webhook" or "cron"
shapeNamestringnoShape to subscribe to. For webhook subscriptions, provide either shapeName or filterJson.shape — except for shape lifecycle subscriptions, which omit both and rely on a {"kind":"shape", ...} filter.
filterJsonobjectnoFilter object for matching write operations (required for webhook, not needed for cron)
webhookUrlstringnoWebhook endpoint URL (required for both kinds)
fallbackWebhookUrlstringnoOptional fallback endpoint called after a terminal delivery failure
cronConfigobjectnoCron configuration with cronspec and optional timezone (required when kind is "cron")
ParamTypeRequiredDescription
namestringyesExisting subscription name
shapeNamestringnoReplacement shape for webhook subscriptions
filterJsonobjectnoReplacement filter object
webhookUrlstringnoReplacement webhook URL
fallbackWebhookUrlstring or nullnoReplacement fallback webhook URL. Use null to clear it
cronConfigobjectnoCron config patch; provided keys merge into the existing config
allowTraceReentrybooleannoReplacement reentry policy for write-triggered subscriptions

warmhub_subscription_pause / warmhub_subscription_resume / warmhub_subscription_delete

Section titled “warmhub_subscription_pause / warmhub_subscription_resume / warmhub_subscription_delete”
ParamTypeRequiredDescription
namestringyesSubscription name
ToolDescription
warmhub_action_livefeedGet delivery feed for a subscription. Includes run status, attempt count, and error details.
warmhub_action_runsList action runs in a repository.
warmhub_action_attemptsGet attempt history for a specific action run.
warmhub_action_notificationsList repo-scoped action notification records, including terminal failures and optional success notifications.
ParamTypeRequiredDescription
subscriptionNamestringyesSubscription name
limitintegernoMax items, 1–500. Required when cursor is provided
cursorstringnoPagination cursor from previous response. Must be paired with an explicit limit — supplying cursor alone is rejected with "cursor" requires "limit"

Each item in the response includes delivery fields plus optional run diagnostics:

Response FieldTypeDescription
runStatusstring?Run outcome: succeeded, failed_terminal, dead_letter, etc.
attemptCountnumber?Current attempt number
maxAttemptsnumber?Maximum attempts allowed
lastErrorCodestring?Error classification code (for example HTTP_502 or WEBHOOK_TARGET_REJECTED)
lastErrorMessagestring?Human-readable error description
ParamTypeRequiredDescription
statusstringnoFilter by status: pending, running, processing, retry_wait, succeeded, failed_terminal, dead_letter
sincestringnoISO datetime or unix timestamp
limitintegernoMax results. Must be between 1 and 200.
ParamTypeRequiredDescription
runIdstringyesAction run identifier (UUIDv7) for the target run.
ParamTypeRequiredDescription
sincestringnoISO datetime or unix timestamp
limitintegernoMax results

Returns repo-scoped action notification records for action deliveries, including terminal failures and optional success notifications. This is distinct from the web app’s cross-repo user notification feed.