Skip to content

MCP Tools Reference

WarmHub exposes a full MCP tool catalog for organizations, repositories, shapes, things, assertions, writes, subscriptions, actions, collections, and meta (capability discovery). Repo-level tools take orgName and repoName as arguments.

If you switch between the MCP tools and the TypeScript SDK, the names line up almost one-to-one. A few common pairs:

MCP toolSDK method
warmhub_thing_headclient.thing.head(...)
warmhub_thing_queryclient.thing.query(...)
warmhub_thing_getclient.thing.get(...)
warmhub_shape_listclient.shape.list(...)
warmhub_subscription_listclient.subscription.list(...)
warmhub_commit_submitclient.commit.apply(...) — note the verb differs
warmhub_capabilitiesclient.diagnostics.capabilities() — returns the backend API version, minimum supported SDK, and feature flags (not the tool catalog)
warmhub_repo_describeclient.repo.describe() — returns repo metadata, shapes, stats, subscriptions, license, and a page of HEAD records; the MCP tool additionally returns the write contract and generated write examples, which the SDK method omits

Most tools follow the warmhub_<domain>_<verb>client.<domain>.<verb> pattern; the last three rows are the exceptions — the SDK verb differs (commit.apply), returns different data (diagnostics.capabilities), or omits the MCP-only write contract and generated examples (repo.describe).

Orientation and capability discovery. The meta category covers five 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, write examples generated from the repo’s own shapes, and the repo’s license. Documented under Repository Tools.
warmhub_useNo-op tool used to signal intent or context to the MCP host. Takes no arguments; returns an advisory noop note. Useful for structured agent workflows that declare what they are about to do before acting.
warmhub_channelNo-op tool used to establish or label a logical channel within a session. Takes no arguments; returns an advisory noop note.
warmhub_doctorDiagnostic tool. Takes no arguments. Returns { ok: true, capabilities, hint }, where capabilities is a diagnostics payload containing apiVersion, minSupportedSdk, and features.

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, collection, commit, subscription, action, meta), each with name, description, and the tools (name, description, readOnly, openWorld, destructive, annotationJustification) advertised on the current endpoint.
cookbookobject[]Common workflows as { task, steps: [{ tool, note }] } — e.g. discovering shapes, searching by content, writing first data.
usagePatternsobject[]Query-discipline guidance — recommended patterns for reading, querying, and writing efficiently.
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.

categories lists every registered tool — there is one endpoint and one catalog.

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

Organization tools take orgName as an argument and need no repository.

ToolDescription
warmhub_org_listList organizations (archived hidden by default). (global only)
warmhub_org_getGet an organization by name. (global only)
warmhub_org_set_display_nameSet the human-readable display name for an organization. The display name must be non-empty. (global only)
warmhub_org_set_descriptionSet or clear an organization description. (global only)
warmhub_org_archiveArchive an organization. (global only)
warmhub_org_unarchiveUnarchive an organization. (global only)
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
displayNamestringyesNew human-readable display name. Must be non-empty and non-whitespace; max 100 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, summary stats, and license for agent bootstrapping.
warmhub_repo_set_descriptionSet or clear a repository description.
warmhub_repo_set_display_nameSet the human-readable display name for a repository. Requires repo:write.
warmhub_repo_archiveArchive a repository.
warmhub_repo_unarchiveUnarchive a repository.
ParamTypeRequiredDescription
orgNamestringyesOrganization name
repoNamestringyesRepository name (slug)
displayNamestringnoHuman-readable display name for the repo. Must be non-empty and non-whitespace if provided; max 100 characters. Defaults to the repo slug when omitted.
descriptionstringnoRepository description. Max 2000 characters.
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
displayNamestringyesNew human-readable display name. Must be non-empty and non-whitespace; max 100 characters.

Returns the updated repo object.

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, named collection rules, about semantics)
  • Write examples generated from actual repo shapes
  • license — the repository’s current license metadata, or null when the repo has no active, visible, valid license declaration (see the response field description below)
  • Indexed field metadata when includeIndexedFields is set (see below)

Call this first when connecting to a repo.

Input parameters:

ParamTypeRequiredDescription
orgNamestringyes (global)Organization name
repoNamestringyes (global)Repository name
includeIndexedFieldsbooleannoWhen true, the response includes an indexedFields block with typed field index state across the repo’s shapes. Defaults to false.

Response fields (selected top-level):

Response FieldTypeDescription
licenseobject | nullThe repository’s current license metadata, or null when the repo has no active, visible, valid license declaration. Subfields are listed below.

When license is non-null, the object carries these fields:

FieldTypeDescription
spdxIdstringThe SPDX license identifier. Always present when license is non-null.
licenseWrefstring | nullWref of the license declaration thing.
spdxExpressionstring | nullThe full SPDX expression as stored.
appliesTostring | nullWref of the subject the license applies to.
attributionTextstring | nullOptional attribution text.
declaredBystring | nullWref of the declaring entity.
sourceUrlstring | nullLink to the license text.

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 }
]

When includeIndexedFields: true is passed, the response also includes an indexedFields block. The block exposes four state buckets — ready, building, failed, and other — each containing an array of field entries. Every entry carries the field’s state, associated timestamps, and backfill counters. Parse all four buckets when acting on index state: a field in building is not yet queryable, and a field in failed requires attention before structured queries against it will succeed.

Two 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 repo:write.

WarmHub no longer hosts README/AGENTS generation. To draft content, run the CLI command wh repo content prompt <org/repo> --kind readme to get an agent-ready prompt, let your own agent write the markdown, then persist it with warmhub_repo_content_set.

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
eventRequestIdUUIDyesCaller-known idempotency key for this write request. Reuse only for an identical retry.

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.

ToolDescription
warmhub_thing_headList all items at HEAD with optional filters (shape, kind, glob match). Supports incremental reads via sinceRepoSeq — see the parameter reference below. Use to enumerate a repo’s current state; for fuzzy lookups use warmhub_thing_search.
warmhub_thing_getFetch one thing 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 Arc/Bond/Set/List 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 Arc/Bond/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). Supports incremental reads via sinceRepoSeq — see the parameter reference below. 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; pair with warmhub_thing_get to fetch the resolved data.
ParamTypeRequiredDescription
shapestringnoFilter by shape name
kindstringnoFilter by kind. One of shape, thing, assertion, or collection.
matchstringnoGlob pattern to filter wrefs (* = one segment, ** = zero or more)
whereobject[]noTyped field-value predicates ({ fieldPath, op, rhs }), ANDed, max 8. See Field-Value Predicates.
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
sinceRepoSeqintegernoReturn only items that changed after this repo sequence number. Pass -1 to start from the beginning. Reuse the same lower bound across all pages of a single incremental read; only persist the repoSeq returned on the exhausted final page or on an exact count result — intermediate pages do not carry repoSeq. Requires full-repository read authority. Not available when using glob filters (match).

When an incremental read is complete (final page exhausted, or count: true result), the response carries a top-level repoSeq field. Use that value as sinceRepoSeq on the next poll to receive only subsequent changes.

ParamTypeRequiredDescription
wrefstringyesWarmHub reference
versionintegernoSpecific version number
includeRetractedbooleannoReturn the thing even if it is retracted
dataModestringno"auto" (default) or "full". In "auto" mode, collections larger than 100 members return a summary (member count plus a truncated preview) instead of the full body; fixed-arity Arc/Bond collections and collections with 100 or fewer members keep their full body. Use "full" to force the complete body for large collections too.

orgName/repoName may be omitted when wref is a durable id — a durable id routes itself to the repo that owns the target.

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.

orgName/repoName may be omitted when wref is a durable id.

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)
dataModestringno"auto" (default) or "full". In "auto" mode, collections larger than 100 members return a summary (member count plus a truncated preview) instead of the full body; fixed-arity Arc/Bond collections and collections with 100 or fewer members keep their full body. Pass dataMode:"full" to force large collection bodies.

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@vN or 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 Arc/Bond/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.

orgName/repoName may be omitted only when wref is a durable id. shape/about surveys and local wrefs always require orgName/repoName — a repo-less filter query is rejected.

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 Arc, Bond, 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
whereobject[]noTyped field-value predicates ({ fieldPath, op, rhs }), ANDed, max 8. See Field-Value Predicates.
resolveCollectionsbooleannoInclude assertions about Arc/Bond/Set/List collections containing the target entity for identity-scoped inputs; ignored for pinned @vN inputs
includeRetractedbooleannoResolve a retracted target and include retracted assertions in the returned results, including within the single children layer when depth is also set.
depthintegernoWhen set, returns one level of child assertions for each top-level result. Values greater than 1 do not produce additional nesting — only one children layer is returned regardless of the value supplied. Each child entry has an empty children array.
limitintegernoMax assertions to return
cursorstringnoPagination cursor from previous response
ParamTypeRequiredDescription
shapestringnoFilter by shape
aboutstringnoFilter by about target
kindstringnoFilter by kind. One of shape, thing, assertion, or collection.
matchstringnoGlob pattern to filter wrefs
whereobject[]noTyped field-value predicates ({ fieldPath, op, rhs }), ANDed, max 8. See Field-Value Predicates.
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
componentRefstringnoFilter results to items owned by the given component (its Org/Name ref)
excludeComponentsbooleannoExclude component-owned items from results. Accepted alongside componentRef, but the two are mutually exclusive filters, so passing both returns no items.
excludeInfraShapesbooleannoHide internal infra shapes from results
limitintegernoMax results. Must be between 1 and 500.
cursorstringnoPagination cursor from previous response
sinceRepoSeqintegernoReturn only items that changed after this repo sequence number. Pass -1 to start from the beginning. Reuse the same lower bound across all pages of a single incremental read; only persist the repoSeq returned on the exhausted final page or on an exact count result — intermediate pages do not carry repoSeq. Requires full-repository read authority. Not available when using glob filters (match), collection expansion (resolveCollections), or queries against foreign sources — those query shapes cannot guarantee incremental results.

When an incremental read is complete (final page exhausted, or count: true result), the response carries a top-level repoSeq field. Use that value as sinceRepoSeq on the next poll to receive only subsequent changes.

ParamTypeRequiredDescription
querystringyesSearch query text
shapestringnoFilter by shape name
kindstringnoFilter by kind. One of shape, thing, assertion, or collection.
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
componentRefstringnoFilter results to items owned by the given component (its Org/Name ref)
excludeComponentsbooleannoExclude component-owned items from results. Accepted alongside componentRef, but the two are mutually exclusive filters, so passing both returns no items.
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 forms wh:org/repo/Shape and 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 one exact immutable operation-event receipt.
warmhub_commit_receipt_getRecover one immutable operation-event receipt by caller-known request UUID.

Use warmhub_thing_history for per-thing version trails.

The tool’s input schema contains the full structural contract for all operation variants. Supply a caller-known submissionId; this single MCP chunk uses ordinal zero and returns one exact OperationEventReceiptV1. Opinion-bearing assertions must be binary propositions.

Ambiguous append failures are separate from per-operation failures and return a tool-result error. An ambiguous append failure may have landed server-side. The error names eventRequestId and warmhub_commit_receipt_get; call that tool before retrying, rather than submitting another write or inferring the outcome from repository state. See MCP Error Handling for the full failure taxonomy.

ParamTypeRequiredDescription
committerstringnoOptional untyped wref identifying the actor on whose behalf the writes are made. It must identify an existing thing. Omit it to use the authenticated caller’s normal attribution.
componentRefstringnoAttribute writes to an installed component, identified by its Org/Name ref. See component identity rules below.
messagestringnoOptional message recorded with each thing-version produced by this call
submissionIdUUIDyesCaller-known logical submission identity. Reuse only for an identical retry.
operationsarrayyesNon-empty atomic operation batch. After an ambiguous append failure, use the named receipt lookup before retrying.
streamIdstringnoCaller-managed stream identity for observability and diagnostic correlation; it does not provide recovery or idempotency.

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, name, members, skipExisting? }
  • REVISE shape/thing/assertion: { operation: "revise", kind, name, data, expectedVersion?, leaseId? }
  • REVISE collection: { operation: "revise", kind: "collection", type, name, members, expectedVersion?, leaseId? }
  • RETRACT: { operation: "retract", name, reason?, kind?, expectedVersion?, leaseId? } — withdraws the entity from default reads
  • RENAME: { operation: "rename", name, newName, kind? } — changes identity metadata without creating a new body version

Write path rejects @ALL. Create things with explicit names; dependent assertions and collections should reference those names directly.

Per-operation result warnings:

Successful and noop result entries can include:

{
"warnings": {
"undeclaredFields": ["status", "filePath"],
"undeclaredFieldsTruncated": true,
"totalUndeclared": 600,
"coalescedWrefs": [
{ "fieldPath": "owner", "wref": "User/nobody", "reason": "thing_absent" }
]
}
}

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. warnings.coalescedWrefs lists optional wref fields whose resolver outcome was thing_absent and was coalesced to null — each entry carries fieldPath, wref, and reason; missing shapes and every other failure remain hard errors. When capped, coalescedWrefsTruncated: true is set with totalCoalescedWrefs. The struct is additive — an operation can carry either warning kind or both. Both warnings are informational; they do not turn the operation into a failure. See Optional Wref Fields. For add operations, skipExisting: true returns noop when the target already exists instead of failing. For revise and retract operations, expectedVersion applies the write only if the target is still at that version, otherwise it rejects with CONFLICT. A revise whose data matches the current version returns noop instead of creating a new version. See Conditional Operations for the full model.

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.
warmhub_shape_templateGenerate write-operation templates for one or more shapes. Read-only; commit category. See Generating Templates.

Lists shapes in the repo. orgName and repoName are required.

ParamTypeRequiredDescription
orgNamestringyesOrganization name.
repoNamestringyesRepository name.
matchstringnoGlob pattern to filter shape names by bare name (e.g. Sensor*), not by full wref.
componentRefstringnoReturn only shapes owned by this component, identified by its Org/Name ref (e.g. warmhub/veritas). Mutually exclusive with excludeComponents.
excludeComponentsbooleannoExclude all component-owned shapes from results. Mutually exclusive with componentRef — passing both returns no shapes.

Each item in the response includes a queryHints block (queryableFields, wrefFields, suggestedPatterns) to help you choose the right warmhub_thing_query, warmhub_thing_search, or warmhub_thing_refs pattern for that shape.

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.

Generates write-operation templates for one or more shapes in the repo. Read-only tool in the commit category. For conceptual background see Generating Templates.

ParamTypeRequiredDescription
shapeNamesstringyesComma-separated shape names to generate templates for
kindstringnoFilter templates to a specific kind. One of thing or assertion.
operationstringnoFilter to a specific operation type. One of add, revise, or retract.
aboutstringnoPopulate the about field in generated assertion templates with this wref
countintegernoNumber of example templates to generate per shape

First-class tools for working with named collections in a repo.

Shape support at a glance:

Shape familyWritable (create, revise)Readable (members, contains, diff, stats)
Arc
Bond
Set
List
Pair✓ (deprecated — accepted with a deprecation warning)
Triple✓ (legacy, read-only)

Use create to make a collection and revise to change its membership; members, stats, and contains to read one; and diff to compare two collections or two versions of the same collection.

ToolDescription
warmhub_collection_createCreate a new named collection in the repo. Requires repo:write.
warmhub_collection_membersList the current members of a named collection.
warmhub_collection_containsCheck whether a named collection contains one or more given wrefs.
warmhub_collection_diffCompute the diff between two versions of a named collection.
warmhub_collection_reviseRevise the membership of an existing named collection. Requires repo:write.
warmhub_collection_statsReturn summary statistics for a named collection (type, wref, version, memberCount, and uniqueMemberCount).
ParamTypeRequiredDescription
orgNamestringyes (global)Organization name
repoNamestringyes (global)Repository name
eventRequestIdUUIDyesCaller-known idempotency key for this write request. Reuse only for an identical retry.
typestringyesCollection type: "arc", "bond", "set", "list", or "pair" (deprecated — accepted with a deprecation warning; use "arc", "bond", "set", or "list" for new collections)
namestringyesCollection name (local wref segment)
membersstring[]noInitial member wrefs
fromstringnoSource wref to copy members from
addstring[]noWrefs to add to the initial member set
removestring[]noWrefs to remove from the initial member set
replaceMembersstring[]noReplace the full member list with these wrefs
shapestringnoSelector: filter by shape
aboutstringnoSelector: filter by about target
matchstringnoSelector: glob pattern to filter wrefs
componentRefstringnoSelector: filter to items owned by the given component
whereobject[]noSelector: typed field-value predicates
messagestringnoMessage recorded with the write
committerstringnoWref identifying the actor on whose behalf the write is made
skipExistingbooleannoReturn noop instead of failing when the collection already exists

orgName and repoName may be omitted when wref is a self-routing durable ID — the durable ID routes itself to the repo that owns the collection. cursor must be paired with limit.

ParamTypeRequiredDescription
orgNamestringnoOrganization name. Required unless wref is a durable ID.
repoNamestringnoRepository name. Required unless wref is a durable ID.
wrefstringyesCollection wref
versionintegernoPin the lookup to a specific collection version
limitintegernoMax members to return. Required when cursor is provided.
cursorstringnoPagination cursor from previous response. Must be paired with an explicit limit.
ParamTypeRequiredDescription
orgNamestringyes (global)Organization name
repoNamestringyes (global)Repository name
wrefstringyesCollection wref
membersstring[]yesWrefs to check for membership
positionintegernoCheck membership at a specific position. Valid for ordered collection types (Arc, Pair, List, and legacy Triple); rejected for unordered Set and Bond collections.
versionintegernoCheck membership at a specific collection version
ParamTypeRequiredDescription
orgNamestringyes (global)Organization name
repoNamestringyes (global)Repository name
leftWrefstringyesLeft-hand collection wref
rightWrefstringyesRight-hand collection wref
leftVersionintegernoVersion to use for the left-hand collection. Defaults to HEAD.
rightVersionintegernoVersion to use for the right-hand collection. Defaults to HEAD.
modestringnoComparison mode: "auto" (default), "membership", or "ordered"
ParamTypeRequiredDescription
orgNamestringyes (global)Organization name
repoNamestringyes (global)Repository name
eventRequestIdUUIDyesCaller-known idempotency key for this write request. Reuse only for an identical retry.
wrefstringyesCollection wref
membersstring[]noReplace the full member list with these wrefs
addstring[]noWrefs to add to the collection
removestring[]noWrefs to remove from the collection
shapestringnoSelector: filter by shape
aboutstringnoSelector: filter by about target
matchstringnoSelector: glob pattern to filter wrefs
componentRefstringnoSelector: filter to items owned by the given component
whereobject[]noSelector: typed field-value predicates
messagestringnoMessage recorded with the write
committerstringnoWref identifying the actor on whose behalf the write is made

orgName and repoName may be omitted when wref is a self-routing durable ID.

ParamTypeRequiredDescription
orgNamestringnoOrganization name. Required unless wref is a durable ID.
repoNamestringnoRepository name. Required unless wref is a durable ID.
wrefstringyesCollection wref
versionintegernoPin the lookup to a specific collection version

Returns the following fields:

Response FieldTypeDescription
typestringCollection shape family. One of "set", "list", "arc", "bond", "pair" (deprecated — writable but accepted with a deprecation warning), or "triple" (legacy, read-only).
wrefstringThe returned collection wref, always in local form (e.g. Set/my-set) — it names the collection within the repo you queried and is never expanded to the cross-repo wh:org/repo/... form, even when you addressed the collection by a canonical wref.
versionintegerVersion number of the returned collection snapshot. When no version parameter is supplied this is the HEAD version; when a version parameter is supplied this reflects that pinned version.
memberCountintegerTotal number of member entries, including duplicates for ordered collection types.
uniqueMemberCountintegerNumber of distinct member wrefs in the collection.

See Subscriptions for concepts and Creating Subscriptions for setup guides with filter and credential examples. Those guides cover repo-scoped subscriptions; for org-scoped subscriptions, see the Org-Scoped Subscription Tools section below.

ToolDescription
warmhub_subscription_listList subscriptions in a repository.
warmhub_subscription_getGet subscription metadata by name.
warmhub_subscription_createCreate a webhook subscription in a repository.
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.
warmhub_org_subscription_createCreate an org-scoped metadata webhook subscription.
warmhub_org_subscription_list / get / update / pause / resume / deleteManage org-scoped subscriptions.
ParamTypeRequiredDescription
namestringyesSubscription name
ParamTypeRequiredDescription
namestringyesSubscription name
kindstringyes"webhook" or "cron". "webhook" is the supported value for new subscriptions; "cron" is accepted by the schema only so older callers receive a deterministic rejection.
eventTypestringnoEvent type to subscribe to. One of commit, repo.renamed, thing.renamed, or shape.renamed. Defaults to commit when omitted.
shapeNamestringnoShape to subscribe to. For commit subscriptions, provide either shapeName or filterJson.shape — except for shape lifecycle subscriptions, which omit both and rely on a {"kind":"shape", ...} filter. Not applicable for repo.renamed, thing.renamed, or shape.renamed subscriptions.
filterJsonobjectnoRecursive subfilter/v1 commit-operation filter with operation, kind, shape, name, match, all, any, and not. Required for commit; rejected for metadata rename events.
webhookUrlstringyesWebhook endpoint URL
fallbackWebhookUrlstringnoOptional fallback endpoint called after a terminal delivery failure
allowTraceReentrybooleannoReentry policy for write-triggered subscriptions. Defaults to false
sourceRepoRefstringnoSource repo (org/repo) for a cross-repo subscription. Must be in the same org as the home repo
notifyOnSuccessbooleannoDeprecated compatibility field; accepted but ignored. Action notifications are terminal-failure-only

For a commit subscription, omitted eventType defaults to commit, so this is a complete filter example:

{
"orgName": "acme",
"repoName": "signals",
"name": "new-signals",
"kind": "webhook",
"shapeName": "Signal",
"filterJson": {
"all": [
{ "operation": "add" },
{ "kind": "thing" }
]
},
"webhookUrl": "https://hooks.example.com/warmhub"
}

When both shapeName and filterJson.shape are present, they must identify the same shape. A structurally shape-only filter such as {"kind":"shape"} is the only commit form that needs neither binding. Metadata rename events reject shapeName, filterJson, and sourceRepoRef.

This tool creates organization-owned automation. The caller must be an organization owner or admin. It accepts no repoName, shape, filter, or source repository.

ParamTypeRequiredDescription
orgNamestringyesOrganization name
namestringyesSubscription name
eventTypestringnoorg.renamed, org.member_added, org.repo_created, or org.repo_published; defaults to org.renamed
kindstringyes"webhook"
webhookUrlstringyesWebhook endpoint URL
fallbackWebhookUrlstringnoOptional fallback endpoint
allowTraceReentrybooleannoAllow another delivery in the same action trace
notifyOnSuccessbooleannoDeprecated compatibility field; accepted but ignored. Action notifications are terminal-failure-only
ParamTypeRequiredDescription
namestringyesExisting subscription name
shapeNamestringnoReplacement commit-subscription shape. Rejected for metadata-event and cross-repo subscriptions.
filterJsonobjectnoReplacement recursive subfilter/v1 filter. Rejected for metadata-event and cross-repo subscriptions.
webhookUrlstringnoReplacement webhook URL
fallbackWebhookUrlstring or nullnoReplacement fallback webhook URL. Use null to clear it
allowTraceReentrybooleannoReplacement reentry policy for write-triggered subscriptions
notifyOnSuccessbooleannoDeprecated compatibility field; accepted but ignored. Action notifications are terminal-failure-only

Updates patch only the fields supplied; omitted fields retain their current values. name, kind, and eventType cannot be changed. For commit subscriptions, the merged shapeName and filterJson.shape constraints must still agree and retain a valid shape binding (or a structurally shape-only filter).

warmhub_subscription_pause / warmhub_subscription_resume / warmhub_subscription_delete

Section titled “warmhub_subscription_pause / warmhub_subscription_resume / warmhub_subscription_delete”
ParamTypeRequiredDescription
namestringyesSubscription name

Org-scoped subscription tools manage subscriptions at the organization level. The current org-scoped subscription type is fixed to the org.renamed event — these subscriptions fire when the organization is renamed. There is no event selector or filter to configure; the event type is hardcoded. These tools follow the same pause/resume/delete lifecycle as repo-scoped subscription tools.

ToolDescription
warmhub_org_subscription_createCreate a webhook subscription at the organization level. Fires on org.renamed events.
warmhub_org_subscription_listList org-scoped subscriptions.
warmhub_org_subscription_getGet org-scoped subscription metadata by name.
warmhub_org_subscription_pausePause an active org-scoped subscription.
warmhub_org_subscription_resumeResume a paused org-scoped subscription.
warmhub_org_subscription_deleteDelete an org-scoped subscription.
warmhub_org_subscription_updateUpdate an existing org-scoped subscription’s webhook delivery config.

Creates a webhook subscription that fires when the organization is renamed (org.renamed). The event type is fixed and cannot be changed. Only the delivery configuration fields listed below are accepted; sending any other key returns an Invalid arguments error.

ParamTypeRequiredDescription
orgNamestringyesOrganization name
namestringyesSubscription name
kindstringyes"webhook"
webhookUrlstringyesWebhook endpoint URL
fallbackWebhookUrlstringnoOptional fallback endpoint called after a terminal delivery failure
allowTraceReentrybooleannoReentry policy. Defaults to false
notifyOnSuccessbooleannoDeprecated compatibility field; accepted but ignored. Action notifications are terminal-failure-only
componentRefstringnoAttribute this subscription to an installed component, identified by its Org/Name ref (e.g. warmhub/veritas). See Component Tools for the component ref format.
ParamTypeRequiredDescription
orgNamestringyesOrganization name
ParamTypeRequiredDescription
orgNamestringyesOrganization name
namestringyesSubscription name

Patches the webhook delivery configuration of an existing org-scoped subscription. Only delivery fields can be updated — org-scoped subscriptions have a fixed org.renamed event type with no shape or filter to edit. Sending filterJson or any other unsupported key returns an Invalid arguments error.

ParamTypeRequiredDescription
orgNamestringyesOrganization name
namestringyesExisting subscription name
webhookUrlstringnoReplacement webhook URL
fallbackWebhookUrlstring or nullnoReplacement fallback webhook URL. Use null to clear it
allowTraceReentrybooleannoReplacement reentry policy
notifyOnSuccessbooleannoDeprecated compatibility field; accepted but ignored. Action notifications are terminal-failure-only

warmhub_org_subscription_pause / warmhub_org_subscription_resume / warmhub_org_subscription_delete

Section titled “warmhub_org_subscription_pause / warmhub_org_subscription_resume / warmhub_org_subscription_delete”
ParamTypeRequiredDescription
orgNamestringyesOrganization name
namestringyesSubscription name
ToolDescription
warmhub_action_livefeedGet delivery feed for a subscription. Narrowed readers receive operational metadata and visible matched operations; full-repository readers also receive free-form diagnostics.
warmhub_action_runsList action runs in a repository.
warmhub_action_attemptsGet attempt history for a specific action run. Free-form diagnostics require full-repository read.
warmhub_action_notificationsList terminal action-failure notifications for a repo. Only runs that have reached a non-recoverable failure state appear in this feed.
warmhub_notificationsAlias for warmhub_action_notifications. Lists terminal action-failure notifications for a repo.
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
deliveryIdstringRequired identifier for this delivery. Use this value when waiting on lease-based deliveries.
runIdstring?Identifier for the action run associated with this delivery. May be absent when the delivery has not yet been associated with a run.
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

Lists action runs in a repository. Accepts optional filters to narrow results by status, outcome, time range, or exact run or subscription identity.

ParamTypeRequiredDescription
runIdstringnoReturn the single run with this identifier. Can be combined with subscriptionName, status, outcome, since, and cursor.
subscriptionNamestringnoFilter runs to those triggered by this subscription.
statusstringnoFilter by status: pending, running, processing, retry_wait, suppressed, succeeded, failed_terminal, dead_letter
outcomestringnoFilter by terminal outcome. Accepted values: succeeded or failed. failed matches runs in a terminal failure state (failed_terminal or dead_letter); it does not match every non-success state. Cannot be combined with status.
sincestringnoISO datetime or unix timestamp. Cannot be combined with cursor.
limitintegernoMax results. Must be between 1 and 200.
cursorstringnoPagination cursor from previous response. Cannot be combined with since. When present, the response includes nextCursor when more results are available.

The combinations status+outcome and since+cursor are not accepted and will be rejected.

ParamTypeRequiredDescription
runIdstringyesAction run identifier (UUIDv7) for the target run.
ParamTypeRequiredDescription
sincestringnoISO datetime or unix timestamp
limitintegernoMax results (1–200)

Returns terminal action-failure notifications for the repo. Only runs that have reached a non-recoverable failure state produce records in this feed — succeeded and suppressed runs do not appear. See Actions for the full HTTP contract, including the GET /api/repos/:orgName/:repoName/actions/notifications endpoint.

ParamTypeRequiredDescription
orgNamestringyes (global)Organization name
repoNamestringyes (global)Repository name
sincestringnoISO datetime or unix timestamp
limitintegernoMax results (1–200)

Aliases warmhub_action_notifications over the same backend. Returns terminal action-failure notifications for the repo — only runs that have reached a non-recoverable failure state produce records in this feed. See Actions for the full HTTP contract, including the GET /api/repos/:orgName/:repoName/actions/notifications endpoint.

ToolDescription
warmhub_component_installInstall a registered component (<org>/<name>) into the repo: applies its manifest (shapes, credential sets, subscriptions, seeds) and runs the optional setup handshake. Returns the install state plus any setup-deferred resources. Requires repo:write. Components whose manifests declare credentials or subscriptions require additional permissions — see the note below.
warmhub_component_uninstallUninstall a registered component (the wh component teardown operation): pauses its subscriptions, revokes its tokens, dispatches the optional uninstall callback, and marks the install record uninstalled. Frees the shape names the component claimed so a reinstall can reclaim them, while leaving the existing shapes and any seeded data in place. Non-destructive — reinstall revives the install. Requires repo:write.

warmhub_component_install / warmhub_component_uninstall

Section titled “warmhub_component_install / warmhub_component_uninstall”
ParamTypeRequiredDescription
orgNamestringyes (global)Organization name
repoNamestringyes (global)Repository name
componentRefstringyesThe registered component to install or uninstall, as <org>/<name> (e.g. warmhub/veritas).
submissionIdUUIDyesCaller-known idempotency key for this install or uninstall request. Reuse only for an identical retry.