quipu
OfficialQuipu is a governed, bitemporal knowledge store for AI agents and the people who run them. Use it from the command line, REST, MCP or a Rust application.
Why you would want it
Governed: check incoming knowledge against your vocabulary and shapes.
Bitemporal: keep a queryable history of facts and decisions.
Reusable agent knowledge: store memory agents can read, reuse and share across tools.
Time-aware entities: attach event-triggering time attributes for Chaski to react to.
Use Quipu as the central graph and base for many tools: see the stack. The full case is in Why Quipu.
Related MCP server: gbrain
Install
curl -fsSL https://raw.githubusercontent.com/intigraph/quipu/main/install.sh | shLinux and macOS, x86_64 and arm64; requires Python 3.9+ and curl.
The installer verifies the published archive checksum and executable version.
Then run quipu --version. Install, upgrade or remove Quipu.
For the whole stack, use Tambo's guided onboarding.
First success: insert a fact, watch the graph change
Write one fact in plain Turtle, knot it into a local store, and ask for it back:
printf '@prefix : <urn:demo:> .\n:Ada :studies :Engine .\n' > ada.ttl
quipu knot ada.ttl --db demo.db
quipu read 'SELECT ?who ?what WHERE { ?who <urn:demo:studies> ?what }' --db demo.dbAdd a second fact and the graph grows. The first version is still there to query:
printf '@prefix : <urn:demo:> .\n:Babbage :designed :Engine .\n' > babbage.ttl
quipu knot babbage.ttl --db demo.db
quipu read 'SELECT ?s ?p ?o WHERE { ?s ?p ?o }' --db demo.db
quipu read 'SELECT ?s ?p ?o WHERE { ?s ?p ?o }' --tx 1 --db demo.dbTranscript, tool version and reproducible capture.
On your own code
Keep project facts, decisions and relationships together instead of pasting the same context into each agent.
You want to | Start here |
Load facts and apply your vocabulary | |
Ask about current or historical knowledge | |
Share a governed knowledge bundle | |
Prepare domain knowledge and shapes |
The latest release includes a repository pendant,
checksum and provenance. Verify them together, then use quipu import SHARE_DIR --db repository.db;
import stages knowledge and leaves ROOT unchanged. Follow the verified import workflow.
Wire it into your agent
For Claude Code, connect the local MCP server to your database:
claude mcp add quipu -- quipu mcp --db /path/to/knowledge.dbThe MCP Registry identifier is mcp-name: io.github.intigraph/quipu.
Other clients, HTTP MCP and credential configuration: Agent Setup.
Use Tambo to configure and verify the tools together.
Before you start
The CLI runs locally;
quipu-serversupplies the network API and explorer.Fresh stores support keyword search without downloading a model.
quipu search "your terms"uses keyword search until an embedding provider is configured; explicit--mode semanticstill requires a model and vectors. Install the pinned default model withquipu model installin a full build. Check readiness withquipu doctor search.Configuration covers storage and server settings.
What's next
The Quipu book: tutorials, concepts and references.
Quick Start: governed local examples.
Domain shapes: producer-owned vocabulary.
๐งบ The stack
Tambo installs these together and proves each one works; every tool also stands alone. Use each tool's README for its own installation and first success.
The Quipu stack is built around a governed, bitemporal knowledge store: shared facts, decisions and work history your agents can query. Quipu can check writes against your rules, records where each fact came from, and answers what was true when.
tool | what it gives your agents |
๐งฐ Agent Platform Toolkit - installs and configures the quipu stack | |
stores shared facts with provenance and history; can check writes against your rules | |
prepares knowledge and vocabulary for Quipu, with checks before it is admitted | |
shared vocabulary and shapes for interoperable knowledge | |
reacts to graph changes and delivers governed notifications | |
indexes your codebase and injects context from that index and Quipu knowledge | |
shows code impact and can read policies from Quipu to govern agent actions | |
turns agent mistakes into feature requests; works on its own without Quipu | |
a work item tracker backed by the Quipu knowledge base | |
runs crews of AI agents on work items, triggered by hand, on a schedule or by events; can share work and memory through Quipu | |
live brief: status, graphs, watches and signed decisions over Quipu | |
runs signed agent workflows and keeps their records in Quipu |
Contributing
See CONTRIBUTING.md. The repository's checks are:
just check
just docs check๐ License
Available Tools
84 toolsquipu_accept_proposalADestructive
Accept a pending schema proposal. For shape proposals, validates the Turtle before writing to the shapes table. A proposal carrying a migration runs it in the same transaction; a refused migration leaves the proposal pending and nothing written. With dry_run=true nothing is accepted: the report lists existing facts the new shapes would refuse, what the migration would change, and whether acceptance would go through. Before accepting, a blast-radius plan is computed and returned as 'plan'; a plan whose risk score exceeds risk_threshold, or that cannot be determined, is refused unless accept_risk=true with a risk_reason (recorded in the decision note).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Proposal ID to accept | |
| note | No | Optional acceptance note | |
| limit | No | Dry run: maximum sample facts and violations per list (default 50, max 1000) | |
| dry_run | No | Report what acceptance would do without accepting (default false) | |
| timestamp | No | ISO-8601 timestamp | |
| decided_by | Yes | Identity of the approver (required; there is no default) | |
| accept_risk | No | Accept a failing or undetermined plan anyway; requires risk_reason | |
| risk_reason | No | Why the risk is accepted; recorded in the decision note | |
| risk_threshold | No | Refuse when the plan's risk score is above this (0-100; default 40 or QUIPU_PROPOSAL_RISK_THRESHOLD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the destructiveHint/openWorldHint annotations: Turtle validation precedes the shapes-table write, the migration runs in the same transaction, and a refused migration leaves the proposal pending with nothing written. The risk-gate mechanics (plan computed, risk score compared to threshold, refusal when undetermined, override recorded in the decision note) are disclosed explicitly and are consistent with the destructive annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action, then layered by mode (dry run, migration, risk gate). Dense and mostly waste-free, though the final sentence is long and packs three separate conditions into one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter destructive mutation with no output schema, the description carries the full burden and does: it describes the dry-run report contents, the returned plan, the failure modes, and the transactional guarantees. An agent could invoke this correctly, including safely via dry_run, from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the coupling between accept_risk and risk_reason (the reason lands in the decision note), the risk_threshold gate including the environment-variable default, and that the computed plan is returned under the key 'plan'. It does not elaborate on limit or timestamp beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ('Accept a pending schema proposal') that cleanly separates it from propose_schema_change, list_proposals, and reject_proposal. The scope is narrowed further by name: only pending proposals are eligible.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives rich conditional guidance: use dry_run=true to preview rather than accept, and accept_risk=true plus risk_reason is required when the plan is over threshold or undetermined. It stops short of naming sibling tools (e.g. quipu_reject_proposal) as the alternative path, so it is strong context rather than explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_acquireCRead-only
Acquire complete bounded registered named graphs from an expected MAIN store lineage. Unknown graphs, unsupported attachments/pins and overflow refuse.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | ||
| graphs | Yes | ||
| max_bytes | No | ||
| source_store_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior beyond that: acquisition is bounded (overflow refuses) and fails closed on unknown graphs and unsupported attachments/pins. It does not say whether data is copied into a local store, what the bound is applied against, or what 'refuse' returns to the caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resource and the source scope front-loaded, and nothing redundant. The cost is over-compression: the refusal clause is packed into a noun list that reads as terse jargon rather than clear prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, zero-schema-coverage, no-output-schema tool operating in an unfamiliar domain, the definition leaves too much unanswered โ what 'acquire' actually does to state, what tx bounds, and what the caller receives on success or refusal. Annotations cover only the read-only safety question, so the description still carries most of the explanatory burden and does not meet it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, and the description does not compensate: source_store_id, graphs, tx and max_bytes are never explained. 'Bounded' loosely gestures at max_bytes and 'registered named graphs' at graphs, but tx is left entirely undefined and no parameter format, default or constraint is stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource pair ('Acquire ... named graphs') is present, and 'from an expected MAIN store lineage' hints that graphs are pulled from a source store identified by source_store_id. However, 'complete bounded registered', 'MAIN store lineage' and 'attachments/pins' are unexplained domain jargon, and the description never distinguishes this tool from the obvious sibling quipu_acquire_composed or from quipu_import/quipu_share, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence lists refusal conditions (unknown graphs, unsupported attachments/pins, overflow) rather than when to use the tool. There is no statement of preconditions, no mention of when to pick this over quipu_acquire_composed or the import/share family, and no guidance on choosing between tx and max_bytes scoping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_acquire_composedCRead-only
Acquire qualified MAIN graphs with a fenced attachment census. expected_generation is required with an explicit main tx; provider clocks are never a global transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | ||
| graphs | Yes | ||
| max_bytes | No | ||
| source_store_id | Yes | ||
| expected_generation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds cryptic transaction/generation constraints, but it also says expected_generation is required with an explicit main tx while the schema does not list either as required, making the behavioral guidance unreliable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the action, but the jargon makes it hard to parse. It is concise without being clear, so structure is only adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool with no output schema and no parameter descriptions, the definition is far too thin. It omits what graphs, source_store_id, and max_bytes mean, what the return value is, and how this differs from quipu_acquire.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all five parameters. It only gestures at expected_generation and tx, and does so inconsistently with the schema's required list, while source_store_id, graphs, and max_bytes are left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb and resource ('Acquire ... graphs'), but 'qualified MAIN graphs' and 'fenced attachment census' are undefined jargon. It does not distinguish this tool from the sibling quipu_acquire, leaving the agent unsure what is actually being acquired.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus quipu_acquire or other graph-related siblings. The sentence about expected_generation and main tx is a constraint, not a usage rule or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_align_applyADestructive
WRITE. Materialise decided alignments as owl:sameAs / quipu:distinctFrom in a derived alignment graph. expected_version is REQUIRED and must be carried from the decision: computing it here would hash the set being written, always match, and silently discard a concurrent operator's decision.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Who is applying. | |
| graph_a | Yes | First source graph IRI (the pair given to align_propose). | |
| graph_b | Yes | Second source graph IRI. | |
| set_tsv | Yes | Decided SSSOM TSV from align_decide. | |
| expected_version | Yes | REQUIRED. From align_propose or align_decide. Never recomputed locally. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the write/destructive/open-world profile, so the description's added value is the concurrency semantics: recomputing expected_version would always match the set being written and 'silently discard a concurrent operator's decision'. That is genuine behavioral context beyond the annotations. It stops short of saying what a version mismatch returns or whether prior sameAs statements are overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the 'WRITE.' mode tag, then the effect, then the one non-obvious constraint. No filler; every clause carries information the agent needs before invoking.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive write with no output schema, the description covers the mode, the effect, the graph written to, and the critical version precondition. It omits the failure mode on version mismatch and the shape of the result, which leaves a small gap for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters, including expected_version's provenance and the set_tsv source. The description reinforces why expected_version must not be locally recomputed, which is useful meaning, but it adds nothing for actor, graph_a, or graph_b beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and effect ('Materialise decided alignments as owl:sameAs / quipu:distinctFrom') plus the target ('derived alignment graph'). The 'decided' qualifier and the set_tsv/expected_version inputs make clear this is the terminal write step of the align_propose -> align_decide -> apply pipeline, distinguishing it from the propose/decide siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly implies when to use it: only after a decision, carrying the decided TSV and the version from that decision. It states the precondition strongly ('REQUIRED and must be carried from the decision') but doesn't explicitly name align_decide/align_propose as the alternatives or say what to do if the version is stale.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_align_decideARead-only
READ. Apply operator accept/negate decisions to a proposed mapping set. Touches no store. Returns the decided set and the expected_version to carry into align_apply.
| Name | Required | Description | Default |
|---|---|---|---|
| set_tsv | Yes | SSSOM TSV from align_propose. | |
| reviewer | Yes | Who is deciding. | |
| decisions | Yes | Per-pair verdicts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds genuinely new context that it "touches no store" and produces an expected_version token for the follow-up apply. It does not cover failure behavior (e.g. version mismatch, unknown pair IDs), which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the READ marker and the core action, then the side-effect statement and the return contract. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming what comes back (decided set plus expected_version) and confirming no state is written. It omits what happens on invalid decisions or stale set_tsv, a minor gap for a 3-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so set_tsv, reviewer and decisions are already documented in the schema. The description adds only the framing that decisions are accept/negate verdicts on pairs, which is close to restating the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: apply accept/negate decisions to a proposed mapping set, and names the downrange sibling align_apply. It is clear what the tool does, though it does not explicitly distinguish itself from the analogous quipu_merge_decisions path.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Apply operator ... decisions to a proposed mapping set" plus "expected_version to carry into align_apply" situates the tool clearly between align_propose (the source of set_tsv) and align_apply. It gives no explicit exclusion of alternatives or stated prerequisites, so 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_align_proposeARead-only
READ. Propose candidate cross-graph alignments between two named graphs, scored, as an SSSOM mapping set. Returns expected_version, which align_apply requires. Refuses an unknown graph IRI rather than returning 0 candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| graph_a | Yes | First named-graph IRI. Must exist; an unknown IRI is refused, not treated as empty. | |
| graph_b | Yes | Second named-graph IRI. | |
| mapping_set_id | No | Identifier for the produced mapping set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: it refuses unknown graph IRIs rather than returning zero candidates and explicitly exposes expected_version for downstream use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it begins with the READ safety marker, states the core action, names the output format, and then adds only essential downstream and error behavior. Every sentence carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description needs to convey return shape; it does so at a high level by naming an SSSOM mapping set and expected_version. It does not describe the scoring fields or full mapping-set structure, leaving a minor gap, but it is sufficient for correct invocation in this workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains the two graph IRIs, including the unknown-IRI refusal behavior. The description adds little parameter-specific meaning beyond restating that two named graphs are involved and omitting mapping_set_id entirely, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: propose candidate cross-graph alignments between two named graphs. It also specifies the scored SSSOM mapping-set output, which clearly distinguishes it from sibling apply/decide tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by noting that the returned expected_version is required by align_apply, which routes the agent into the alignment workflow. It does not explicitly mention when to call align_decide or other sibling alternatives, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_askARead-only
Run a curated, parameterized named query by name instead of hand-writing SPARQL. Call with no 'name' (or name='list') to discover the self-describing catalog of available queries and their parameters (e.g. service_deps, references_to, entity_facts, entities_of_type, labeled_like).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Named query to run; omit (or 'list') to list the catalog. | |
| graph | No | Named graph override for the stored query. | |
| params | No | Parameter map for the named query (see catalog for names/types). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, open-world behavior, so the safety profile is covered. The description adds the discovery-mode behavior and the fact queries are curated and self-describing, but says nothing about what happens for an unknown name, error behavior, or result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, with the discovery mode placed second. The parenthetical example list is useful but slightly bulky; nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a dispatcher over a catalog, the description explains both modes and directs the agent to the catalog for parameter details, which is the key missing piece an agent would otherwise lack. Without an output schema, the absence of any return-value description is a minor residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both the name/graph/params fields and the discovery convention are already documented in the schema. The description adds value mainly by pointing to the self-describing catalog as the source of parameter names and types, plus a few example query names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('run a curated, parameterized named query by name') and contrasts it with the alternative of hand-writing SPARQL. It does not name the likely sibling (quipu_query) explicitly, so the differentiation is implied rather than direct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational guidance: call with no name or name='list' to discover the catalog, otherwise supply a name. It does not state when to prefer this over quipu_query or quipu_queries, so there is a small gap in routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_changesCRead-only
Read whole transaction change pages. graph scopes an exact graph; use next_tx for the next page. No cursor write.
| Name | Required | Description | Default |
|---|---|---|---|
| graph | No | ||
| limit | No | ||
| since | No | ||
| capture | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description's 'No cursor write' adds a small amount of state-context (paging does not mutate a stored cursor), but it does not explain page size behavior, ordering, or what a page contains. Since search semantics and pagination are left unstated, this is only marginally beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action. Nothing is padded, though the phrase 'No cursor write' is cryptic without context and the terseness comes at the cost of usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There are 4 parameters at 0% schema coverage and no output schema. The description gives a minimal working context (graph scoping, 'use next_tx for the next page'), which is enough to start paging, but it does not explain `since`, `limit`, or `capture`, and without an output schema the return shape is undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the tool has 4 parameters. The description clarifies only `graph` ('scopes an exact graph'). It explains what `graph` means in context, but leaves `limit`, `since`, and the non-obvious `capture` enum (new_values / old_and_new_values / new_row) completely unexplained, so it only partially compensates for the schema's 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb and resource ('Read whole transaction change pages'), which conveys a paged read of transaction changes. However, 'change pages' is internal jargon and nothing distinguishes this from sibling tools like quipu_transactions or quipu_graph_events, so an agent cannot confidently pick it over those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only routing hint is 'graph scopes an exact graph', which is a scoping note rather than a when-to-use rule. There is no statement of when to prefer this over quipu_transactions, quipu_graph_events, or quipu_events, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_contextBRead-only
Query the knowledge graph for context around a natural-language query: returns relevant entities and their facts, ready to prime an agent. Optionally expand to linked entities.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language query to find relevant knowledge context | |
| ppr_rerank | No | Re-order candidates by Personalized PageRank seeded at the direct hits before truncation (default: false) | |
| expand_links | No | Whether to expand to entities linked from the matches | |
| max_entities | No | Maximum entities to return (default from pipeline config) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that results are entities plus their facts and that link expansion is optional, but it says nothing about truncation, ranking defaults, or what happens when the query matches nothing โ gaps that matter for a retrieval tool whose output shape is otherwise undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded clauses: the action and return shape come first, the optional expansion second. Little is wasted, though "ready to prime an agent" is slightly promotional rather than informational.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries some of the burden and does state that entities and facts come back. For a four-parameter retrieval tool in a crowded search family, however, it lacks result limits, ordering semantics, and any statement of how scope (graph/namespace) is determined โ leaving calling behavior partly undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains query, ppr_rerank, expand_links, and max_entities. The description's "Optionally expand to linked entities" merely restates the expand_links parameter without adding syntax, tradeoffs, or guidance on when the expansion or PageRank reranking is worth enabling, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Query the knowledge graph") and states the shape of the result ("relevant entities and their facts, ready to prime an agent"), which is more than a restatement of the name. It does not, however, distinguish itself from the many retrieval siblings such as quipu_search, quipu_unified_search, quipu_hybrid_search, or quipu_ask, so an agent must guess which retrieval entry point to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Ready to prime an agent" implies the intended use case (context priming before an agent task), and "Optionally expand to linked entities" hints at a broader-vs-narrower retrieval choice. There is no explicit when-to-use or when-not-to-use guidance and no named alternative among the numerous search siblings, so routing must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_cooccurrenceARead-only
Deterministic, auditable work-item co-occurrence: given a work-item (Bead) IRI, returns the other work-items that share at least one touched code entity via the provenance chain Bead <-implements- GitCommit -modifies-> entity. A graph query over typed provenance edges, not a statistical mine; ordered by overlap strength. Bitemporal: pass valid_at for 'which work co-occurred as of '.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | Maximum transaction ID to consider | |
| valid_at | No | Point-in-time for valid-time filtering (ISO-8601) | |
| work_item | Yes | Work-item (Bead) IRI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint/non-destructive annotations by disclosing the result ordering ('ordered by overlap strength'), the determinism/auditability guarantee, and the underlying provenance semantics that determine what qualifies as a match. What it does not cover is cardinality or result limits, which matters for an open-world query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core definition and its differentiating clause are front-loaded, and the dense phrasing earns its space by packing join semantics, ordering, and bitemporal behavior into three sentences. The terminology ('Bead', 'touched code entity') assumes domain familiarity, which slightly raises the reading burden.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-shape burden and does so adequately by specifying that it returns other work-items sharing at least one entity, ordered by overlap strength. It is thin on result cardinality, truncation behavior, and what an empty result means, which a graph-traversal query arguably should disclose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, establishing a baseline of 3, and the description adds real meaning on top by framing valid_at as the 'as of <date>' point-in-time question, which is more actionable than the schema's generic ISO-8601 'valid-time filtering'. The tx parameter is left entirely to the schema, so the addition is partial rather than comprehensive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (returns the other work-items) against a specific input (work-item/Bead IRI) and explains the exact join path via the provenance chain Bead <-implements- GitCommit -modifies-> entity. The phrase 'graph query over typed provenance edges, not a statistical mine' distinguishes it from sibling analytics tools such as quipu_impact or quipu_path_cone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when the tool applies (co-occurrence of touched code entities) and explicitly scopes the bitemporal mode with 'pass valid_at for which work co-occurred as of <date>'. It does not name a concrete alternative or state when NOT to use it, so the agent must infer routing from the sibling list rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_cordBRead-only
List entities in the knowledge graph, optionally filtered by type or predicate
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by rdf:type IRI | |
| limit | No | Maximum number of entities (default: 100) | |
| predicate | No | Filter by predicate IRI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description adds nothing beyond that: it does not disclose ordering of results, whether the list is complete or truncated, how the default limit of 100 interacts with large graphs, or what errors look like. With annotations carrying the behavioral load, this is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first and the filter modifier second. No filler, no restating of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining what a returned entity looks like (IRI plus label? all triples? counts?) and it does not. For a graph listing tool in a very large sibling set, it also fails to signal result-shape or paging expectations, leaving an agent to discover them by trial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (type as rdf:type IRI, predicate as predicate IRI, limit with default 100) are already documented in the schema. The description echoes the type/predicate filters but omits the limit parameter entirely and adds no IRI format examples or precedence rules when both filters are supplied. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List entities in the knowledge graph') plus the optional filter modes, so an agent knows exactly what the tool returns conceptually. It stops short of distinguishing this from closely related siblings such as quipu_entity, quipu_search_nodes, or quipu_spotlight, and the opaque name 'quipu_cord' provides no supporting signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this listing tool over the numerous sibling query/search tools (quipu_query, quipu_search_nodes, quipu_unified_search, quipu_entity). The phrase 'optionally filtered' hints at flexibility but names no conditions, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_datasetsADestructive
Manage named datasets โ a reusable NAME for an arbitrary set of graphs, so it can be labelled, governed and handed to another agent. FROM <dataset-iri> then means FROM over its members. Datasets overlap freely and are never implicitly active.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Dataset IRI (required for create/show/remove) | |
| actor | No | Who is creating the dataset | |
| action | No | Action to perform (default: list) | |
| members | No | Graph IRIs, or {"graph": "<iri>", "ord": N} objects for a declared ordering. Duplicate ranks are refused. | |
| timestamp | No | ISO-8601 timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the risk profile is known without the description. The description adds real semantics beyond that (non-implicit activation, free overlap, consumption via FROM), but never warns that the `remove` action deletes the named grouping or that `create` records an actor. Adequate, not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the definition and followed by the one operational fact that matters (FROM resolves over members), plus a scoping caveat. No filler whatsoever.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and four distinct actions (create/list/show/remove) behind a single tool, yet the description never mentions any of them or what show/list return. The concept is explained well, but for a multi-action, destructive, open-world tool this leaves the agent to infer action-level behaviour from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented structurally and the baseline is 3. The description's only added meaning is the FROM/membership semantics, which is conceptual rather than parameter-level; it does not explain the actor, timestamp, or ordering behaviour of `members`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Manage named datasets') and defines the concept precisely as a reusable name over an arbitrary set of graphs, including how it is consumed via `FROM <dataset-iri>`. That is enough for an agent to distinguish it from graph-level siblings like quipu_graph_create, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides one important usage constraint ('never implicitly active') and notes that datasets may overlap, which shapes how an agent should reason about them. It gives no explicit when-to-use or when-not-to-use guidance relative to quipu_graph_create, quipu_graph_label, or quipu_graph_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_embed_backfillADestructive
Backfill missing ROOT entity embeddings using the configured provider. May consume external embedding resources and persist vectors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is largely covered. The description usefully adds that the call consumes external embedding resources (cost/latency) and persists vectors (side effect with no undo), but says nothing about idempotency, resumability, or scope of what is overwritten.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and target, followed by the operational caveats. Every clause adds information: provider source, external resource consumption, and vector persistence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations carrying the safety profile, the description supplies enough to call it correctly: what it fills, with what, and that it costs external resources and writes vectors. Only the choice against quipu_embed_backfill_graph and any run-length/idempotency expectations are left open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to explain and the baseline of 4 applies. Nothing in the description misrepresents or omits parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (backfill) and resource (missing ROOT entity embeddings) plus the mechanism (configured provider). The 'ROOT entity' scoping implicitly separates it from the sibling quipu_embed_backfill_graph, but the sibling is never named, leaving the agent to infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'missing' embeddings โ run it when embeddings are absent. There is no explicit when-to-use, when-not-to-use, or routing guidance relative to quipu_embed_backfill_graph, which is the obvious alternative for a backfill task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_embed_backfill_graphBDestructive
Backfill a bounded number of named-graph entity embeddings; does not rewrite ROOT entity text.
| Name | Required | Description | Default |
|---|---|---|---|
| graph | Yes | ||
| max_entities | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is partly covered. The description adds real value by narrowing the blast radius ('does not rewrite ROOT entity text'), but never says what does get overwritten, whether existing embeddings are replaced or skipped, or what cost/rate limits apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, and the exclusion clause is placed where it is most useful. It is slightly cryptic โ 'ROOT entity text' is never defined โ but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world mutation with no output schema and no documented parameters, the description is too thin. It omits idempotency/resumability, what a backfill call returns, and any indication of side effects beyond the ROOT exclusion, which an agent needs before triggering it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load. It does map loosely onto both params ('named-graph' โ graph, 'bounded number' โ max_entities), but gives no format for the graph identifier and no default or upper bound for max_entities, so an agent still guesses at valid values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (backfill), a specific resource (named-graph entity embeddings), and a scope constraint (a bounded number). The 'named-graph' qualifier implicitly separates it from the sibling quipu_embed_backfill, though that sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this over quipu_embed_backfill, no prerequisites (graph must exist / be unfrozen), and no advice on how to size max_entities. 'Bounded number' hints at incremental batching but leaves the operator to infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_entityARead-only
Dereference an exact IRI as JSON-LD. IRIs are encoded as query values, including slashes and fragments; expanded includes label expansion.
| Name | Required | Description | Default |
|---|---|---|---|
| iri | Yes | ||
| expanded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds one genuine behavioral note, that IRIs are passed as encoded query values including slashes and fragments, but says nothing about what happens when the IRI is unknown, whether an error or empty result is returned, or how dereferencing behaves across the open world.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action and followed by the one non-obvious encoding caveat. There is no filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only dereference tool with no output schema, the description covers the action and the encoding quirk but omits failure behavior and any hint at the JSON-LD shape returned, which is the main thing an agent cannot get from the empty schema or the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry both parameters, and it makes a partial attempt: it explains that slashes and fragments in 'iri' are encoded as query values, and that 'expanded' relates to label expansion. However, 'label expansion' is left vague, and the encoding note implies format handling without stating how the caller should encode the value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-and-resource pair: 'Dereference an exact IRI as JSON-LD'. The word 'exact' signals scope, which helps separate it from siblings like quipu_search or quipu_entity_ref, although no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent must infer it should call this when it already holds a fully qualified IRI. No explicit when-to-use or when-not-to-use guidance is given, and the closely related quipu_entity_ref and quipu_search tools are never mentioned or contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_entity_historyARead-only
Read the existing entity-history endpoint for an exact IRI. Its current MAIN-history semantics do not certify composed/named-graph audit completeness.
| Name | Required | Description | Default |
|---|---|---|---|
| iri | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety behavior is covered. The description adds meaningful semantic context beyond annotations by warning that current MAIN-history semantics do not certify composed/named-graph audit completeness, which affects how an agent should interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core action before adding the important limitation. It is efficient, though the second sentence uses dense domain terminology that could confuse an agent unfamiliar with MAIN-history semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with no output schema, the description covers purpose and an important audit caveat. It remains incomplete because it does not explain what the history result contains, such as whether it returns events, revisions, or ordering information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the single iri parameter is only typed as a string in the schema. The description adds that the IRI must be exact, which is useful, but it does not document IRI syntax or provide examples, so compensation for the low schema coverage is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: read the entity-history endpoint for an exact IRI. It is clear what the tool does, though it does not explicitly distinguish itself from nearby siblings such as quipu_entity, quipu_events, or quipu_graph_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by โfor an exact IRI,โ and the caveat about MAIN-history semantics usefully warns against relying on it for composed/named-graph audit completeness. However, it does not explicitly name the alternative tool or state the positive conditions under which this tool should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_entity_refCDestructive
Mint a typed stable entity, resolve a registered reference or verify a local key IRI against its key triples without fetching. Uncertain mint responses must be reconciled, never blindly retried.
| Name | Required | Description | Default |
|---|---|---|---|
| iri | No | ||
| asOf | No | ||
| keys | No | Key-field values by predicate IRI, for minting=key namespaces. Same type + keys = same IRI; a repeat converges without writing. | |
| type | No | ||
| graph | No | ||
| label | No | ||
| action | Yes | ||
| source | No | ||
| namespace | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the mutation risk is known from structured data. The description adds genuinely useful behavior beyond that: verify does not fetch, and an uncertain mint response must be reconciled rather than retried. It does not say what a mint overwrites, what permissions are needed, or what happens to the entity when the same keys converge.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the operational vocabulary front-loaded and the safety warning placed last where it is most likely to be read as a constraint. Nothing is padding, though the phrasing is dense enough that the mapping between the three verbs and their parameters is hard to extract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive, open-world mutation tool with nine parameters, 11% schema coverage and no output schema, so the description needs to do heavy lifting. It supplies only a retry warning and a no-fetch note, leaving action-specific parameter requirements and the shape of a mint or resolve result entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 11%, so the description must carry the parameter burden and largely fails to. It gestures at the semantics of mint/resolve/verify and the key-triple relationship, but eight of nine parameters (iri, asOf, type, graph, label, source, namespace) get no explanation whatsoever.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names three specific operations (mint a typed stable entity, resolve a registered reference, verify a local key IRI) that map cleanly onto the action enum, so an agent can tell what each mode does. It stops short of distinguishing this tool from siblings such as quipu_entity or quipu_resolve_entity, which sound like they cover overlapping territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or routing advice against the many sibling entity tools. The phrase 'without fetching' hints at a cheap local verification path, and the reconciliation warning implies a retry policy, but neither tells the agent which situation selects this tool over quipu_entity or quipu_resolve_entity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_episodeCDestructive
Ingest structured knowledge from an agent episode (nodes + edges)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Episode name/identifier | |
| edges | No | Relationship edges between nodes | |
| graph | No | Destination graph for the episode. | |
| nodes | No | Entity nodes to create | |
| shapes | No | Optional SHACL validation shapes in Turtle. | |
| source | No | Who/what produced this episode | |
| group_id | No | Knowledge graph group (e.g. aegis-ontology) | |
| episode_body | No | Natural language description of the knowledge | |
| replace_snapshot | No | Replace facts previously asserted by this episode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the description should explain what is destroyed or overwritten โ notably that replace_snapshot 'replaces facts previously asserted by this episode' and that shapes trigger SHACL validation. It says none of this, leaving the destructive profile unexplained beyond the annotation flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The brevity itself is the problem, but as structure and economy go it is clean and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A nine-parameter mutation tool with a destructive annotation, an optional replace_snapshot flag, and SHACL shape input needs more than one line. Nothing explains mutation scope, idempotency, validation failure behavior, or the relationship between the natural-language episode_body and the node/edge payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all nine parameters are already documented in the schema, which sets the baseline at 3. The phrase '(nodes + edges)' marginally signals two of the parameters but adds no semantics about how episode_body, graph, or shapes interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Ingest' plus 'structured knowledge from an agent episode (nodes + edges)' identifies the general operation, but 'ingest structured knowledge' is vague about what actually lands in the system. With ~80 siblings including quipu_knot, quipu_retract_episode, and quipu_episodes_complete, the description does nothing to distinguish this tool from adjacent write paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (group_id, destination graph, SHACL shapes), and no mention of alternatives such as quipu_knot or quipu_import. An agent must infer usage entirely from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_episodes_completeCDestructive
Graphiti-compatible flat episode ingestion. Accepts name, body text, group, and source โ converts to Quipu episode and ingests.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Episode name/identifier | |
| group_id | No | Knowledge graph group (e.g. aegis-ontology) | |
| timestamp | No | ISO-8601 timestamp for the assertion | |
| episode_body | No | Natural language body of the episode | |
| source_description | No | Who/what produced this episode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a write with destructiveHint=true and openWorldHint=true, so the description owes the agent context it cannot get there. It adds nothing about what ingestion replaces or merges, whether existing episodes with the same name are overwritten, or what graph-visible side effects occur โ precisely the concerns a destructiveHint raises.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what the tool is and followed by what it accepts. No filler, though 'Graphiti-compatible' is jargon that will not help every agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter ingestion tool marked destructive with no output schema, the description leaves too much open: no return information, no note on deduplication or overwrite behavior, and no mention of the timestamp parameter. It is not sufficient for an agent to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description enumerates name, body, group, and source, which matches the schema without adding format, defaults, or semantics; it also omits timestamp entirely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (ingest) and resource (episode), and adds that it is a 'Graphiti-compatible flat' form that converts to a Quipu episode. That is more than a restatement of the name. It does not, however, distinguish it from nearby siblings such as quipu_episode or quipu_import, so an agent cannot tell which ingestion path applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus quipu_episode, quipu_import, or quipu_acquire, nor any note about prerequisites or valid group values. The 'Graphiti-compatible' phrase implies a use case but never states it as a condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_eventsARead-only
Read a bounded batch of ROOT's events without committing a consumer cursor. since overrides consumer. types is a comma-separated event-type filter; group is an episode group, not a graph selector. A named graph's events are quipu_graph_events.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| limit | No | ||
| since | No | ||
| types | No | ||
| consumer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: reading does not advance a consumer cursor (a state side-effect an agent must know), and it discloses parameter precedence ("since overrides consumer"). It stops short of return shape, pagination, or default limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short clauses, front-loaded with the core action and the cursor caveat, then parameter disambiguation, then the sibling pointer. No filler, no repetition of schema structure, and every sentence adds distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter read tool with no output schema, the description covers the disambiguation that matters (root vs graph, since vs consumer, group semantics) and annotations cover safety. Gaps remain around limit's meaning/defaults and what an event record looks like, but nothing blocks a correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it does for most: since/consumer precedence, types as a comma-separated event-type filter, and the important clarification that group is an episode group rather than a graph selector. Only limit is left entirely undefined, which keeps it off a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read a bounded batch of ROOT's events") plus the critical scope qualifier "without committing a consumer cursor." It explicitly names the sibling that handles the graph case (quipu_graph_events), so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear routing rule: root-scope events here, named-graph events via quipu_graph_events. The non-committing behavior also implicitly separates it from quipu_events_commit, though that sibling is never named and no explicit exclusion against the commit variant is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_events_commitADestructive
Durably set a consumer cursor. Lower offsets explicitly rewind; delivery alone never commits.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | Yes | ||
| consumer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false; the description earns credit by explaining the reason โ a lower offset rewinds the cursor and forces redelivery, and reading events does not advance state. It omits auth requirements, idempotency of repeated commits, and whether stale/unknown consumer_ids error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler: the action first, then the two non-obvious semantics (rewind, delivery != commit). Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should say what a successful commit returns (new cursor value, version, error on stale offset) and should define consumer_id. Given only two parameters it is close to adequate, but the missing return/error semantics leave a real gap for a destructive, open-world mutation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It does give directional meaning to 'offset' (lower values rewind), but says nothing about what consumer_id identifies, its expected format, or what units/ordering the offset uses relative to offsets returned by quipu_events.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Durably set a consumer cursor'), which separates it from the read-only sibling quipu_events and from quipu_graph_events_commit by naming 'consumer' scope. It stops short of explicitly distinguishing itself from those siblings, so an agent still has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'delivery alone never commits' implies this tool is the required follow-up step after receiving events, which is implicit usage guidance. No alternative is named and no precondition (e.g. must the consumer exist / be registered) is stated, so the guidance is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_explainARead-only
Walk a fact's derivation chain: a base fact answers with its transaction and source; a reasoner: fact answers with the rule and the premises it currently re-matches; an owl:materialize fact answers with every axiom family that currently re-derives it, premises recursed to base facts. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| o | Yes | Object IRI, or a string literal | |
| p | Yes | Predicate IRI | |
| s | Yes | Subject IRI | |
| depth | No | Recursion depth for the derivation walk (default: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the 'Read-only' tag adds little. The real value is behavioral detail beyond annotations: output shape differs by fact kind, owl:materialize results recurse premises to base facts, and re-matching is described as happening 'currently' (i.e., the answer is evaluated at call time, not stored). It does not say what happens for an unknown or non-existent fact, which is the main missing behavioral note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence gives the core action, then a semicolon-separated enumeration of the three answer shapes, ending with a short safety tag. Every clause carries information; no filler. It is dense to the point of being terse, and the trailing 'Read-only' duplicates an annotation, but the structure is otherwise efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description has to characterize return values โ and it does so thoroughly for the three fact kinds, which is the crux of this tool. With a complete input schema and accurate annotations, the remaining gaps (behavior on a missing fact, pagination/size of a deep recursion) are modest rather than crippling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so s/p/o and depth are already documented as IRIs, a literal, and a recursion depth default of 5. The description clarifies that the three parameters together denote a single fact whose derivation is walked and that recursion bottoms out at base facts, which helps interpret depth. It does not add format or edge-case semantics (e.g., literal typing, depth=0 behavior) beyond the schema, so baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Walk a fact's derivation chain') and then enumerates three fact kinds and exactly what each returns (transaction/source, rule id + re-matched premises, axiom families recursed to base facts). That is far more precise than a name restatement. It stops short of naming a sibling such as quipu_reason or quipu_impact as the contrasting operation, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'explain a derivation' framing: an agent can infer it is the provenance-inspection tool rather than the derivation-producing one. However, there is no explicit when-to-use/when-not-to-use statement, no prerequisites, and no named alternative among the many quipu_* reasoning/graph tools. Guidance is adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_exportARead-only
Export deterministic RDF scoped to one named graph, provenance group, SPARQL CONSTRUCT, or ROOT when no scope is supplied. Scope fields are mutually exclusive.
| Name | Required | Description | Default |
|---|---|---|---|
| graph | No | Named-graph IRI to export. Omit for the ROOT/default graph. Unknown IRI is an error. | |
| format | No | RDF serialization (default: turtle). | |
| group_id | No | Export ROOT entities attributed to episodes in this provenance group. | |
| construct | No | SPARQL CONSTRUCT or DESCRIBE query whose graph result is exported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds the mutual-exclusivity constraint and the ROOT fallback, but says nothing about export volume, determinism guarantees, or what happens with a CONSTRUCT returning empty results โ and the schema's 'Unknown IRI is an error' is the only failure mode disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The scoping options come first and the mutual-exclusivity rule lands immediately after, which is exactly the ordering an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter, no-required-args, no-output-schema export tool this covers the essentials: scope modes, default behavior, exclusivity, and error on unknown IRI. Only the meaning of 'deterministic' and any size/streaming expectations are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so per-parameter meaning is already handled, but the description contributes a cross-parameter constraint absent from the schema: the scope fields are mutually exclusive. That is genuine added semantics that prevents a malformed call combining graph and group_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Export deterministic RDF') and enumerates the four scoping modes (named graph, provenance group, SPARQL CONSTRUCT, ROOT default). An agent can tell this is a read-only serialization tool, though it never names a sibling such as quipu_query or quipu_import to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides real invocation guidance: 'ROOT when no scope is supplied' and 'Scope fields are mutually exclusive' tell the agent how to pick parameters. It stops short of saying when to prefer this tool over alternatives like quipu_query for querying or quipu_import for the inverse direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_fragmentsCRead-only
Read a bounded triple-pattern fragment. page and pageSize select a page; absent terms are wildcards.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| object | No | ||
| subject | No | ||
| pageSize | No | ||
| predicate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful behavior in "bounded" (results are capped/paged) and wildcard semantics for omitted terms, but it omits what an unbounded pattern (all terms absent) does to cost, whether there are max pageSize limits, and anything about result structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core action front-loaded and no filler; the pagination/wildcard note comes second where it belongs. It is efficient, though the terseness is achieved by dropping information rather than by compressing it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, 0%-documented, open-world query tool with no output schema, the description leaves too much undefined: what a "fragment" contains, whether omitted terms yield a full scan, pagination limits, and any indication of result shape or ordering. An agent could call it but could not predict cost or interpret what comes back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the full burden and does partially: it explains that page/pageSize control pagination and that missing subject/object/predicate act as wildcards. It adds no meaning about match mode (exact IRI vs substring vs prefix), value formats, defaults, or page-size bounds, so half the semantic load is still missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read a bounded triple-pattern fragment" gives a verb (read) and a resource (triple-pattern fragment), which is more than a tautology, but "fragment" and "bounded" are unexplained jargon and nothing distinguishes this from sibling retrieval tools like quipu_query, quipu_search_facts, or quipu_knot. An agent can guess this is pattern-based triple retrieval but not how it differs from the many other query surfaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of any alternative among the ~70 siblings, several of which (quipu_query, quipu_hybrid_search, quipu_search_facts, quipu_unified_search) plausibly overlap. The only implicit usage signal is "absent terms are wildcards," which describes mechanics, not selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graphARead-only
Project the knowledge graph into a render-ready node-link payload in ONE response: nodes (iri, label, rdf:type, degree), edges as [source_index, target_index, predicate] into that node array, and a type census ordered by prevalence. Excludes prov:Activity episodes and rdf/rdfs/prov scaffolding predicates by default so the domain graph is not buried in provenance. Nodes are ranked by degree and capped; the response states what was dropped.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to nodes of this rdf:type IRI (edges are scoped to the filtered set too) | |
| limit | No | Max nodes to return, ranked by degree (default: 250, hard max: 2000) | |
| edge_budget | No | Maximum number of projected edges. | |
| include_episodes | No | Include prov:Activity episode nodes (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/non-destructive annotations, it discloses the default filters (prov:Activity episodes, rdf/rdfs/prov scaffolding predicates), the ranking and capping behavior of nodes, and โ critically โ that the response self-reports what was dropped. That truncation disclosure is exactly the kind of behavioral detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the return payload, followed by default exclusions and then capping/truncation reporting. The first sentence is dense with parenthetical field lists but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return values and does so concretely (node fields, edge tuple format, census ordering). Minor gaps remain: how limit and edge_budget interact when both bite, and edge ordering, are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so type, limit, and include_episodes are already documented in detail, including the default 250 and hard max 2000. The description reinforces the degree-ranked capping and the episode exclusion but adds little semantic detail beyond the schema, and edge_budget is not discussed at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Project the knowledge graph into a render-ready node-link payload" gives a specific verb and resource, and the enumeration of the returned shape (nodes, indexed edges, type census) makes it unmistakably a visualization/graph-dump tool rather than a query tool. It stops short of naming a sibling such as quipu_query or quipu_export to clarify the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (you want a renderable node-link payload in one call, rather than paginating a query) and explains the default scope choice so the domain graph is not buried in provenance. It never explicitly states when to prefer this over quipu_query, quipu_graph_list, or quipu_export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graph_createADestructive
Register a committed named graph before graph-scoped knot writes or labeling. Idempotent: an existing graph retains its original creation timestamp and declared actor. Interned terms are not registration.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Declared creator; retained on the creation record, not authenticated identity | |
| graph | Yes | IRI of a committed named graph to register | |
| timestamp | No | RFC 3339 creation time; defaults to current UTC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety envelope (not read-only, open-world, destructive), and the description adds non-trivial semantics beyond them: the call is idempotent, an existing graph keeps its original creation timestamp and declared actor, and interning terms is not a substitute. The one unexplained tension is destructiveHint=true against an explicitly idempotent, non-overwriting operation, which the description never reconciles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the prerequisite, then the idempotency rule, then the clarifying exclusion. No sentence is redundant with another or with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter registration call with full schema coverage and annotations covering safety, the description supplies the two facts it must: when registration is required and how repeat calls behave. Return values are not described, but no output schema exists and the idempotency note implies the record is stable, which is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is already documented, including that actor is a declared creator rather than authenticated identity. The description adds no parameter-level detail such as IRI form, default-resolution behavior for timestamp, or what happens when registering an existing graph with a different actor; the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Register a committed named graph") and scopes it to the graph-registration step that must precede graph-scoped knot writes or labeling, which separates it from the write/label siblings by implication. It stops short of naming those siblings explicitly, so an agent must infer the boundary from the phrasings "knot writes" and "labeling."
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear ordering guidance ("before graph-scoped knot writes or labeling") and one explicit exclusion ("Interned terms are not registration"), which is exactly the kind of when-not signal that prevents misuse. It does not name an alternative tool to call instead, so no fallback routing is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graph_eventsARead-only
Read a bounded batch of ONE registered committed named graph's events (its own log and offsets) without committing a cursor. Same filters as quipu_events.
| Name | Required | Description | Default |
|---|---|---|---|
| graph | Yes | ||
| group | No | ||
| limit | No | ||
| since | No | ||
| types | No | ||
| consumer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered, and the description usefully adds that no cursor is persisted. However, it says nothing about ordering, what happens when 'since' is omitted, whether the batch is resumable, or what the returned log/offset entries look like. For a read tool with annotations, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the scope constraint before the routing hint. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six entirely undocumented parameters, no output schema, and no explanation of event shape or offset semantics, the definition is too thin for a tool whose main value is paging a per-graph log. The read-only nature is clear, but an agent would have to guess at 'group', 'consumer', and 'since' semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden for six parameters, yet it only hints at 'limit' via 'bounded batch' and waves the rest away with 'Same filters as quipu_events'. Nothing explains what 'graph', 'group', 'since', 'types', or 'consumer' mean here or how they interact, leaving the agent to infer semantics from a sibling it cannot see.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource pair ('Read a bounded batch of ONE registered committed named graph's events') and pins the scope to a single named graph, explicitly contrasting with the global quipu_events sibling. The phrase 'without committing a cursor' implicitly distinguishes it from quipu_graph_events_commit, so an agent can pick correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'without committing a cursor' gives the key selection condition versus the commit variant, and 'Same filters as quipu_events' points to the reference tool for filter behavior. There is no explicit statement of when not to use it or of prerequisites, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graph_events_commitADestructive
Durably set a consumer cursor in one registered committed named graph's event log. Lower offsets explicitly rewind.
| Name | Required | Description | Default |
|---|---|---|---|
| graph | Yes | ||
| offset | Yes | ||
| consumer_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare destructiveHint=true and openWorldHint=true; the description adds real value by explaining that durability is guaranteed and that passing a lower offset explicitly rewinds the cursor. That rewind note is precisely the behavioral consequence behind the destructive flag, which structured data alone would not reveal. It does not mention auth/registration requirements or error behavior for unknown consumers or unregistered graphs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with zero padding, and the primary action is front-loaded ahead of the rewind caveat. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Annotations cover the safety profile and there is no output schema to explain, so the bar is moderate and mostly met. However, for a destructive mutation whose parameters are wholly undocumented in the schema, the description should say what happens when the consumer or graph does not exist and whether the operation is idempotent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it only partially does. It clarifies that 'offset' has rewind semantics and that 'graph' must be a registered committed graph, but 'consumer_id' is entirely unexplained, and neither the offset's relationship to the graph's event log nor whether consumer registration is implicit is documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: durably setting a consumer cursor in a named graph's event log, with a scope constraint ('one registered committed named graph'). It is clearly distinct from listing tools like quipu_graph_events or quipu_events, but it does nothing to separate itself from the near-namesake sibling quipu_events_commit, so an agent must still infer the difference from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrasing indicates this is the write-side counterpart to reading events, and 'one registered committed named graph' hints at a precondition. There is no explicit when-to-use, no when-not, and neither quipu_events_commit nor quipu_graph_events is named as an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graph_freezeADestructive
Deep-freeze a named graph: export its FULL history (retracted rows and transactions included) into a read-only archive pack, verify the copy by content hash, delete the local rows, and re-attach the pack so the graph stays addressable at the same IRI. Compose frozen graphs back in with FROM , the urn:quipu:dataset:frozen dataset, or include_kinds:["archive"]. Refuses ROOT, the meta-graph, overlays, attached graphs, and double-freezes.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Who is freezing | |
| graph | Yes | IRI of the committed graph to freeze | |
| out_dir | No | Directory for the archive pack (default: beside the store file) | |
| timestamp | Yes | ISO-8601 timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare destructiveHint/readOnlyHint/openWorldHint; the description goes well beyond them by disclosing that history including retracted rows and transactions is preserved, that the copy is hash-verified before deletion, and that the graph remains addressable at the same IRI. This is exactly the context an agent needs before authorizing an irreversible-looking destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The destructive core (export, verify, delete, re-attach) is front-loaded in one dense sentence and the reading-back and refusal clauses follow logically. It is long but nearly every clause carries operational meaning; only the frozen-dataset URN reference borders on jargon-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive multi-step tool with no output schema, the description covers reversibility, archive location behavior, post-freeze addressability, and refusal cases. Minor gaps remain: no permission/auth requirements for performing a freeze and no statement of what the tool returns on success or on hash-verification failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so graph, timestamp, actor and out_dir are already documented in the schema, including out_dir's default. The description adds no extra semantics about parameter formats or interactions, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (deep-freeze a named graph) and enumerates the exact mechanics: export full history, hash-verify, delete local rows, re-attach the pack. It is immediately distinguishable from the inverse sibling quipu_graph_thaw and from plain export tools like quipu_export.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the conditions under which the tool refuses to run (ROOT, meta-graph, overlays, attached graphs, double-freeze) and explains how to read the result afterwards via FROM <iri>, the frozen dataset URN, or include_kinds:["archive"]. It never explicitly contrasts with quipu_graph_thaw as the inverse operation, so the when-to-use framing is strong but not fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graph_labelBDestructive
Declare lattice labels on an already registered committed graph. Create first with quipu_graph_create. Declarations are versioned; policy tokens describe data, not authorization.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | ||
| actor | No | ||
| graph | Yes | ||
| trust | No | ||
| policy | No | ||
| valid_to | No | ||
| freshness | No | ||
| timestamp | Yes | ||
| durability | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is not read-only, is open-world, and is destructive. The description adds useful context that declarations are versioned and that policy tokens describe data rather than authorization. It still does not explain what the destructive effect is, whether existing labels are replaced, what permissions are required, or how failures behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with the core action and prerequisite front-loaded, and no obvious filler. It is structurally clear, though it is arguably too sparse for a nine-parameter destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex mutation tool with nine parameters, a nested trust object, no output schema, and destructive annotations. The description covers the graph prerequisite and an authorization caveat, but it leaves out most operational details an agent needs, including parameter meanings, effects on existing labels, and return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across nine parameters, including a nested trust object, but the description only touches on graph and policy semantics. It does not clarify kind, actor, trust.iri/chain/rank, valid_to, freshness, durability, or timestamp formats and constraints. With such low schema coverage, the description does not compensate for the missing parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: "Declare lattice labels" on an "already registered committed graph." It also clearly routes users to quipu_graph_create first, distinguishing this from graph creation. However, "lattice labels" is not explained, and it does not differentiate this tool from other graph mutation siblings such as freeze, thaw, or events commit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only explicit guidance is the prerequisite "Create first with quipu_graph_create," which implies this tool should be used after a committed graph exists. There is no when-not guidance, no mention of graph state constraints such as frozen graphs, and no comparison with alternative graph-labeling or graph-event tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graph_listARead-only
List registered named graphs; optional graph selects one exact registered IRI without materialization enrichment (cannot combine with kind/lifecycle). Includes class, source, lifecycle and labels (freshness/durability/trust/policy/kind). Filter with kind (a dataKind token, e.g. operational | archive) and/or lifecycle (frozen). Also the capability probe for the graph-kinds surface: a store without this tool predates it.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only graphs declaring this dataKind token | |
| graph | No | Exact registered graph IRI; no kind/lifecycle combination or materialization enrichment | |
| lifecycle | No | Only graphs in this storage lifecycle state |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description still adds real behavioral context: it discloses what each result carries (class, source, lifecycle, labels for freshness/durability/trust/policy/kind), that `graph` mode skips "materialization enrichment," and the backward-compatibility signal that a store lacking this tool predates the graph-kinds surface. It does not explain what materialization enrichment actually means, which is the one unclear behavioral term.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the listing purpose and the `graph` special case come first, then what is returned, then filter syntax, then the capability-probe note. No sentence is filler, though the jargon ("materialization enrichment," "dataKind token") adds cognitive load that a short gloss would fix.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the fields returned and the four label dimensions, and it covers mode conflicts and the version-compat signal. It leaves a couple of loose ends for a 3-parameter tool: no pagination or result-size behavior, and the undefined "materialization enrichment" term.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description goes beyond the schema by giving concrete token examples for `kind` (operational | archive) and the only enum value for `lifecycle` (frozen). It also restates and reinforces the mutual-exclusion constraint on `graph`, which is the schema's most consequential semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List registered named graphs") and immediately clarifies the one-exact-IRI variant versus the filtered-list variant. It is distinguishable from siblings such as quipu_graph_create, quipu_graph_label and quipu_graph_freeze because the description scopes itself to enumeration and filtering, not mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the two modes of use โ pass `graph` for one exact IRI, or filter with `kind` and/or `lifecycle` โ and states the exclusion that `graph` cannot be combined with kind/lifecycle. It also frames itself as a capability probe for the graph-kinds surface. It stops short of naming a sibling to use instead when the agent actually wants to create, label, or freeze a graph.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_graph_thawADestructive
Thaw a frozen graph: verify its archive pack, detach it, restore the full history into the local store under the same IRI, and reopen the graph for writes. The pack file is kept on disk; the freeze registry row is closed, never deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Who is thawing | |
| graph | Yes | IRI of the frozen graph | |
| timestamp | Yes | ISO-8601 timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations flag this as destructive and open-world, and the description meaningfully adds to that picture by disclosing that the pack file is retained on disk and the freeze registry row is closed rather than deleted, which tells the agent the operation is recoverable/reversible in spirit. It still omits failure semantics โ what state the graph is left in if pack verification or restoration fails โ and gives no warning about the detach window.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the operation name and the full effect chain front-loaded in the first sentence and the persistence guarantee placed second. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive multi-step mutation with no output schema and fully documented parameters, the description covers the sequence of side effects and the durability of artifacts, which is the key missing piece elsewhere. It falls short only on failure/partial-completion behavior and authorization requirements, which matter given the destructive hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only three flat string parameters, so the schema already documents graph, actor, and timestamp. The description reinforces that restoration happens "under the same IRI", implying the graph identifier is reused verbatim rather than reassigned, but adds no format or constraint detail beyond what is already structured. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Thaw a frozen graph") and then enumerates the exact sequence of effects: verify archive pack, detach, restore history under the same IRI, reopen for writes. This clearly marks it as the inverse of the sibling quipu_graph_freeze, so an agent can distinguish the two without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase "frozen graph" โ the agent can infer the tool applies exclusively to graphs in the frozen state. There is no explicit statement of when to prefer it over alternatives, no prerequisite checks (must the graph already be frozen? what if only partially archived?), and no guidance on the required timestamp semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_healthARead-only
Read server health as a positive liveness control; healthy does not prove complete graph coverage.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely non-obvious semantics beyond them: a healthy result is a positive signal only and does not prove complete graph coverage, which prevents an agent from over-trusting the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the action and followed by the one caveat that actually changes interpretation. No filler, no restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter liveness probe with no output schema, the description covers the essential unknown โ how much a success actually proves. It stops slightly short of indicating what the health payload conveys, but that gap is minor at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema baseline is 4. There is nothing parameter-wise the description could usefully add, and it does not waste space restating the empty input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Read server health") and adds the scope qualifier that it is a liveness control rather than a completeness check. It is distinguishable from data-returning siblings such as quipu_stats or quipu_version by the words "positive liveness control," though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"As a positive liveness control" implies the when-to-use case, and the caveat hints at when not to rely on it, but no concrete alternative (e.g. quipu_stats for coverage, quipu_version for build info) is named. An agent must infer which sibling to reach for when it needs more than a liveness signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_hybrid_searchARead-only
Combined SPARQL + vector similarity search with predicate pushdown. Accepts a pre-computed embedding or natural-language query. Simple type constraints (e.g. ?s a ) are pushed into the vector index for O(log n) filtered ANN.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default: 10) | |
| query | No | Natural language search query (auto-embedded when EmbeddingProvider is attached) | |
| sparql | No | SPARQL SELECT query returning entity IRIs in the first variable. Simple type patterns (e.g. ?s a <Type>) enable predicate pushdown. | |
| valid_at | No | Point-in-time for temporal filtering (ISO-8601) | |
| embedding | No | Pre-computed query embedding vector (f32 array). Takes precedence over query. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real behavioral value by disclosing that only simple type constraints are pushed into the ANN index (so complex filter shapes degrade) and that the filtered path is O(log n). It omits cost/preconditions for the embedding path and the result ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what the tool is, then accepted inputs, then the pushdown constraint. No filler, though the O(log n) claim is more marketing than decision-relevant for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should clarify what comes back; it only indirectly implies entity IRIs via the SPARQL schema text, and never states whether scores are returned or how results are ranked. For a tool with two alternative input modes and a conditional embedding path, that is a meaningful remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns slightly more by tying the sparql parameter's pushdown benefit to a concrete pattern shape (e.g. ?s a <Type>) and by framing embedding and query as interchangeable inputs, reinforcing the precedence rule the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and composite resource: combined SPARQL + vector similarity search, plus the distinguishing mechanism (predicate pushdown). An agent can distinguish it from a pure SPARQL or pure vector tool, though it never names a specific sibling such as quipu_search or quipu_query to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the mention of 'combined' search and pushdown hints that this tool is for filtered semantic retrieval, and 'simple type constraints' implies a boundary. But there is no explicit when-to-use, when-not, or named alternative among the many search siblings, and no mention that an EmbeddingProvider must be attached for the query path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_impactBDestructive
Impact analysis: walk downstream from an entity. With remove=true, speculatively retracts the entity first (counterfactual: 'what would break if I removed this?'). The store is never mutated.
| Name | Required | Description | Default |
|---|---|---|---|
| hops | No | Maximum edge hops to follow (default: 5) | |
| entity | Yes | IRI of the entity to analyse | |
| remove | No | If true, speculatively retract the entity before walking (counterfactual mode). Default: false. | |
| timestamp | No | ISO-8601 timestamp for the speculative retraction (used only when remove=true) | |
| predicates | No | Restrict walk to these predicate IRIs. Empty = all edges. | |
| rank_by_ppr | No | Order the reached set by Personalized PageRank seeded at the root (each entry gains a 'ppr' score) instead of BFS discovery order (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavioral context about counterfactual mode, but its closing claim 'The store is never mutated' sits in direct tension with annotations declaring readOnlyHint=false and destructiveHint=true, so an agent gets conflicting safety signals about a graph-mutating-looking operation. It also does not explain what the tool actually returns (reached set, edges, depth info) despite there being no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and then the modifier mode, with no filler. The only weakness is that the final sentence is the one that introduces the annotation conflict rather than clarifying behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter traversal tool with no output schema, the definition never describes the shape of the result (what a 'reached set' contains, how hops/predicates affect it, what ppr scores look like), leaving the agent guessing about output. It does cover the single most surprising mode (remove=true), but the completeness is only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents hops, predicates, timestamp, and rank_by_ppr. The description only elaborates on remove=true, and even that largely restates the schema's 'speculatively retract the entity before walking (counterfactual mode)'. Baseline 3 applies since the description adds little beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'walk downstream from an entity', plus the counterfactual variant. An agent can tell this is a graph traversal/impact tool rather than a search or retract tool. It does not name a sibling (e.g. quipu_path_cone, quipu_retract) to sharpen the boundary, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one explicit usage cue: use remove=true when asking 'what would break if I removed this?', which is genuinely useful intent routing. It never says when NOT to use this versus the many sibling traversal/retract tools, and says nothing about prerequisites such as the entity IRI needing to exist or graph/namespace selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_importBDestructive
Stage a portable share with hash, vocabulary and attestation gates. Copy member contents from quipu_share; this is not a server file path. Exact-name merges default off; review before promotion.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| source | Yes | ||
| manifest | Yes | ||
| attestation | No | ||
| accept_exact | No | ||
| shapes_turtle | Yes | ||
| queries_turtle | No | ||
| export_ntriples | Yes | ||
| query_namespace | No | ||
| replace_queries | No | ||
| alignments_turtle | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, openWorldHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds useful behavior beyond that: hash/vocabulary/attestation gates and exact-name merges defaulting off, but it does not explain what the destructive staging operation changes or what review entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences front-load the staging action and follow with the source constraint and merge warning. The phrasing is dense but efficient, with no filler; only the gate terminology is somewhat cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive 11-parameter import operation with no output schema and 0% schema description coverage. The description covers the high-level staging concept but leaves most required parameter meanings, side effects, and the promotion boundary unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 11 parameters, so the description must compensate. It clarifies only a few semantics: source is copied from quipu_share, not a server path; attestation is a gate; and accept_exact defaults off. The remaining parameters, including actor, manifest, export_ntriples, shapes_turtle, queries_turtle, alignments_turtle, query_namespace, and replace_queries, remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Stage a portable share' with hash, vocabulary, and attestation gates. It distinguishes the operation from a server file path and hints that promotion is a separate later step, though it does not name the sibling tool quipu_import_promote explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides context that member contents come from quipu_share rather than a server file path, and warns to review before promotion. However, it does not explicitly state when not to use this tool or name an alternative for the pre-import review workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_import_promoteADestructive
Promote a staged share only when existing promotion gates permit it. Does not bypass quarantine or resolution review. With target_graph, promote into that named graph instead of ROOT, replacing only the share's subjects there; with retire_from too, move those subjects out of that source graph in the same transaction. With dry_run, report what the move would assert, replace and retire, and write nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| dry_run | No | ||
| share_id | Yes | ||
| retire_from | No | ||
| target_graph | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive and open-world annotations, it discloses the gating constraint, that quarantine/resolution review cannot be bypassed, how target_graph scopes replacement only to the share's subjects, and that retire_from moves subjects out in the same transaction. The dry_run behavior is also explicit: report intended assert/replace/retire actions and write nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and gating, followed by behavioral constraints and parameter-specific effects. Every clause adds operational information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, gated mutation tool with no output schema, it covers the essential safety constraints, graph scoping, retirement transaction, and dry-run reporting. It still omits actor semantics and normal return/failure signaling, leaving minor gaps for an agent composing it with siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the parameter burden; it clearly explains target_graph, retire_from, and dry_run semantics, including the transactional coupling. It leaves actor undocumented and only implicitly defines share_id as the staged share identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb and resource ('Promote a staged share') and scopes it to gated promotions, which separates it from generic import or knot-promotion siblings without relying on the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the prerequisite clearly: only promote when existing promotion gates permit it, and it explicitly says quarantine or resolution review is not bypassed. It does not name a specific alternative sibling to use when those blockers exist, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_knotCDestructive
Assert facts into the knowledge graph (with optional SHACL validation)
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Who is making the assertion | |
| graph | No | Named-graph IRI to write into. Must already be registered committed-class (graph_create). Unknown IRI is an error, never interned. Omit for ROOT. | |
| shapes | No | Optional SHACL shapes in Turtle for validation | |
| source | No | Provenance source (episode, file, etc.) | |
| turtle | Yes | RDF data in Turtle format to assert | |
| snapshot | No | Stable producer key (e.g. 'bobbin-chunks:myrepo'). Facts written with it, with or without replace_snapshot, are owned by source 'snapshot:<key>' and a later replace under the same key retracts them; 'source' is then ignored. Scoped to the target graph. | |
| timestamp | No | TRANSACTION time: when this store came to believe the facts. Defaults to now. Also the valid-time unless valid_from is given. | |
| valid_from | No | VALID time: when the facts became true OF THE WORLD, independent of when they were ingested. RFC 3339; a UTC offset (e.g. git's 2026-09-07T07:19:41+02:00) is normalised to Z and sub-second precision is dropped, because valid-time is compared as text. Malformed values are refused before anything is written. Omit to reuse timestamp โ the absent case is byte-identical to the old behaviour. | |
| blank_node_scope | No | Explicit document scope: distinct IDs separate identical loads; the same ID shares nodes across graphs only for identical input bytes. | |
| replace_snapshot | No | Replace the prior facts written under this snapshot key (diffed: unchanged facts stay live). Requires 'snapshot'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the description should explain what gets destroyed; instead it says nothing about snapshot ownership replacing prior facts, retraction paths, or the fact that an unknown graph IRI is rejected rather than interned. The only added behavioral detail, 'optional SHACL validation', duplicates the shapes parameter and is already in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler and the verb leading. It is efficient to the point of under-specification rather than verbose, which is a structural weakness but not a conciseness failure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, destructive, open-world write tool with no output schema, the description omits the consequences of the write (snapshot replacement/retraction, graph-must-exist precondition, validation failure behavior). The schema is complete, but the narrative an agent needs to choose and safely call this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the per-parameter descriptions are unusually rich (valid-time vs transaction time, snapshot ownership, graph registration, blank-node scoping), so the schema carries all parameter meaning. The description adds only the pointer to SHACL validation via the shapes parameter and no syntax, defaults, or interaction detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Assert facts into the knowledge graph') plus a qualifier ('optional SHACL validation'), so an agent knows this is the write path. It does not distinguish itself from close siblings such as quipu_knot_stage, quipu_knot_promote, quipu_set, quipu_import or quipu_update, so the reader cannot tell which write tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no statement of when to assert directly versus staging (quipu_knot_stage/quipu_knot_promote) or importing, and no prerequisites such as the target graph already existing. The parenthetical about validation is a capability note, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_knot_promoteADestructive
Start or read back atomic promotion of a staged snapshot upload. pending=true is not completion; poll the same upload_id. Existing validation gates remain authoritative.
| Name | Required | Description | Default |
|---|---|---|---|
| upload_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, and the description adds genuinely new behavior: the operation is atomic, it is asynchronous (pending is not completion), it is polled via the same upload_id, and existing validation gates still apply. It stops short of saying what a failed or partial promotion leaves behind, but the async/atomic disclosure is valuable beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the async polling caveat, then the validation constraint. The final sentence 'Existing validation gates remain authoritative' is somewhat vague about which gates and what failure looks like, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world, async mutation with no output schema, the definition covers the polling contract but leaves gaps: no description of the returned status shape, no idempotency or retry guidance, and no statement of what 'validation gates' reject or how failures surface. Adequate to call correctly, thin for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single upload_id has no description in the schema, so the description must carry the load. It does add meaning by implying upload_id identifies a previously staged upload and is reused across polling calls, but it never states the ID's origin or format explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'atomic promotion of a staged snapshot upload', and clarifies the dual start/read-back mode. It doesn't name quipu_knot_stage or quipu_import_promote explicitly, but 'staged snapshot upload' plus 'upload_id' makes the pairing inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete usage rule: when pending=true, poll the same upload_id rather than treating it as done. However, it never says when to choose this over quipu_knot_stage or quipu_import_promote, nor what preconditions must hold before promotion can start.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_knot_stageBDestructive
Stage one immutable numbered snapshot part. Supply exact sha256 hashes and upload identity; replay is idempotent, changed bytes refuse. No file paths.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| graph | No | ||
| source | No | ||
| payload | Yes | ||
| snapshot | Yes | ||
| part_hash | Yes | ||
| timestamp | No | ||
| upload_id | Yes | ||
| part_number | Yes | ||
| total_bytes | Yes | ||
| total_parts | Yes | ||
| content_hash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and openWorldHint=true, so safety is partly covered. The description adds genuinely useful behaviour the annotations do not: replay is idempotent and changed bytes are refused, which tells the agent retries are safe but byte changes are not. It still omits return values, ordering constraints between parts, and whether a partial stage can be abandoned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, with no filler. The final fragment 'No file paths' is terse but earns its place as a hard constraint on the payload parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, 8-required mutation with no output schema, the definition covers the hashing and idempotency contract but not part ordering, how total_parts/total_bytes must agree, or what a successful stage returns. It is callable but leaves an agent guessing on multi-part sequencing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 12 parameters, so the description carries the burden. It meaningfully constrains content_hash and part_hash (must be exact sha256), upload_id (upload identity), and payload (inline, not a path), but leaves actor, graph, source, timestamp, total_parts, total_bytes, and part_number entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: staging a single immutable, numbered snapshot part. That is concrete enough to distinguish it from quipu_knot and quipu_knot_promote, though the sibling differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives operational preconditions (exact sha256 hashes, upload identity, no file paths) but no when-to-use or when-not guidance, and never points to an alternative sibling for a different workflow step. An agent must infer that this is the per-part staging call in a multi-part upload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_list_proposalsARead-only
List schema evolution proposals, optionally filtered by status (pending, accepted, rejected)
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Attach a blast-radius plan to each pending proposal: affected classes/properties, instances that would newly fail SHACL, stored queries and named graphs/snapshots using changed terms, and a 0-100 risk score with its inputs (default false; writes nothing) | |
| status | No | Filter by proposal status (default: all) | |
| risk_threshold | No | Plan: score above which the verdict is fail (0-100; default 40 or QUIPU_PROPOSAL_RISK_THRESHOLD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that โ notably it never mentions that the optional `plan` flag computes a blast radius while writing nothing, which is the tool's most consequential behavioral nuance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler; the filtering behavior is appended after the core purpose. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read tool with a fully described schema and clear read-only annotations, the description is sufficient to call it correctly. The one gap is that the blast-radius `plan` capability โ the reason to pick this tool for impact analysis โ is invisible from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters, including the detailed `plan` and `risk_threshold` semantics, are fully documented in the schema. The description's only parameter claim is the status filter, which merely restates the enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List schema evolution proposals" gives a specific verb plus resource, and the parenthetical enumerates the status values. It reads clearly against siblings like quipu_accept_proposal and quipu_reject_proposal, though it never names them to reinforce the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the read side of the proposal workflow, but the description never says when to prefer it over quipu_propose_schema_change or the accept/reject pair, nor does it hint at when the heavier `plan` analysis is worth requesting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_load_ontologyADestructive
Manage OWL ontologies: load (parse + materialize entailments), list, or remove. Loaded ontologies enforce class hierarchy, disjoint-class constraints, and property characteristics (inverse, symmetric, functional).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Ontology name (required for load/remove) | |
| action | No | Action to perform (default: list) | |
| turtle | No | OWL ontology in Turtle format (required for load) | |
| timestamp | No | ISO-8601 timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and openWorldHint=true, so the safety profile is partly covered. The description adds genuine behavioral value by saying load materializes entailments and that loaded ontologies enforce constraints during later reasoning, but it never says that remove is the destructive branch or whether removal also discards materialized facts โ the single most important consequence for an agent choosing an action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action taxonomy and no filler. The second sentence is dense but earns its place by explaining the downstream effect of loading; a per-action risk note would have been a better use of the space than the constraint enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter multi-action tool with full schema coverage and no output schema, the definition covers what each action does and what loading achieves. The remaining gap is return shape for list and the irreversibility of remove, which matters given destructiveHint=true.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is documented inline, including which are required per action (name for load/remove, turtle for load) and the default of action=list. The description adds no format or constraint detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (OWL ontologies) and enumerates the three concrete actions (load, list, remove), with a parenthetical clarifying that load means parse plus entailment materialization. An agent can distinguish this from generic query tools, though it never contrasts itself with nearby siblings like quipu_shapes, quipu_validate, or quipu_namespaces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list implies when each mode applies, and 'loaded ontologies enforce class hierarchy, disjoint-class constraints, and property characteristics' hints at why an agent would load one. But there is no explicit when-not guidance and no routing to alternatives such as quipu_shapes for shape validation or quipu_reason for inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_merge_applyADestructive
WRITE. Finish a share merge (incoming + base) or a fork promotion (fork): the clean part plus every decided row in ONE transaction whose source records the reviewer and the decisions hash. Refuses and writes nothing on an undecided row, stale decisions (either side moved), more values than sh:maxCount, a value that is not an RDF term, or (forks) a SHACL refusal. Applying the same decisions again returns outcome already-applied and writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Its parent share. Inline, as /import takes it. | |
| fork | No | Apply to this fork's promotion, instead of incoming + base. | |
| actor | No | Who is applying. | |
| dry_run | No | Run every check and report the counts it would write; write nothing. | |
| incoming | No | The share to merge. Inline, as /import takes it. | |
| reviewer | Yes | Who decided. Recorded in provenance. | |
| decisions | Yes | The file from merge_decisions with each row's decision set (quipu_merge_resolve): {choose: ours|theirs|base|both} or {values: [N-Triples terms]}. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a destructive, open-world write, so the description need not restate that. It does add genuinely new behavioral facts: atomic single-transaction semantics, provenance recording of reviewer and decisions hash, and idempotent replay returning outcome already-applied. However, it does not state permissions/auth requirements or the shape of the returned counts, which for a destructive tool leaves some transparency on the table.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'WRITE.' and the transactional payload, and the second sentence packs the refusal conditions and idempotency into one line. The refusal list is dense and slightly run-on, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter destructive tool with nested objects and no output schema, the description covers modes, transactionality, failure conditions, idempotency, and one return value (already-applied). Only the return payload beyond that single outcome and any authorization prerequisites remain uncovered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema cannot: fork and incoming+base are presented as mutually exclusive application modes, decisions must come from merge_decisions/resolve, and the reviewer is bound into the decisions hash. Those are semantic constraints not expressible in the JSON schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finish a share merge ... or a fork promotion') along with the two modes distinguished by the fork parameter, and names the upstream producers (merge_decisions, quipu_merge_resolve) whose output it consumes, so an agent can place it in the merge workflow without opening a sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The terminal position in the workflow is clear ('Finish', 'the clean part plus every decided row'), and the description enumerates exactly the states in which it will refuse rather than write, which functions as a when-not-to-call list. It does not explicitly contrast dry_run with a real apply in prose (that lives only in the schema), so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_merge_decisionsARead-only
READ. The conflicts of merging an incoming share (incoming + base) or promoting a fork (fork) into ROOT, one row per slot with base/ours/theirs values and each side's provenance, bound to what was reviewed. propose:true adds a mechanical proposal with evidence per row; it never sets a decision. present:true returns {decisions, presentation, view}: the standard markdown to show the user, unchanged. Writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Its parent share. Inline, as /import takes it. | |
| fork | No | A fork whose promotion stopped on conflicts, instead of incoming + base. | |
| present | No | Also return the standard presentation (markdown + JSON view). | |
| propose | No | Fill each row's proposal (never its decision). | |
| incoming | No | The share to merge. Inline, as /import takes it. | |
| slot_scoped | No | Opt in to v2 slot values and last-modifying-transaction binding. Default v1 remains strict over all ROOT changes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and non-destructive, and the description reinforces this with 'Writes nothing' and 'never sets a decision' - useful because the word 'merge' invites fear of mutation. It also discloses the read is bound to what was reviewed and that presentation output is the standard, unmodified view.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the operation and its two modes, and no sentence is filler. But the phrasing is compressed to the point of strain - 'The conflicts of merging... bound to what was reviewed' is a fragment, and 'bound to what was reviewed' is vague about what binding means.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, nested-object read tool with no output schema, the description covers the two input modes, both boolean modifiers, and the return shape when present is true. It leaves slot_scoped's v1/v2 semantics to the schema, which documents them adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, but the description still adds meaning: propose populates evidence but never a decision, and present returns the specific {decisions, presentation, view} shape with the markdown unchanged. It also clarifies that base pairs with incoming as 'its parent share', which the schema only half states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource - conflict rows for a share merge (incoming + base) or a fork promotion into ROOT - and specifies the row shape (base/ours/theirs plus provenance). 'READ.' plus 'Writes nothing' separates it from the mutating siblings quipu_merge_apply and quipu_merge_resolve, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'it never sets a decision' and 'Writes nothing' signal this is the inspection step before resolving, and the two input modes are spelled out. However, there is no explicit instruction about when to pick a fork versus incoming+base, or when to move on to quipu_merge_resolve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_merge_resolveARead-only
Record one choice on one row of a merge decisions file (share or fork) and return {decisions, presentation, view}. Choices: ours, theirs, base, both (only within sh:maxCount), value (with values), defer. Validates the choice against the row; touches no store. Apply with quipu_merge_apply.
| Name | Required | Description | Default |
|---|---|---|---|
| by | Yes | Who decided: the person who chose, or the agent id when the agent rules allow it. | |
| row | Yes | The row id, e.g. d1. | |
| choose | No | ||
| values | No | N-Triples terms, with choose: value. | |
| decisions | Yes | The decisions file from quipu_merge_decisions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false; the description reinforces this with 'touches no store' and adds behavior the annotations cannot: validation of the choice against the row, and the return shape {decisions, presentation, view}. It does not detail what happens on an invalid choice (error vs. no-op), which is the remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and return shape, then choices, then the persistence pointer. Dense and telegraphic; 'value (with values)' is slightly cryptic, and the final 'Apply with...' sentence could have been merged more cleanly, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with a nested object and no output schema, the description compensates well by naming the three return keys and stating the validation behavior. The only shortfall is not describing failure behavior or the meaning of 'presentation' and 'view'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema already carries much of the load, but the description adds genuine meaning to the enum: 'ours, theirs, base, both (only within sh:maxCount), value (with values), defer', including a cardinality constraint on 'both' and the coupling of 'value' with the values array. 'row' and 'by' are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Record one choice on one row of a merge decisions file'. It also disambiguates from the sibling pair by noting the in-memory nature and pointing to quipu_merge_apply as the persisting step, so the agent knows this is the decide-step, not the write-step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'touches no store. Apply with quipu_merge_apply', which routes the agent to the follow-up tool for persistence. It does not explicitly contrast with quipu_merge_decisions (the producer of the decisions file), so the full when/when-not picture is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_namespacesCRead-only
List the effective owner namespace registry; no writes or allocation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true; "no writes or allocation" largely restates those hints. The genuinely non-obvious behavior โ what "effective" resolution means (inherited vs. explicitly owned namespaces), whether results are tenant-scoped, and whether the list can be empty โ goes unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the operation stated first and the scope constraint second; no filler. The trailing "no writes or allocation" clause is near-redundant with the annotations, which is the only wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only listing tool this is close to sufficient, but with no output schema the description could have indicated what a returned namespace entry contains or what "effective" means. As written, an agent knows it gets a namespace list but not how to interpret the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional parameter, action, with a one-value enum ("list") and 0% schema description coverage. The description's verb "List" implicitly maps to that enum value, so nothing is truly ambiguous, but no added meaning beyond the schema is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("List") and resource ("owner namespace registry"), so an agent knows this is a read of namespace metadata. However, "effective" is unexplained jargon and the description does not differentiate this from adjacent registry-like siblings such as quipu_datasets, quipu_shapes, or quipu_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"no writes or allocation" rules out a category of behavior but gives no when-to-use condition and names no alternative tool. An agent cannot tell from this text whether to call quipu_namespaces or quipu_datasets/quipu_shapes to discover available scopes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_overlay_composeBRead-only
Resolve an overlay's composed view over [overlay > parent-branch-root]: asserted-and-not-tombstoned, nearest wins. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| overlay | Yes | Overlay graph IRI | |
| precedence | No | Overlay composition precedence (default: nearest). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so 'Read-only' merely restates them. The description does add real behavior beyond annotations โ tombstone filtering ('asserted-and-not-tombstoned') and resolution order ('nearest wins') โ but omits error behavior for unknown overlays and never explains the 'governed' mode, which indirectly conflicts with the blanket 'nearest wins' claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the resolution rule is stated compactly. The bracket notation 'overlay > parent-branch-root' is cryptic enough that terseness costs some comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should convey what a 'composed view' actually returns (shape, ordering, size), which it does not. For a 2-parameter read tool with full schema coverage this is adequate but leaves the return value and the 'governed' precedence mode underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, and the description adds nothing per-parameter beyond reinforcing 'nearest'. The 'governed' enum value is left unexplained in both schema and description, and the 'parent-branch-root' chain notation is not defined.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Resolve') and resource ('an overlay's composed view'), and adds scope ('over [overlay > parent-branch-root]'). This is distinguishable from the write siblings quipu_overlay_create/quipu_overlay_write, though it does not explicitly contrast with quipu_acquire_composed, which sounds closely related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no exclusions or alternatives. The agent must infer that this is the read path for overlays versus quipu_overlay_write, and nothing tells it when composition should be queried rather than using quipu_acquire_composed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_overlay_createBDestructive
Register an overlay-class named graph bound (bind-once) to a committed parent branch. Overlays are scratch layers over the committed graph: write hypotheses into an overlay, read the composed view, and the committed layer stays untouched.
| Name | Required | Description | Default |
|---|---|---|---|
| overlay | Yes | Overlay graph IRI to register | |
| parent_branch | No | Committed parent-branch IRI (omit or null for ROOT) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds one genuinely non-obvious behavioral trait not present in annotations: the binding is 'bind-once', so the parent association is irreversible after registration. It also reassures that the committed layer stays untouched, which is meaningful context alongside destructiveHint=true. It does not cover what happens on duplicate/conflicting overlay IRIs, whether the overlay can be deleted later, or any permission requirements, so it only partially extends the annotation set rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the action and its bind-once constraint come first, then a short conceptual gloss on what overlays are for. No filler or repetition of the tool name. It could be marginally tighter, but every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter creation tool with annotations and no output schema, the description covers the concept and the key immutability constraint. It leaves gaps an agent would care about before calling: error behavior on duplicate overlay IRIs, whether the overlay is addressable after creation, and lifecycle/cleanup. These are modest but real omissions for a bind-once registration operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, including the ROOT default for parent_branch. The description adds no IRI format guidance, no naming conventions for the overlay, and no clarification of the omit/null semantics beyond what the schema states. Baseline 3 is appropriate when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Register an overlay-class named graph' bound to a parent branch. It also defines what an overlay is (a scratch layer over the committed graph), which separates it conceptually from the graph-mutation siblings. It stops short of naming the adjacent tools (quipu_overlay_write, quipu_overlay_compose, quipu_graph_create) that an agent might confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the workflow sketch: 'write hypotheses into an overlay, read the composed view, and the committed layer stays untouched.' That tells the agent the tool is the first step in a scratch-layer workflow. However, it never says explicitly when to prefer this over quipu_graph_create or the other overlay siblings, nor what prerequisites exist (e.g. whether the parent branch must already be committed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_overlay_writeADestructive
Write one overlay primitive: assert, retract, or tombstone a triple in an overlay graph. Tombstone masks the parent branch's fact in the composed view without touching the committed layer.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | Overlay primitive to apply | |
| object | Yes | Object value (IRI string, literal, or typed JSON value) | |
| overlay | Yes | Overlay graph IRI | |
| subject | Yes | Subject IRI | |
| predicate | Yes | Predicate IRI | |
| timestamp | No | ISO-8601 valid-time (default: now) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by clarifying that tombstoning 'masks the parent branch's fact in the composed view without touching the committed layer,' which bounds the blast radius. It does not disclose idempotency, whether re-asserting an existing triple errors, or the result of the write, which matters for a mutating tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core action front-loaded and the non-obvious tombstone semantics second. Every clause carries information the structured fields do not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All six parameters are schema-documented, so the input side is covered, and the op semantics are clarified. But with no output schema, the description should say what a successful write returns, and it omits preconditions (must the overlay exist? is the write transactional?) plus the meaning of the optional timestamp defaulting to now.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3. The description exceeds it by explaining the semantics of the 'op' enum values โ particularly that tombstone masks a parent-branch fact rather than deleting data โ which the one-line enum description ('Overlay primitive to apply') does not convey. It also implies one triple per call, which the schema's flat shape alone does not make explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Write one overlay primitive ... a triple in an overlay graph') and enumerates the three operations, so it is immediately distinguishable from base-layer writers like quipu_retract or quipu_set. It stops short of naming a sibling tool explicitly, so the differentiation is implied by the word 'overlay' rather than spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the agent can infer this is the tool for overlay-layer edits, and the tombstone sentence hints at when masking is appropriate. There is no explicit 'use X instead when Y' guidance โ nothing says when to prefer quipu_overlay_compose, quipu_overlay_create, or base-layer quipu_retract, nor whether the overlay graph must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_path_backtestARead-only
Golden paths: backtest a pruned candidate (exemplar trajectory minus omitted steps) over recorded history โ which past trajectories with a shared work-item topic would have conformed under gp-grammar/1, and how did their work items close? Distinguishes 0 matches from cannot-evaluate, and refuses a pattern it cannot compile.
| Name | Required | Description | Default |
|---|---|---|---|
| omit | No | Step IRIs the candidate omits | |
| base_ns | No | Vocabulary namespace override; defaults to the store's configured base_ns. | |
| exemplar | Yes | IRI of the exemplar Trajectory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, destructive=false and openWorld=true, so the safety profile is covered. The description adds genuinely non-obvious behavior beyond that: it distinguishes a genuine zero-match result from an unevaluable outcome, and states it refuses patterns it cannot compile โ which tells the agent how to interpret failure rather than success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the 'Golden paths' label and then the operation, with no filler. It is dense in domain jargon (gp-grammar/1, work-item topic, pruned candidate) but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must gesture at return values, and it does via 'which past trajectories ... would have conformed' and 'how did their work items close'. Combined with the 0-matches vs cannot-evaluate distinction, an agent has enough to call it and read the result, though the shape of the report itself remains unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents exemplar, omit and base_ns, making 3 the baseline. The description does add relational meaning by defining the candidate as the exemplar minus the omitted steps, but it says nothing about base_ns or the IRI form expected for omit entries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (backtest) and a precise resource (a pruned candidate: exemplar trajectory minus omitted steps), plus the evaluation criterion (past trajectories sharing a work-item topic conforming to gp-grammar/1). It is clearly distinct from every sibling listed, though it never explicitly contrasts itself with nearby tools like quipu_path_cone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied โ you invoke this once you have an exemplar plus an omit list and want to know whether history would have conformed. There is no explicit 'use this instead of X' routing and no statement of preconditions (e.g. the candidate must be compilable, which is only hinted at via the refusal clause).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_path_coneARead-only
Golden paths: compute the provenance cone of a trajectory โ which steps did its falsifier-gated verified result depend on? Per-step verdicts are in-cone (load-bearing; pruning needs a human Decision), out-of-cone (mechanically prunable), or cannot-evaluate (no derivation edges recorded โ never silently prunable). Refuses trajectories with no steps or no falsifier-gated verification.
| Name | Required | Description | Default |
|---|---|---|---|
| via | No | Derivation predicate IRIs to walk, in addition to verifiedBy (always followed). | |
| hops | No | Depth bound for the derivation walk (default: 8) | |
| base_ns | No | Vocabulary namespace override; defaults to the store's configured base_ns. | |
| trajectory | Yes | IRI of the Trajectory to analyse |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/non-destructive/open-world; the description goes well beyond them by explaining what each verdict means operationally โ in-cone pruning requires a human Decision, out-of-cone is mechanically prunable, and cannot-evaluate is never silently prunable. It also discloses hard preconditions ('refuses trajectories with no steps or no falsifier-gated verification'), which is exactly the kind of failure-mode context an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose followed by the verdict taxonomy and the refusal conditions; no sentence is filler. It is extremely terse and em-dash-heavy with dense domain jargon, which slightly taxes readability, keeping it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the return-value burden and does so by enumerating the three per-step verdicts and their pruning implications. Combined with the stated refusal preconditions and the fully documented input schema, an agent has everything needed to decide whether to call and how to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so 'trajectory', 'via', 'hops' and 'base_ns' are already documented in the schema. The description reinforces the derivation-edge concept implicitly ('no derivation edges recorded') without adding syntax, defaults or format detail for any parameter, so the schema carries the load and baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('compute the provenance cone of a trajectory') and immediately glosses it as 'which steps did its falsifier-gated verified result depend on', so the operation is unambiguous. It is also clearly distinguishable from neighbouring analysis tools like quipu_impact, quipu_path_backtest and quipu_explain by naming its input (a trajectory) and its output (per-step in/out-of-cone verdicts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: use it to find which steps are load-bearing for a verified result, and the refusal conditions ('no steps or no falsifier-gated verification') tell the agent when the tool will not apply. It stops short of explicitly naming alternatives (e.g. quipu_impact or quipu_path_backtest) or stating when NOT to reach for this versus those, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_policy_checkARead-only
Committed-tier evaluation of a governance Policy over the graph of record: evaluates the policy's aegis:claim (a SPARQL ASK, optionally with a $target placeholder) against the committed graph and returns a Verdict โ outcome โ {satisfied | unsatisfied | unknown} bound to a reproducible evidence_hash. Deterministic and reproducible: any verifier re-running the same ASK over the same committed evidence gets the same verdict (checked, not trusted). Returns the verdict UNSIGNED (signing + persistence is the Phase-0 verifier registry's job).
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | Maximum transaction for the policy evaluation. | |
| claim | No | Inline SPARQL ASK claim (alternative to 'policy') | |
| policy | No | Policy IRI whose aegis:claim to evaluate (alternative to inline 'claim') | |
| target | Yes | Target IRI bound to the $target placeholder | |
| valid_at | No | Point-in-time for valid-time evaluation (ISO-8601). Omit for current state. | |
| predicate_id | No | Predicate identifier recorded in the verdict (inline claims only; default: 'inline') | |
| evidence_probe | No | Inline ASK for 'does the evidence exist?' โ false yields outcome 'unknown' instead of 'unsatisfied' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), and the description adds genuine context beyond them: determinism/reproducibility guarantees, that the verdict is returned UNSIGNED, that evidence_hash binds the result, and that a false evidence_probe downgrades 'unsatisfied' to 'unknown'. It does not cover cost, failure modes, or what happens with a non-existent policy IRI.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and result type, which is good structure. However, it is dense with unexplained internal jargon ('committed-tier', 'aegis:claim', 'graph of record', 'Phase-0 verifier registry') and the signing sentence, while informative, could be tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes the return value (Verdict with outcome enum and evidence_hash), which is the most important missing structured data. Gaps remain for a 7-parameter tool: tx, valid_at, and predicate_id are never discussed, and 'committed-tier' is never contrasted with other tiers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema, including the $target placeholder, the policy-vs-claim alternative, and the evidence_probe unknown semantics. The description reinforces the $target binding and claim/policy duality but adds no new syntax, defaults, or precedence rules beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: evaluates a governance Policy's aegis:claim (SPARQL ASK) over the committed graph and returns a Verdict with outcome and evidence_hash. The phrase 'signing + persistence is the Phase-0 verifier registry's job' implicitly separates it from quipu_verdict_verify, but no sibling is named explicitly, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by 'committed-tier evaluation' and 'any verifier re-running the same ASK'. There is no explicit when-to-use/when-not, no routing to quipu_ask for ad-hoc SPARQL or to quipu_verdict_verify for signature checking, and no stated prerequisites such as needing the policy already committed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_projectADestructive
Project the knowledge graph and run a graph algorithm over it: stats (node/edge counts), in_degree (most-referenced entities), pagerank/ppr (global or personalized PageRank from seed entities), components (weakly-connected components), louvain (modularity community detection), or shortest_path. Optionally restrict the projection to a node type or predicate. Read-only by default; louvain with persist:true writes quipu:memberOfCommunity facts (superseding any prior derivation).
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Target entity IRI for shortest_path | |
| from | No | Source entity IRI for shortest_path | |
| type | No | Restrict the projection to nodes of this rdf:type IRI | |
| graph | No | Project ONE named graph's own facts instead of ROOT (quipu-tz5) โ cheap against a small derived layer even when the episode log is large | |
| limit | No | Max results for in_degree/pagerank (default: 20) | |
| seeds | No | Seed entity IRIs (or raw term IDs) for personalized PageRank; non-empty switches pagerank to PPR | |
| damping | No | PageRank damping factor (default: 0.85) | |
| persist | No | louvain only: persist quipu:memberOfCommunity facts (emergent clustering, NOT an access boundary), bitemporally superseding any prior derivation (default: false) | |
| algorithm | No | Algorithm to run (default: stats) | |
| max_iters | No | PageRank max iterations (default: 100) | |
| predicate | No | Restrict the projection to edges with this predicate IRI | |
| timestamp | No | Timestamp used for persisted community assignments. | |
| tolerance | No | PageRank convergence tolerance (default: 1e-6) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring readOnlyHint=false and destructiveHint=true, the description usefully explains the source of mutation: only 'louvain with persist:true writes quipu:memberOfCommunity facts (superseding any prior derivation)'. That 'supersedes prior derivation' clause is exactly the kind of destructive side-effect detail annotations cannot convey. It omits cost/performance characteristics and return shape, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The algorithm list and the read-only caveat are front-loaded and the sentences are information-dense with no filler. The middle sentence ('Optionally restrict the projection...') is slightly redundant with the schema, and the algorithm enumeration makes sentence one long, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, seven-mode tool with no output schema, the description covers mode selection, scoping filters, and the one mutating branch. The main residual gap is that it does not sketch what each algorithm returns (result shape, ranking format), which matters more given there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 13 parameters including defaults, enums, and the seeds-to-PPR switch. The description echoes a few of these (type/predicate restriction, seeds, persist) but adds no syntax, IRI format, or interaction detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource ('Project the knowledge graph and run a graph algorithm over it') and then enumerates all seven algorithms with a short gloss for each (stats = node/edge counts, in_degree = most-referenced entities, louvain = modularity community detection). This makes it clearly distinguishable from siblings like quipu_stats, quipu_query, or quipu_impact without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear selection context at the algorithm level (personalized PageRank needs seeds; shortest_path needs from/to; louvain with persist writes facts), and states the default read-only mode. It stops short of naming alternatives or exclusions (e.g., when to prefer quipu_stats or quipu_cooccurrence over this), so it is strong context but not full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_propose_schema_changeADestructive
Submit a schema evolution proposal (new shape, class, property, or ontology change). Proposals require explicit acceptance before taking effect.
| Name | Required | Description | Default |
|---|---|---|---|
| diff | Yes | Turtle fragment or JSON patch describing the change | |
| kind | Yes | Kind of schema change | |
| target | Yes | Shape name, class IRI, or property IRI being changed | |
| proposer | Yes | Identity of the proposing agent | |
| migration | No | Optional data-migration program run as ONE transaction (source migration:<id>) when the proposal is accepted. Each item has an 'op': rename_predicate {from,to}; retype_class {from,to}; cast_datatype {predicate,datatype}; split_property {from, into:[{predicate,expression}]} (expressions over ?o); merge_property {from:[..], to, expression?} (expression over ?v0,?v1,..); sparql {update} (DELETE/INSERT WHERE, INSERT DATA or DELETE DATA on the ROOT graph). Old facts are superseded, not rewritten. | |
| rationale | No | Why this change is needed | |
| timestamp | No | ISO-8601 timestamp | |
| trigger_ref | No | Validation failure ref or bead id that triggered this proposal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is largely covered. The description adds real value by stating the proposal does not take effect until explicitly accepted, which explains the gating behavior. However it says nothing about who may accept, what the submission returns, or that the optional migration executes as a single transaction on acceptance (that detail lives in the schema, not the description).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and immediately followed by the most important constraint. No filler, no redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, 4-required mutation tool with a complex migration payload and no output schema, the description covers purpose and gating but omits the submission result, error/prerequisite conditions, and how the proposal is later consumed. The rich schema compensates substantially, so this is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the migration parameter is documented in unusual depth (op vocabulary, expressions, transaction semantics), so the schema carries the parameter burden. The description adds no parameter-level meaning beyond the enum-ish parenthetical, making baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb plus resource ('Submit a schema evolution proposal') and enumerates the change kinds (new shape, class, property, ontology) that mirror the 'kind' enum, so an agent can map intent to tool. It stops short of naming siblings like quipu_accept_proposal or quipu_align_propose, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Proposals require explicit acceptance before taking effect' implies the propose-then-accept workflow and hints at the follow-up tools, but no explicit when-to-use/when-not guidance or alternative routing is given. The agent must infer whether an ontology change belongs here versus quipu_load_ontology or quipu_align_propose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_queriesADestructive
Manage STORED named queries โ competency questions a consumer ships with its domain, callable through quipu_ask alongside the compiled-in catalog. Definitions are validated at LOAD (template must parse; every {placeholder} needs a spec; an optional param needs a default) and versioned: re-loading a name closes the prior version rather than overwriting it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Query name (required for load/get/remove) | |
| action | No | Action to perform (default: list) | |
| params | No | Ordered param specs: {name, type: iri|text|int, required, default, description} | |
| dataset | No | Optional dataset IRI this query is scoped to; activates it unless the caller passes `graph` | |
| template | No | SPARQL template with {param} placeholders (required for load) | |
| timestamp | No | ISO-8601 timestamp | |
| description | No | What the query answers |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so the safety profile is covered; the description adds non-obvious behavior beyond that โ load-time validation rules and versioning semantics (re-loading a name closes the prior version rather than overwriting). What is still undisclosed is what remove does (whether closed versions remain retrievable) and whether any operation is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler: identity and call path first, then validation and versioning constraints. Parenthetical clauses are used to pack constraint lists rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter, destructive mutation tool with a fully documented schema and no output schema, the description covers the highest-risk unknowns (validation at load, version-on-reload). It is not quite complete: remove semantics and what list/get actually return are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description earns more by explaining cross-parameter constraints the schema states only per-field: every {placeholder} in the template needs a matching param spec, and optional params need a default. That is genuine semantic value for the template/params pairing. It does not explain the dataset-vs-graph activation rule that lives in the dataset param.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Manage STORED named queries') and clarifies the object model: competency-question definitions that a consumer ships, callable through quipu_ask alongside the compiled-in catalog. That separates it from quipu_ask (which runs queries) and from quipu_query. It stops short of enumerating the load/list/get/remove operations, leaving that to the action enum.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than prescribed: the description says definitions are shipped with a domain and invoked via quipu_ask, which hints at when to register a query versus just calling one. There is no explicit 'use this whenโฆ, use X instead' guidance and no indication of which action to pick for which task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_queryARead-only
Execute a SPARQL SELECT query against the knowledge graph (supports time-travel via valid_at/tx)
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | Maximum transaction ID to consider. Omit for all transactions. | |
| fork | No | Named fork to query. | |
| graph | No | Named graph to query. | |
| query | Yes | SPARQL SELECT query | |
| verbose | No | Return expanded full IRIs instead of default CURIE-compacted values. | |
| valid_at | No | Point-in-time for valid-time filtering (ISO-8601). Omit for current state. | |
| entailment | No | Entailment regime; currently rdfs. | |
| row_labels | No | Include per-row graph labels. | |
| include_kinds | No | Graph kinds included in the query dataset. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds the meaningful constraint that only SELECT (not mutation) queries are accepted, plus time-travel support, but says nothing about result limits, timeouts, or pagination behavior on large graphs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb, resource, and the two most distinctive capabilities in a parenthetical. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With nine parameters and no output schema, the description is thin on return shape (bindings format, default CURIE compaction vs. the verbose flag) and on operational limits. For a raw query-escape-hatch tool, an agent needs a bit more about result handling than is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented; the description only groups valid_at/tx as the time-travel pair, which the schema already conveys individually. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Execute) and resource (SPARQL SELECT query against the knowledge graph), which clearly separates it from siblings like quipu_search, quipu_ask, and quipu_rule_query. It does not explicitly name those siblings, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention of SELECT and the time-travel capability implies when this tool applies, but there is no explicit guidance on when to prefer it over quipu_ask (natural-language) or the structured search tools, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_reasonBDestructive
Run stored or inline Datalog rules to fixpoint and persist derivations. Omitted graph means ROOT; pass graph to scope premises. Derivations persist in that graph's reserved companion inferred graph, not alongside asserted facts.
| Name | Required | Description | Default |
|---|---|---|---|
| graph | No | ||
| rules | No | ||
| prefix | No | ||
| timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=true, so the write/destructive nature is known. The description adds valuable context about where writes land ('reserved companion inferred graph, not alongside asserted facts'), which is genuinely beyond the annotations. It still omits whether repeated runs replace prior derivations, any cost/latency of fixpoint evaluation, and whether the operation is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and followed by the two non-obvious facts an agent needs (graph scoping and where derivations are stored). Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, side-effecting rule engine with no output schema and zero schema documentation, the description covers the most surprising behavior (inferred-graph persistence) but leaves two parameters unexplained and says nothing about what a caller gets back or how prior derivations are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, so the description must carry the full burden. It partially explains 'graph' (default ROOT, scopes premises) and hints that 'rules' accepts stored or inline rules, but never says how to distinguish the two, and neither 'prefix' nor 'timestamp' is mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation ('Run stored or inline Datalog rules to fixpoint and persist derivations'), which is far more informative than the bare name quipu_reason. However, it does not distinguish itself from plausible siblings such as quipu_rule_query or quipu_query, so an agent still has to infer which one to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete scoping guidance for one parameter ('Omitted graph means ROOT; pass graph to scope premises'), which is real usage context. But there is no guidance on when to choose this tool over quipu_rule_query or other query siblings, and no prerequisites or side-effect conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_reconcileCRead-only
Get the reconciliation service manifest or resolve keyed query objects without merging entities.
| Name | Required | Description | Default |
|---|---|---|---|
| queries | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered structurally. The description adds one genuine behavioral fact beyond that: the operation does not merge entities, which reassures the agent no state change occurs. It does not explain the dual manifest/resolve behavior, what the manifest contains, or what happens when queries is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler or repetition. The only structural weakness is the 'or' that joins two unrelated modes, which forces the reader to parse ambiguity rather than read a clean statement of purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Incorrect placeholder โ recomputing: the tool has two indistinct modes, a fully undocumented nested object parameter, no output schema, and many near-neighbor siblings. The description covers none of the mode-selection logic, so it is not complete for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single 'queries' parameter is an undescribed nested object, so the description must carry the burden. The phrase 'keyed query objects' faintly hints that queries is a map of key-to-query, but it gives no key format, value shape, or example, leaving the nested object effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names two distinct behaviors ('get the reconciliation service manifest' OR 'resolve keyed query objects'), which is a specific verb+resource but leaves the agent unsure which mode it will get. It does distinguish from merging ('without merging entities'), yet never names the closest siblings such as quipu_merge_resolve or quipu_resolve_entity that an agent would naturally compare against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the negative constraint 'without merging entities', with no statement of when to pick this over quipu_merge_resolve, quipu_resolve_entity, or quipu_merge_decisions. No prerequisites, no indication of when the manifest is returned versus when queries are resolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_reject_proposalBDestructive
Reject a pending schema proposal with a reason
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Proposal ID to reject | |
| note | Yes | Reason for rejection | |
| timestamp | No | ISO-8601 timestamp | |
| decided_by | Yes | Identity of the rejector (required; there is no default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, so the safety profile is covered. The description adds that only pending proposals are eligible and that a reason is mandatory, but says nothing about irreversibility, whether a rejection can be reversed, or who is permitted to reject.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded and no filler. It is efficient, though so terse that it could have spent one more clause on the alternative action without becoming bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter mutation with no output schema, the description covers the core action and the pending-state constraint, while annotations carry the destructive profile. It leaves the post-rejection outcome and permission requirements unstated, which an agent making a destructive decision would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including id, note, decided_by and timestamp is already documented in the schema. The phrase "with a reason" reinforces the mandatory note but adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reject) and resource (a pending schema proposal), which is clear enough to separate it from siblings like quipu_accept_proposal and quipu_propose_schema_change. It stops short of naming those siblings explicitly, but the action itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word "pending" implies a precondition (the proposal must not already be decided), which is useful implied guidance. However, there is no explicit statement of when to reject versus when to use quipu_accept_proposal, and no mention of preconditions like authorization or proposal state checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_reportARead-only
Generate a live graph report (graphify's GRAPH_REPORT.md equivalent, but queryable): top hubs / 'god-nodes' (by PageRank with in-degree as a secondary signal), surprising connections (low-prior edges that bridge two otherwise-separate Louvain communities โ rarer bridges rank first), and auto-suggested questions seeded by those hubs and bridges. Read-only; derived from current graph structure. Communities here are emergent clustering for surfacing, NOT an access boundary.
| Name | Required | Description | Default |
|---|---|---|---|
| hubs | No | Number of top hubs to return (default: 10) | |
| type | No | Restrict the projection to nodes of this rdf:type IRI | |
| predicate | No | Restrict the projection to edges with this predicate IRI | |
| questions | No | Number of suggested questions to return (default: 8) | |
| surprises | No | Number of surprising connections to return (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, and the description reinforces the read-only nature. It adds genuinely non-obvious behavioral context: results reflect current structure only, rarity drives bridge ordering ('rarer bridges rank first'), and โ importantly โ Louvain communities are emergent clustering for surfacing, NOT an access boundary, which prevents an agent from misreading the output as a scoping/permission signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by the three deliverables and a closing caveat. Every sentence carries information โ the ranking rule, the rarity ordering, and the community-semantics disambiguation all change how an agent reads the result. No filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional params, no required params, and no output schema, the description carries the burden of describing the return value, and it does so by enumerating the three report sections and their ordering rules. Minor gaps remain: the shape/serialization of the returned report and the effect of the type/predicate filters are not covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description exceeds it by explaining what three of the five integers actually bound โ hubs, surprising connections, and suggested questions correspond to the report sections it describes. It adds no guidance on how to choose values (defaults are only in the schema) and says nothing about the type/predicate projection restriction parameters, so it is not a full substitute.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb+resource ('Generate a live graph report') and then enumerates the exact three sections produced: top hubs ranked by PageRank with in-degree as a tiebreak, surprising inter-community bridges, and auto-suggested questions. This is far more specific than any sibling such as quipu_stats or quipu_spotlight, though it never names an alternative, so differentiation is by content rather than by explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the report is read-only and derived from the current graph structure, and the community caveat implies analysis/exploration is the intended use. It does not say when to reach for this versus quipu_stats, quipu_spotlight, or quipu_query, nor does it give any exclusion or prerequisite (e.g. graph must be non-empty for meaningful hubs).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_resolve_entityARead-only
Check for existing near-duplicate entities before writing. Uses vector similarity (embedding) and canonical name matching (Jaro-Winkler) to find entities that may be duplicates. Returns candidates with similarity scores and match explanations.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Canonical name of the proposed entity | |
| top_k | No | Maximum number of candidates to return (default: 3) | |
| threshold | No | Similarity threshold 0.0-1.0 (default: 0.85) | |
| properties | No | Optional key-value properties of the entity (used for embedding context) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint, so safety is covered. The description adds real value beyond that by naming the matching algorithms and disclosing the return shape: ranked candidates with similarity scores and match explanations, which tells the agent how to interpret and act on results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the actionable trigger, then mechanism, then return shape. There is no filler and every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only 4-parameter tool with no output schema, the description covers purpose, mechanism, and return contents. It is slightly incomplete on what the agent should do with candidates (e.g. whether to pass an ID into merge tools), but nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so name, top_k, threshold, and properties are already documented, giving a baseline of 3. The description adds no further parameter meaning, such as how threshold interacts with the two matching methods or how properties shape the embedding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: check for near-duplicate entities before writing, and explains the two matching mechanisms (vector similarity and Jaro-Winkler canonical name matching). It is clearly a read-only dedup pre-check, which an agent can distinguish in spirit from mutating siblings like quipu_merge_apply or quipu_align_apply, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied usage trigger ('before writing'), which is genuinely useful context. However, with siblings such as quipu_reconcile, quipu_entity, and quipu_merge_resolve in the same problem space, it offers no explicit alternative routing or when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_retractADestructive
Retract ROOT/default-graph facts for an entity: all of them, or narrowed by predicate and/or value. Supplying a graph field is refused; named-graph facts are untouched. Entity + predicate + value retracts exactly ONE (e,a,v) statement โ use this to remove a stray edge instead of retracting a whole episode and rebuilding it.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Who is performing the retraction | |
| graph | No | Unsupported: omit this field. This tool operates only on ROOT/default graph; use graph-scoped quipu_update for named graphs. | |
| value | No | Optional: only retract facts with this object value. A bare string is a literal; use {"iri": "..."} for a reference, or {"int"|"float"|"bool": ...}. With entity + predicate this pins a single triple. | |
| entity | Yes | IRI of the entity to retract | |
| source | No | Provenance source of the retraction. | |
| predicate | No | Optional: only retract facts with this predicate IRI | |
| timestamp | No | ISO-8601 timestamp for the retraction | |
| allow_orphan | No | Allow identity facts to be removed from a still-referenced entity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, and the description adds real behavioral detail on top: the graph field is actively refused, named-graph facts are left intact, and entity+predicate+value collapses to exactly one triple. It does not discuss irreversibility, what provenance/allow_orphan do to the removal, or what is returned, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with scope, then the refusal constraint, then the precision use case. No filler and no restatement of the tool name; every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter destructive mutation with no output schema, the description covers scope, the refused parameter, and narrowing semantics, which is most of what an agent needs. Gaps remain around irreversibility and the effect of allow_orphan/source/timestamp on the retraction, though the schema covers those fields individually.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; every parameter including graph and value is already documented in the schema. The description's only semantic addition is the combinatorial rule that entity+predicate+value pins a single (e,a,v) statement, which the value field description largely repeats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (retract) and resource (ROOT/default-graph facts for an entity) and immediately bounds scope: whole entity, or narrowed by predicate and/or value. It also distinguishes itself from episode-level retraction and from graph-scoped updates, so an agent can identify it among siblings like quipu_retract_episode and quipu_update without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('use this to remove a stray edge instead of retracting a whole episode and rebuilding it') and a hard when-not ('Supplying a graph field is refused; named-graph facts are untouched'). The alternative path for named graphs is identified, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_retract_episodeADestructive
Episode-scoped logical retraction: retract all currently-active facts an episode's ingest contributed (activity node, entities, edges, reified statements), via the bitemporal valid_to close path. Logical, not physical โ time-travel history is preserved. Entities and other episodes' facts are untouched. Idempotent. Node IDENTITY is protected: by default (on_orphan=preserve) rdfs:label/rdf:type survive for any node that other episodes still reference, so retraction never leaves an unlabelled, untyped ghost. The response always reports identity_orphans.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Alias for episode. | |
| actor | No | Who is performing the retraction | |
| episode | Yes | Episode name/identifier to retract (aliases: episode_id, name) | |
| on_orphan | No | What to do when retraction would strip rdfs:label/rdf:type from a node other episodes still reference. preserve (default): keep its identity alive. refuse: reject the whole retraction. allow: legacy strict scope โ creates ghosts, reported in identity_orphans. | |
| timestamp | No | ISO-8601 timestamp for the retraction | |
| episode_id | No | Alias for episode. | |
| orphan_policy | No | Alias for on_orphan. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description adds genuine beyond-schema context: retraction is logical via the bitemporal valid_to close path, time-travel history survives, other episodes' facts are untouched, and the operation is idempotent. It also explains the identity-orphan hazard and that identity_orphans is always reported, giving the agent the full consequence picture before it fires a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and scope, then progressively discloses semantics, safety, and the orphan policy โ a sound ordering for a destructive tool. Dense with jargon (bitemporal, reified, identity_orphans) but every sentence carries distinct information; only 'Entities and other episodes' facts are untouched' slightly overlaps the scope list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (the identity_orphans report) and covers the destructive semantics thoroughly. Minor gaps remain: behavior when the episode does not exist, and what the actor/timestamp parameters do to the audit trail are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description goes further by tying on_orphan=preserve to its outcome (rdfs:label/rdf:type survive for nodes other episodes still reference) and by calling out that the response surfaces identity_orphans. The four alias parameters (name, episode_id, orphan_policy) are not mentioned in the description, though the schema documents them fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource plus an explicit scope qualifier: 'Episode-scoped logical retraction: retract all currently-active facts an episode's ingest contributed'. It enumerates exactly what falls in scope (activity node, entities, edges, reified statements), which cleanly separates it from the untargeted quipu_retract and from quipu_retract_source in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied rather than stated โ the agent can infer this is the right tool when it knows the episode whose ingest produced the facts. However, it never explicitly names an alternative (e.g., use quipu_retract_source for source-scoped removal, or quipu_unravel for graph-level removal) or states when NOT to use it. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_retract_sourceADestructive
RETRACT-ONLY repair: retract every currently-live fact whose transaction source equals an exact string. Reaches facts that no snapshot replacement can touch โ quipu_knot composes its own tag as snapshot:, so facts written under any other source (a free-form producer string, a hand-run CLI promote) were previously unretractable forever. There is NO turtle input: the transaction cannot carry an assertion, so this cannot write facts attributed to the named producer. The retraction is stamped with its OWN source, repair:, never the source being cleared. PLANS BY DEFAULT: without apply=true it writes nothing and reports what would be retracted, so planned:0 means 'that source owns nothing live'. Applying requires expect= as a confirmation handshake, and the response reports 'remaining' โ a fresh read of the post-state, not an echo of the request. RE-KEYING ORDER: retract FIRST, then re-promote canonically; asserting first is skipped as a duplicate and the retraction then removes everything.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Who is performing the repair | |
| apply | No | Default false = plan only, nothing is written. true commits the retraction and requires 'expect'. | |
| graph | No | Optional registered committed-graph IRI; absent targets ROOT. Same graph rules as quipu_knot. | |
| expect | No | Required with apply=true: the planned count you are confirming. A mismatch is refused โ the store moved, or this is not the source you measured. | |
| repair | Yes | Ticket or reason. Stamped on the retraction transaction as repair:<ticket>, so the log records who cleared these facts and why. | |
| source | Yes | EXACT transaction source string to retract. Matched literally โ never by prefix or pattern. Read it from GET /transactions or an entity's history. | |
| timestamp | No | ISO-8601 timestamp for the retraction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses critical behavior: plan-only default, the expect confirmation handshake, that 'remaining' is a fresh post-state read, that the retraction is stamped with repair:<ticket> rather than the cleared source, and the re-keying order. This is exactly the contextual depth needed for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core purpose and each subsequent paragraph addresses a distinct operational concern. It is dense but nearly every sentence carries necessary information. Minor verbosity from all-caps emphasis and repetition of plan/apply behavior keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, source-scoped retraction tool with no output schema, the description covers the full operational picture: plan vs apply, confirmation requirements, return semantics ('remaining'), graph scope, and correct sequencing for re-keying. Nothing an agent needs to avoid a harmful call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics: source is matched literally (never by prefix), apply defaults to plan-only, expect must match the planned count, and repair is stamped as repair:<ticket>. It slightly exceeds the schema's already strong documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and scope: 'RETRACT-ONLY repair: retract every currently-live fact whose transaction source equals an exact string.' It explicitly distinguishes itself from snapshot replacement via quipu_knot and explains the gap it fills for facts written under other sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for use (repairing facts unreachable by snapshot replacement), states exclusions ('NO turtle input', cannot write facts attributed to the named producer), and gives ordering guidance (retract first, then re-promote). It does not explicitly contrast with sibling quipu_retract or quipu_retract_episode, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_rule_queryCRead-only
Read explicit positive/negative support as supported/refuted/both/neither, plus a separate admitted judgment disposition. Current ROOT only; failed/incomplete reads are UNKNOWN, never absence. No action authority or implicit boolean conversion.
| Name | Required | Description | Default |
|---|---|---|---|
| object | Yes | ||
| subject | Yes | ||
| witness_limit | No | ||
| judgment_policy | Yes | ||
| negative_predicate | Yes | ||
| positive_predicate | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly=true and non-destructive, but this description adds genuinely non-inferable behavior: failed or incomplete reads must be treated as UNKNOWN rather than absence, results are scoped to the current ROOT, and there is no implicit boolean coercion of results. That is exactly the kind of failure-mode and result-interpretation context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the operation and result vocabulary, then the read-scope caveat, then the authority caveat; nothing is redundant. The compaction borders on terseness, but no sentence fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with five required, wholly undocumented parameters and no output schema, the description supplies the result enum and the UNKNOWN-on-failure rule but leaves the agent unable to construct a valid call (what goes in positive_predicate vs negative_predicate, what judgment_policy accepts, what an object IRI vs string means). It answers result interpretation better than invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and six parameters (subject, positive_predicate, negative_predicate, object, judgment_policy, witness_limit) carry bare type names only. The description obliquely gestures at 'judgment disposition' and positive/negative support but never explains any parameter's meaning, accepted values, or the role of witness_limit, so the compensation for the coverage gap is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific read operation ('read explicit positive/negative support') and pins down the result vocabulary (supported/refuted/both/neither plus a judgment disposition), which tells an agent roughly what comes back. However, the phrasing is dense domain jargon and it never contrasts this with the many sibling query/lookup tools (quipu_query, quipu_verifier_authorized, quipu_search_facts), so disambiguation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Current ROOT only' is a scope constraint, not usage guidance, and 'No action authority' is a negative capability statement rather than a when-to-use rule. There is no statement of which sibling tool to pick when an agent wants general queries, verification, or search instead of explicit support evaluation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_searchARead-only
Semantic vector search (default), opt-in SQLite FTS5 keyword search, or configurable lexical/vector hybrid fusion. Keyword mode requires query text and an enabled, backfilled index; it needs no embedding provider. Ranked REST results are diagnostic candidates; native MCP renders admitted context only. Agent context uses context_results when insufficient_context is false under quipu-context/v1.
| Name | Required | Description | Default |
|---|---|---|---|
| via | No | Traverse only these predicate IRIs (replaces the default exclusions). | |
| mode | No | Keyword: literal terms and quoted phrases ranked by BM25 over labels, alt labels, descriptions/full bodies, literal attributes, type names and IRI local tokens. Requires [quipu.search] keyword=true. | semantic |
| alpha | No | Semantic weight. Hybrid alpha=1 preserves semantic results exactly, alpha=0 returns keyword results. | |
| decay | No | Per-hop multiplier in (0, 1] for decay mode (default 0.5). | |
| graph | No | Search one registered graph IRI, or all. Unknown IRIs are refused. Omitted scope uses the stored default (ALL for new stores, ROOT for existing stores), unless configuration overrides it. | |
| limit | No | Maximum results (default: 10) | |
| query | No | Natural language search query (auto-embedded when EmbeddingProvider is attached) | |
| rrf_k | No | Positive RRF constant; server default 60. | |
| anchor | No | Root the search on ONE entity (IRI, CURIE or exact label; ambiguity is refused, never guessed) and rank by hop distance from it. Requires [quipu.search] anchored = true on the server. | |
| fusion | No | Min-max score blend or weighted reciprocal rank fusion. | |
| graphs | No | Search the union of these registered graph IRIs. Mutually exclusive with graph/all_graphs. | |
| explain | No | Return score components, matched lexical fields, applied filters and highlighted snippets; anchored search also returns a shortest path. | |
| filters | No | Equivalent strict AST: {term:string}, {not:expr}, {and:[expr,expr]}, {or:[expr,expr]}. Mutually exclusive with structured_query. | |
| ranking | No | Content ranking demotes repository artifacts lacking explanatory content; semantic returns raw cosine order. | semantic |
| verbose | No | Return expanded full IRIs instead of default CURIE-compacted values. | |
| max_hops | No | Anchor neighbourhood radius (default 3, server cap 4). | |
| valid_at | No | Point-in-time for temporal filtering (ISO-8601) | |
| direction | No | Edge direction to traverse (default both). | |
| embedding | No | Pre-computed query embedding vector (f32 array). Takes precedence over query. | |
| group_ids | No | Optional: best-effort filter to entities from these provenance groups (episode-scoped label, NOT an isolation boundary; `/knot` facts are ungrouped and dropped from a group scope) | |
| all_graphs | No | Search ROOT and all registered named graphs, excluding metadata and configured search.exclude_graphs. New stores default to ALL; existing stores retain ROOT until explicitly broadened. Configuration overrides the stored default. | |
| anchor_mode | No | decay (default): score x decay^hops; sort: hops first; filter: only reachable results. | |
| entity_type | No | Optional: restrict to entities of this rdf:type IRI | |
| infer_types | No | Keyword mode only: type scope includes subclass inference when true; defaults false (asserted full-IRI types only). Type tokens are always asserted; response marks both choices. | |
| structured_query | No | Explicit boolean field/phrase/prefix candidate expression. Requires structured=true and SQLite. Candidate selection precedes ranking; default off. | |
| context_similarity_floor | No | Raw cosine floor for context admission only; ranking is unchanged. Exact subject/identifier and term coverage are also required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the bar is lower; the description still adds real behavioral context: keyword mode's prerequisite server config and backfilled index, the absence of an embedding-provider dependency, and the admission contract ('REST results are diagnostic candidates; native MCP renders admitted context only'). Gaps remain around failure/refusal behavior and result/candidate shape, but this is more than annotation echo.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly with the mode choice, and only four sentences, but the prose is dense with undeclared jargon ('context_results', 'insufficient_context', 'quipu-context/v1') that is never tied to a parameter or return field an agent can act on. The final two sentences cost attention without clear operational payoff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 26-parameter, zero-required, no-output-schema tool, the description adequately frames mode selection and one hard prerequisite, and the schema covers the rest of the knobs. It does not explain the overall call workflow (query vs embedding vs anchor vs structured_query precedence) or the returned context payload, which matters given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already explains alpha, rrf_k, decay, anchor_mode, structured_query and the rest. The description adds one genuinely non-schema fact (keyword mode requires query text, even though query is not marked required in the schema), but otherwise does not enrich parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb+resource (search) and enumerates the three retrieval modes (semantic default, FTS5 keyword, hybrid fusion), which is concrete and actionable. It never differentiates from the many search-ish siblings (quipu_search_query, quipu_hybrid_search, quipu_unified_search, quipu_search_nodes, quipu_search_facts), so an agent still cannot tell which search entry point to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives mode-level guidance (semantic is the default; keyword is opt-in and needs an enabled, backfilled index and no embedding provider), which implies when each mode is viable. However, there is no explicit when-to-use/when-not guidance relative to alternative tools, and no statement of what to do if the keyword index is not backfilled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_search_factsBRead-only
Search for relationships/edges in the knowledge graph by natural language query. Finds facts where the predicate or value matches the query. Replaces Graphiti's search_memory_facts.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language search query | |
| verbose | No | Return expanded full IRIs instead of default CURIE-compacted values. | |
| group_ids | No | Optional: filter to facts from these knowledge graph groups | |
| max_results | No | Maximum results (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without description help. The description adds that matching applies to predicate or value, which is genuinely behavioral, but says nothing about ranking, result ordering, or pagination beyond the max_results parameter. With annotations doing the heavy lifting, this is adequate rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first sentence, with the matching semantics immediately after. The final sentence, 'Replaces Graphiti's search_memory_facts,' is a migration footnote that does not help an agent decide or invoke, but the body is otherwise tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Four parameters with one required, no output schema, and the description never indicates what a returned fact looks like (endpoints, predicate, provenance) or how results are ranked. For a read-only search tool that is a real gap an agent must discover by trial. Annotations cover safety, but the retrieval shape is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (query, verbose, group_ids, max_results) are already documented in the schema, establishing the baseline of 3. The description's 'predicate or value matches the query' gives a hint about how the query string is interpreted, but adds no syntax or filtering semantics beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Search for relationships/edges in the knowledge graph') and narrows the scope to facts whose predicate or value matches. That is enough to separate it from a node-search sibling, though it never names quipu_search_nodes or quipu_unified_search explicitly. The trailing migration note about Graphiti adds no functional clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and the sibling list contains many overlapping retrieval tools (quipu_search, quipu_hybrid_search, quipu_unified_search, quipu_ask, quipu_search_nodes). The clause about predicate-or-value matching implies the scope of retrieval but does not tell an agent which tool to pick when it wants entities rather than edges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_search_nodesBRead-only
Search for entities in the knowledge graph by natural language query. Uses text matching on entity names, labels, and values. Replaces Graphiti's search_nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language search query | |
| verbose | No | Return expanded full IRIs instead of default CURIE-compacted values. | |
| group_ids | No | Optional: filter to entities from these knowledge graph groups | |
| max_results | No | Maximum results (default: 10) | |
| entity_type_filter | No | Optional: filter by rdf:type IRI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description usefully adds that matching is lexical over entity names/labels/values and that the scope is entities rather than facts or episodes, but says nothing about ranking, result shape, or truncation behavior beyond the schema's max_results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core purpose front-loaded and no filler. Slightly more could be trimmed from the Graphiti migration note, which serves users rather than agents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Five parameters are all documented in the schema and there is no output schema, so the description needn't explain returns. What remains missing is placement among the crowded search family and any hint about result ordering or limits in practice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains query, verbose, group_ids, max_results, and entity_type_filter. The description adds no extra semantics โ notably it never mentions the CURIE-vs-IRI toggle or the group/type scoping that would help an agent craft calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (entities in the knowledge graph) plus the retrieval mechanism (text matching on names, labels, values). The 'replaces Graphiti's search_nodes' line aids migration but doesn't differentiate it from the many sibling search tools by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'text matching' note implies this is the lexical route rather than a semantic/hybrid one, which gives the agent some basis for choosing. However, no sibling is named and there is no explicit when-to-use/when-not-to-use guidance against quipu_hybrid_search, quipu_unified_search, quipu_search_facts, or quipu_search_query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_search_queryCRead-only
Fuse ranked search seeds with a SPARQL query. Existing mode-specific validation and query budgets apply.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| query | No | ||
| sparql | No | ||
| valid_at | No | ||
| embedding | No | ||
| group_ids | No | ||
| seed_limit | No | ||
| entity_type | No | ||
| query_options | No | ||
| seed_variable | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered without description help. The description adds one piece of genuine behavioral context not present in annotations: that per-mode validation and query budgets govern execution, which hints at possible failures or throttling. It does not say what fusion produces, whether seeds are mandatory, or what happens when both query and sparql are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and no filler, which is structurally clean. The terseness crosses into under-specification, though, so the brevity is not fully earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a ten-parameter hybrid retrieval tool with nested options, zero schema descriptions, and no output schema, the definition is far too thin. An agent cannot determine required input combinations, what modes are legal, or what the fused result looks like from this text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across ten parameters, including a nested query_options object, an embedding array, valid_at, seed_limit, and seed_variable, so the description carries the full explanatory burden. It only indirectly hints that a 'mode' exists and that 'seeds' relate to the query/embedding inputs, leaving most parameter meaning, formats, and interactions undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Fuse ranked search seeds with a SPARQL query'), which conveys that this is a combined retrieval-plus-SPARQL operation. However, 'fuse' and 'seeds' are internal jargon, and nothing distinguishes it from closely related siblings such as quipu_hybrid_search, quipu_unified_search, or quipu_query, which an agent could easily pick instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no statement of when to prefer this over the many other search siblings, and no prerequisites. The clause 'Existing mode-specific validation and query budgets apply' is a caveat about execution, not guidance about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_setADestructive
Atomically SET (entity, predicate) to exactly one value in the ROOT/default graph. Supplying a graph field is refused; named-graph facts are untouched. Retracts every current object on that predicate and asserts the new one in a single transaction. The supersede primitive โ re-parenting (reports_to A -> B) is one call, with no empty-predicate window and no way to end up with two supervisors by forgetting the retract half. SINGLE-VALUE semantics: replaces ALL current objects; to add without removing, assert via quipu_knot.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | Who is performing the set | |
| graph | No | Unsupported: omit this field. This tool operates only on ROOT/default graph; use graph-scoped quipu_update for named graphs. | |
| value | Yes | New object value. A bare string is a literal; use {"iri": "..."} for an edge, or {"int"|"float"|"bool": ...} / {"value", "lang"|"datatype"}. A bare string aimed at an IRI-valued predicate is refused loudly. | |
| entity | Yes | IRI of the entity (must exist) | |
| source | No | Provenance source of the update. | |
| predicate | Yes | Predicate IRI to set (may be new) | |
| timestamp | No | ISO-8601 timestamp for the supersede |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/readOnlyHint annotations by spelling out that every current object on the predicate is retracted and the new one asserted in a single transaction, with no intermediate empty-predicate state, plus that a supplied graph field is refused. Slight gap: it does not say what is returned (transaction id, prior values) or whether the retraction is recoverable, which matters for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core operation and scope, then atomicity, then the alternative. Dense and mostly earning its place, though the graph restriction is stated twice (description and schema) and the 'two supervisors' illustration, while useful, is the most expendable sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, 7-parameter, no-output-schema mutation this covers scope, atomicity, destruction, typing and routing to siblings. Minor omissions remain: no mention of return payload or how to recover the superseded value, and no guidance on actor/source/timestamp beyond the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds real semantics, notably that predicate is single-valued and value must be typed as a literal or {"iri"} with bare strings refused on IRI-valued predicates. It also reinforces the graph-field refusal. The rest of the parameter meaning is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (SET), the exact resource tuple (entity, predicate) and the scope (ROOT/default graph only), and explicitly contrasts itself with quipu_knot (additive assert) and quipu_update (named-graph writes). An agent can pick this tool over its 70+ siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case (re-parenting reports_to A -> B), names the exclusion (named graphs belong to quipu_update) and names the alternative for the additive case (quipu_knot). When-to-use, when-not-to-use and the substitute are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_shapesADestructive
Manage persistent SHACL shapes (load, list, get, remove) and inspect the loaded class vocabulary. Loaded shapes auto-validate on writes.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Shape graph name (required for load/remove) | |
| action | No | Action to perform (default: list) | |
| turtle | No | SHACL shapes in Turtle format (required for load) | |
| timestamp | No | ISO-8601 timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses a real behavioral trait: loaded shapes auto-validate on subsequent writes, which is a side effect not captured by readOnlyHint/destructiveHint/openWorldHint. It stays consistent with destructiveHint=true via 'remove', but does not say whether remove is permanent or whether a load overwrites an existing shape graph of the same name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the operation set front-loaded and the persistence/validation nuance second. Nothing is wasted, though the parenthetical action list partially duplicates the enum and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-optional-parameter tool with full schema coverage and annotations covering the safety profile, this is nearly sufficient. The main remaining gaps are the effect of 'remove' and the meaning of the unused-in-description 'timestamp' field, but no output schema is needed here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the description only reinforces the action set. It adds no meaning for 'turtle' (Turtle SHACL syntax is named) and never mentions the 'timestamp' parameter at all, so it does not compensate where semantics might still be ambiguous (e.g., what timestamp applies to).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (persistent SHACL shapes) and enumerates the operations (load, list, get, remove) plus vocabulary inspection, which maps directly onto the action enum. It is clearly not any of the dozens of sibling query/graph/entity tools, though it never explicitly contrasts itself with quipu_validate or quipu_load_ontology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer that shapes must be loaded before they auto-validate on writes, but there is no explicit 'use this when X, use quipu_validate instead when Y' guidance or statement of prerequisites. The action list gives some routing signal but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_spotlightBRead-only
Annotate text with known entities, read-only. A busy cold cache may return no annotations; that is not an absence proof.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| confidence | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description then adds real value beyond them: it warns that a busy cold cache may yield zero annotations and that an empty result is not proof of absence โ exactly the kind of trap an agent would otherwise misread as a negative finding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed immediately by the failure-mode caveat. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema tool, the description covers the operation and the misleading-empty-result case. What it leaves out is the response shape (spans/offsets vs. entity list) and the meaning of the confidence parameter โ noticeable but secondary gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden and does not compensate. It says nothing about what `text` should be (length, language, format) or what `confidence` controls (threshold direction, default, acceptable range), leaving the only tunable parameter unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource: 'Annotate text with known entities', plus a read-only qualifier. An agent can distinguish this from write/mutation siblings, though it does not name a nearest alternative (e.g. quipu_resolve_entity or quipu_entity_ref) despite a very crowded namespace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites, and no routing to alternatives among ~80 siblings that also touch entities. The intended use ('I have raw text and want recognized entities') is only loosely inferable from the purpose line.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_statsARead-only
Read server graph and transaction statistics. This describes the serving store, not a client-local database.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuine context by clarifying the data source is the serving store rather than a client-local database, but it says nothing about cost, freshness, or what the statistics actually contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core verb+resource statement is front-loaded. The scope caveat is worth keeping but is phrased as a negative ('not a client-local database'), which is slightly less efficient than stating the source positively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries some burden for describing what comes back, and 'graph and transaction statistics' is only a high-level gesture at the payload. For a zero-argument read tool this is enough to call safely, but an agent cannot anticipate shape or granularity of the returned numbers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond confirming the call is argument-free, which the schema already establishes. Baseline 4 for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read server graph and transaction statistics') and adds a scoping clarifier that this covers the serving store rather than a client-local database. It does not, however, distinguish itself from adjacent siblings like quipu_health, quipu_transactions, or quipu_graph, so the agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the second sentence signals this is the tool for server-side operational numbers as opposed to local state, which nudges selection. There is no explicit when-to-use guidance, no mention of when to prefer quipu_health or quipu_transactions instead, and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_subscriptionsCDestructive
Manage persistent push subscriptions (create/list/delete). Creates may deliver externally; list is still conservatively write-classified like REST.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| types | No | ||
| action | No | ||
| batch_size | No | ||
| sparql_ask | No | ||
| consumer_id | No | ||
| webhook_url | No | ||
| batch_window_s | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, and the description usefully explains the odd conservative classification ('list is still conservatively write-classified like REST') and confirms that creates may reach outside the system. It does not say what delete actually destroys (just the subscription or downstream data), whether credentials are required, or how deliveries are retried, leaving meaningful behavioral gaps for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no padding, and the resource and action set are front-loaded. The phrase 'conservatively write-classified like REST' is somewhat jargon-laden but is the one sentence doing real explanatory work.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, destructive, open-world tool with no output schema and no per-parameter documentation, the description is thin: it never explains how to configure a subscription or what a list returns. An agent would have to guess at required fields for create and at the meaning of batch versus realtime mode.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description carries the full burden and largely fails: webhook_url, consumer_id, sparql_ask, mode, types, batch_size, and batch_window_s are never explained. The only overlap is naming the create/list/delete actions, which merely restates the `action` enum already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource ('Manage persistent push subscriptions') and enumerates the three supported actions (create/list/delete), which lets an agent distinguish this from event-stream siblings like quipu_events or quipu_graph_events. It stops short of saying how it differs from those siblings, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no indication of which sibling to pick for event consumption versus subscription management. The action list implies what the tool can do, but an agent must infer prerequisites (e.g., that create likely needs webhook_url and a filter) with no help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_transactionsBRead-only
Read bounded transaction metadata after since; does not change a cursor.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| since | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds two genuine behavioral facts beyond that: results are bounded, and cursor state is untouched. It does not disclose what "transaction metadata" contains, the default/max bound, or whether `since` is inclusive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single eleven-word sentence with zero filler, the scoping condition front-loaded and the behavioral caveat trailing. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 0% schema coverage, no output schema, and no annotations beyond generic safety hints, the description is the only place ambiguity could be resolved and it under-delivers. An agent still cannot tell what a transaction is in this system, how to page with these two integers, or how the call relates to the many event/changes siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning and largely fails to. "After since" usefully implies the bound is exclusive, and "bounded" gestures at `limit`, but neither the type/units of `since` (transaction id? sequence? timestamp?) nor `limit`'s default, maximum, or pagination semantics are explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Read bounded transaction metadata") scoped by a condition ("after since"), which is clearer than a tautology. It stops short of distinguishing itself from plausible siblings such as quipu_events, quipu_changes, or quipu_graph_events, and "transaction metadata" remains somewhat opaque.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"After since" implies the incremental-polling use case and "does not change a cursor" hints that a cursor-advancing alternative exists, but that alternative is never named and no when-not condition is given. The agent must infer usage from an oblique negative clause rather than explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_unified_searchBRead-only
Unified knowledge search for Bobbin integration. Combines text and optional vector search, returning results tagged with source='knowledge' and normalized 0-1 scores. When an EmbeddingProvider is attached, the query is auto-embedded for semantic search.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default: 10) | |
| query | Yes | Natural language search query | |
| embedding | No | Optional pre-computed query embedding. When omitted and EmbeddingProvider is attached, query is auto-embedded. | |
| expand_links | No | Expand results via graph links (default: true) | |
| max_facts_per_entity | No | Maximum facts per entity (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety and scope are covered. The description still adds real value beyond that: results are tagged with source='knowledge', scores are normalized to 0-1, and the auto-embedding behavior is conditional on an EmbeddingProvider being attached. It omits result shape and pagination, but this is useful disclosure for the bar set by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core function and with no filler. The phrasing 'for Bobbin integration' is a slightly opaque piece of context that does little work for an agent, but overall the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns, and it only partly does so: it names the source tag and score normalization but not the result object structure or how expand_links affects output. Given five parameters and a dense sibling set, it is adequate but leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the five parameters is already documented in the schema. The description's note about auto-embedding largely restates the 'embedding' parameter description, and it adds nothing about limit, expand_links, or max_facts_per_entity. Baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Unified knowledge search') and specifies the mechanism: combined text plus optional vector search. It does not, however, distinguish itself from close siblings such as quipu_search, quipu_hybrid_search, or quipu_search_query, so an agent cannot tell which of these to pick from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no named alternative. The crowded sibling space (quipu_search, quipu_hybrid_search, quipu_search_nodes, quipu_search_facts) makes this omission costly; 'for Bobbin integration' is contextual framing, not a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_unravelCRead-only
Time-travel query: see facts as they were at a given point
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | Maximum transaction ID to consider | |
| valid_at | No | Point-in-time for valid-time filtering (ISO-8601) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds only the notion of a point-in-time view; it does not say what happens when neither of the two optional parameters is supplied (0 required params), nor whether tx and valid_at combine or act independently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the time-travel framing comes first. It is efficient, though its brevity is close to under-specification rather than disciplined concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what comes back and in what shape, and it does not. For a bitemporal query tool with two optional parameters and many similar siblings, the definition is too thin to call reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented in the schema and a baseline of 3 applies. The description gestures at temporal filtering but does not clarify the distinction between transaction time (tx) and valid time (valid_at), which is exactly the semantic an agent needs beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Time-travel query: see facts as they were at a given point" names a verb (query) and a resource (facts) with a temporal qualifier, so the general intent is graspable. However, it does not distinguish this from nearby siblings such as quipu_entity_history, quipu_transactions, or quipu_query, and "see facts" leaves the returned entity ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no condition for choosing this over quipu_entity_history or quipu_query, and no mention of prerequisites. An agent must guess from the name alone whether to reach for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_updateADestructive
Execute SPARQL 1.1 Update through the guarded update endpoint. Use explicit GRAPH clauses for named graphs; absent scope has standard SPARQL default-graph semantics. Actor/source are declared provenance, not authorization.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | No | ||
| source | No | ||
| update | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and openWorldHint=true, so safety is partly covered; the description adds real value with 'guarded update endpoint' and the warning that actor/source are declared provenance, not authorization โ a non-obvious trap an agent could otherwise fall into. It still omits atomicity, error/failure behavior, and whether updates are reversible, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, then scoping rules, then the provenance caveat โ no filler. Minor cost from jargon ('guarded update endpoint') that isn't defined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool taking arbitrary SPARQL (including potential DROP/CLEAR), the definition leaves open what happens on failure, whether partial updates persist, and how to recover โ important gaps when there is no output schema to convey results. What it does say about graph scoping and provenance is well targeted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry the load; it does address all three parameters โ 'update' is SPARQL 1.1 Update text with GRAPH-clause scope semantics, and 'actor'/'source' are provenance labels with no authorization effect. It doesn't specify accepted formats for actor/source (URI vs. name) or give an example update, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Execute SPARQL 1.1 Update', which implicitly contrasts with the read-only sibling quipu_query and with the narrower quipu_set/quipu_retract tools. It never names those alternatives, and 'guarded update endpoint' is a bit internal, but the core action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to write the update (explicit GRAPH clauses, default-graph semantics when absent) but never says when to use this tool rather than quipu_query, quipu_set, quipu_retract, or quipu_transactions, nor any preconditions such as frozen graphs or required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_validateBRead-only
Validate RDF data against SHACL shapes without writing
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | RDF data in Turtle format to validate | |
| shapes | Yes | SHACL shapes in Turtle format | |
| as_of_tx | No | Transaction ceiling used to select stored validation shapes. | |
| valid_at | No | Valid-time instant used to select stored validation shapes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description only reinforces non-writing; it does not add auth needs, return behavior, or validation-report details beyond annotations. With annotations covering safety, this is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler. It is appropriately terse, though its terseness contributes to completeness gaps elsewhere rather than verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should explain what validation returns, such as a report or conformance result, but it does not. Inputs and safety are covered by schema/annotations, leaving return-value transparency as a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all four parameters documented in the schema. The description names none of them and adds no syntax or semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: validate RDF data against SHACL shapes, plus a read-only constraint. It does not name or distinguish itself from sibling validation/query tools, so 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies use for read-only SHACL validation via 'without writing', but gives no explicit when-to-use/when-not guidance or alternatives such as quipu_policy_check or quipu_verdict_verify. Adequate implied context, not explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_verdict_verifyARead-only
Verify a signed Verdict against the root of trust AS OF the signature (signing-plane S1): the signature must be valid under a key registered to the verifier at that instant, AND that same registration must authorize the predicate. 'trusted' is that conjunction โ the property a consumer should gate on. Pass 'verdict' (the stored verdict's IRI) for a trust decision: quipu then reads when the store recorded the signature, which the signer cannot choose. 'as_of.basis' says which instant was used (recorded | caller-supplied | now). A caller-supplied signed_at/tx is a what-if: 'trusted' is then always false and the answer is in 'would_verify_as_of_supplied_instant'.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | Explicit transaction to verify as of (a what-if query; default latest) | |
| tier | No | Evidence tier (default: committed) | |
| scheme | No | Signature scheme: ed25519 (default) | webauthn-es256 | webauthn-eddsa | sshsig-sk-ed25519. Hardware schemes are refused unless [quipu.governance] hardware_verdict_schemes is on, and verify only against registrations declaring the same aegis:signatureScheme | |
| outcome | Yes | Verdict outcome (satisfied | unsatisfied | unknown) | |
| verdict | No | IRI of the stored verdict carrying this signature; verify as of when the store recorded it (preferred for trust decisions) | |
| verifier | Yes | Verifier IRI whose registered key verifies the signature | |
| signature | Yes | The signature over the verdict message: hex for ed25519 (default); base64url DER/raw assertion signature for webauthn-*; the armored SSH SIGNATURE block for sshsig-sk-ed25519 | |
| signed_at | No | Explicit valid-time instant to verify at (a what-if query; default now) | |
| target_ref | Yes | Target the verdict is about | |
| predicate_id | Yes | Predicate the verdict attests | |
| evidence_hash | Yes | Evidence hash the signature seals | |
| client_data_json | No | webauthn-* only: base64url clientDataJSON from the assertion; its challenge must equal the one quipu derives from the verdict message | |
| authenticator_data | No | webauthn-* only: base64url authenticatorData from the assertion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive, open-world profile, so the description's job is to add semantics โ and it does: it defines 'trusted' as a conjunction, explains that quipu reads the store-recorded signing time which 'the signer cannot choose', and discloses that caller-supplied instants force trusted=false. The one gap is that it never describes the overall response shape or failure modes (e.g. what a malformed signature returns).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core definition, then the recommended call pattern, then the what-if caveat โ a sensible order. The prose is dense and jargon-heavy ('signing-plane S1', 'conjunction', 'what-if') with long compound sentences, which costs some readability but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter cryptographic verification tool with no output schema, the description carries the key conceptual load: what trusted means, how as_of is chosen, and where the what-if answer appears. It leaves the full return payload undocumented, which is a real gap given there is no output schema, but the decision-critical fields are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description earns more by adding decision-level meaning the schema lacks: the 'verdict' IRI is declared the preferred path because the recorded instant is not signer-controllable, and 'as_of.basis' is explained as reporting which instant was used (recorded | caller-supplied | now). That reframes the what-if parameters from neutral inputs into a mode switch an agent must choose deliberately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Verify a signed Verdict against the root of trust') and defines the exact semantics of a positive result ('the signature must be valid under a key registered to the verifier at that instant, AND that same registration must authorize the predicate'). It implicitly distinguishes itself from quipu_verifier_authorized by covering signature + registration + predicate authorization as a conjunction, but it never names that sibling, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete routing guidance between the two calling modes: 'Pass verdict ... for a trust decision' versus caller-supplied signed_at/tx being 'a what-if'. The consequence of each mode is spelled out (trusted always false for what-if, answer in would_verify_as_of_supplied_instant). It stops short of naming sibling tools or stating when not to use this tool at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_verifier_authorizedARead-only
Check the Phase-0 verifier registry: may this verifier attest this predicate? The discovery half of the governance gate โ lets an agent learn who is authorized before trusting (or requesting) an attestation.
| Name | Required | Description | Default |
|---|---|---|---|
| tx | No | Transaction to check as of (default latest) | |
| verifier | Yes | Verifier IRI | |
| predicate | Yes | Predicate IRI to attest | |
| signed_at | No | Valid-time instant to check at (default now) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds that this consults a registry and is the discovery half of a governance flow, which is useful framing, but it says nothing about whether the result is a boolean, a list of authorizers, or how stale/absent registry entries are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences that front-load the registry check before the rationale. Efficient overall, though 'Phase-0' is unexplained jargon that carries meaning only to an already-initiated agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query with no output schema, the description should convey what comes back; it asks a yes/no question ('may this verifier attest this predicate?') yet also promises to 'learn who is authorized', leaving the return shape ambiguous. The essentials for invocation are present, but an agent cannot predict the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so verifier, predicate, tx and signed_at are all documented in the schema itself. The description adds no parameter-level meaning beyond restating the verifier/predicate pairing and never mentions the temporal parameters tx or signed_at, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Check') and resource ('the Phase-0 verifier registry') and frames the exact question answered: whether a verifier may attest a given predicate. The 'discovery half of the governance gate' phrasing implicitly distinguishes it from the verification-side siblings such as quipu_verdict_verify, though no sibling is named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use context: call it to learn who is authorized before trusting or requesting an attestation. That is a genuine when-to-use signal, but there is no explicit when-not or named alternative comparison, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_versionARead-only
Read served version, source commit and dirty-build identity through MCP without a REST fallback.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered by structured data. The description adds only the notable behavioral claim that no REST fallback is required โ useful, since it tells the agent this works in a pure-MCP deployment. It says nothing about the identity fields' format, whether the 'served version' can differ from a build artifact, or what 'dirty' means in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the read target front-loaded and no filler. 'Dirty-build identity' is mildly jargon-heavy but is the precise term for what is returned, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of telling the agent what comes back, and it does name the three returned items (version, source commit, dirty-build identity). It is close to complete for a trivial read-only diagnostic; only the exact shape/format of those fields is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema has additionalProperties=false, so there is nothing for the description to disambiguate. The baseline for a no-parameter tool applies, with no false hints at optional inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource set: reading the served version, source commit, and dirty-build identity. That is more concrete than the bare name quipu_version, which could be misread as a versioning/mutation tool. It does not, however, distinguish itself from near-neighbors such as quipu_health or quipu_stats, which an agent might equally pick for a 'is the server okay' question.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'through MCP without a REST fallback' implies this is the in-protocol way to get build identity, which is a mild usage signal. There is no explicit when/when-not guidance and no mention of when an agent should prefer quipu_health or quipu_stats instead, so usage has to be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quipu_workflow_capabilitiesARead-only
Read whether the server enforces direct-workflow guards before using quipu_update. Reports capability only, never configuration or credentials.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds meaningful context beyond that: it is a pure capability probe and "never" returns configuration or credentials, which tells the agent this call is non-invasive and safe to make preemptively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and followed by the data-exposure guarantee. No filler, no restatement of the name or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only source of return-value information, and it never states the shape of the answer (boolean, enum, or status object) or how to interpret a negative result. For a trivial zero-parameter probe this is a modest gap, but it is the one thing an agent still has to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly implies no inputs are needed to obtain the capability answer.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read whether the server enforces direct-workflow guards" is a specific verb-plus-resource statement, and naming quipu_update ties it to the sibling it supports. It is clear what the tool answers, though "direct-workflow guards" is unexplained jargon an agent may not fully interpret.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"before using quipu_update" gives an explicit trigger condition for calling this tool. It does not say what to do with the answer (e.g., whether to skip or proceed with quipu_update when guards are enforced), nor does it name any alternative capability checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
84 tool updates
v0.17.0- First observed
quipu_accept_proposal - First observed
quipu_acquire - First observed
quipu_acquire_composed - First observed
quipu_align_apply - First observed
quipu_align_decide - First observed
quipu_align_propose - First observed
quipu_ask - First observed
quipu_changes - First observed
quipu_context - First observed
quipu_cooccurrence - First observed
quipu_cord - First observed
quipu_datasets - First observed
quipu_embed_backfill - First observed
quipu_embed_backfill_graph - First observed
quipu_entity - First observed
quipu_entity_history - First observed
quipu_entity_ref - First observed
quipu_episode - First observed
quipu_episodes_complete - First observed
quipu_events - First observed
quipu_events_commit - First observed
quipu_explain - First observed
quipu_export - First observed
quipu_fragments - First observed
quipu_graph - First observed
quipu_graph_create - First observed
quipu_graph_events - First observed
quipu_graph_events_commit - First observed
quipu_graph_freeze - First observed
quipu_graph_label - First observed
quipu_graph_list - First observed
quipu_graph_thaw - First observed
quipu_health - First observed
quipu_hybrid_search - First observed
quipu_impact - First observed
quipu_import - First observed
quipu_import_promote - First observed
quipu_knot - First observed
quipu_knot_promote - First observed
quipu_knot_stage - First observed
quipu_list_proposals - First observed
quipu_load_ontology - First observed
quipu_merge_apply - First observed
quipu_merge_decisions - First observed
quipu_merge_resolve - First observed
quipu_namespaces - First observed
quipu_overlay_compose - First observed
quipu_overlay_create - First observed
quipu_overlay_write - First observed
quipu_path_backtest - First observed
quipu_path_cone - First observed
quipu_policy_check - First observed
quipu_project - First observed
quipu_propose_schema_change - First observed
quipu_queries - First observed
quipu_query - First observed
quipu_reason - First observed
quipu_reconcile - First observed
quipu_reject_proposal - First observed
quipu_report - First observed
quipu_resolve_entity - First observed
quipu_retract - First observed
quipu_retract_episode - First observed
quipu_retract_source - First observed
quipu_rule_query - First observed
quipu_search - First observed
quipu_search_facts - First observed
quipu_search_nodes - First observed
quipu_search_query - First observed
quipu_set - First observed
quipu_shapes - First observed
quipu_share - First observed
quipu_spotlight - First observed
quipu_stats - First observed
quipu_subscriptions - First observed
quipu_transactions - First observed
quipu_unified_search - First observed
quipu_unravel - First observed
quipu_update - First observed
quipu_validate - First observed
quipu_verdict_verify - First observed
quipu_verifier_authorized - First observed
quipu_version - First observed
quipu_workflow_capabilities
TDQS
Scored across 84 tools
There are many overlapping search/retrieval tools whose boundaries are hard to infer from names alone: quipu_search, quipu_search_nodes, quipu_search_facts, quipu_hybrid_search, quipu_unified_search, quipu_search_query, quipu_context, quipu_ask, and quipu_spotlight all sound like ways to find knowledge. Similar confusion exists between event tools (quipu_events vs quipu_graph_events, quipu_changes, quipu_transactions) and between ingestion paths (quipu_knot, quipu_set, quipu_update, quipu_episode, quipu_episodes_complete). Descriptions are detailed, but the set as a whole has multiple unclear boundaries.
The quipu_ prefix and snake_case style are consistent throughout. However, naming conventions are mixed: many tools are verb_noun (quipu_graph_create, quipu_merge_apply), while others are noun-only or domain metaphors (quipu_entity, quipu_graph, quipu_context, quipu_cord, quipu_knot, quipu_unravel, quipu_ask). The pattern is readable but not predictable enough for a strong score.
Eighty-four tools is far beyond a manageable surface for an agent, even for a feature-rich knowledge graph server. The set includes many niche governance, overlay, import/export, and event-cursor tools that will be hard to discover and select correctly. This is an extreme mismatch between count and practical usability.
The tool surface covers an unusually broad lifecycle: entity minting, fact assertion/retraction, SPARQL query/update, semantic and keyword search, SHACL validation, schema proposals, reasoning, events, imports/exports, overlays, graph freezing, and governance verdicts. No obvious core operation appears missing from the stated knowledge-graph and provenance domain.
Maintenance
Related MCP Connectors
Provenance-first database for teams and agents: every value carries sources, rules and coverage.
Memory for AI agents that knows what is still true. Typed bi-temporal facts, EU-hosted.
Persistent memory, hybrid search and a goal graph for AI agents, over stdio or remote HTTP.
Governed personal world model and memory for your AI agent. Pair once, connect over MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceMemory for AI agents that can't hallucinate โ answers only from stored facts with a citation, or honestly abstains. Provable forgetting (GDPR), valid-time, Merkle proofs, deterministic. MCP server, CPU-only, zero dependencies.131MIT
- AlicenseNot gradedqualityDmaintenanceA local-first compiled knowledge graph MCP server that provides structured memory for AI agents with full-text search, vector embeddings, and timeline tracking.766 npm8MIT
- AlicenseNot gradedqualityDmaintenanceAn embedded knowledge graph in one SQLite file, exposing a MCP server for agents to read and write entities and relationships with full audit trail and time travel.55 PyPI1MIT
- AlicenseAqualityDmaintenancePersistent knowledge graph MCP server with SQLite backend. Enables graph traversal, fuzzy search, temporal queries, and timestamps for entity management.12MIT