Skip to main content
Glama

Server Details

Canton Network: CIPs and their on-chain vote outcomes, docs, forum, validator upgrade deadlines.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.8% over 74 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
UnityNodes/ccpedia
GitHub Stars
0
Server Listing
ccpedia

TDQS

A3.6/5.0

Scored across 104 tools

Disambiguation2/5

Many tools overlap heavily: search vs semantic_search vs full_context vs search_community, get_cip_mentions vs get_cip_citations, get_network_state vs get_network_stats, and various deadline/schedule tools. The long descriptions explicitly distinguish many pairs, but with 104 tools an agent is still likely to misselect among near-duplicates.

Naming Consistency4/5

Most names follow a readable snake_case verb_noun pattern (get_cip, list_cips, search_dev_fund, get_proposal_discussion). There are some noun-only exceptions such as full_context, learning_path, community_consensus, and proposal_success_predictor, but the overall convention is still predictable.

Tool Count1/5

104 tools is far beyond the appropriate range for a single MCP server and creates an extreme scoping mismatch. Even though the domain is broad, the surface should be split or routed rather than exposed as one massive tool list.

Completeness5/5

The surface is extraordinarily comprehensive for a Canton ecosystem knowledge/proxy server: it covers docs, CIPs, forum, mailing lists, GitHub, Dev Fund proposals, videos, whitepapers, network telemetry, versions, validator operations, and ecosystem discovery. No obvious domain gap is left uncovered.

Available Tools

104 tools
call_canton_mcpAInspect

Federate a tool call to another Canton MCP server (see list_canton_mcps). CCPEDIA proxies the call and returns the result, acting as one MCP that routes across the Canton MCP ecosystem. Only free, hosted, no-auth Canton MCPs can be proxied; local or paid ones return connect instructions instead. Canton-only.

NameRequiredDescriptionDefault
toolYesTool name to call on that server
serverYesTarget MCP id from list_canton_mcps (e.g. "ccpedia", "x402-mcp")
argumentsNoArguments object for that tool

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and openWorldHint=true, and the description is consistent, since proxying can invoke arbitrary downstream tools. It adds real context beyond annotations: it discloses that the call is proxied, that the result is returned, and the eligibility limits on target servers. It stops short of noting error behavior or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the discovery pointer in the first sentence, then adds constraints. The 'Canton-only' trailing fragment is clipped but functional; overall it is tight and earns most of its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description states it returns the proxied result, and it covers the main caveat (fallback connect instructions for ineligible servers). For a 3-param federation tool this is largely complete, with only error/return-format specifics missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 three parameters. The description reinforces the server param by pointing to list_canton_mcps as the id source, but adds no syntax or format guidance beyond that. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (federate a tool call) and resource (another Canton MCP server), and explicitly routes to the sibling list_canton_mcps for discovery. An agent can distinguish this proxy from the dozens of content-retrieval 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use context via list_canton_mcps and states the operative exclusion: only free/hosted/no-auth MCPs can be proxied, while local or paid ones return connect instructions. It lacks an explicit 'use X instead for Y' alternative, but the constraints effectively define the eligible case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_deprecationA
Read-onlyIdempotent
Inspect

Check whether a specific Canton/Daml toolchain item (CLI, SDK package, or command: e.g. daml-assistant, Navigator, dpm) is deprecated. Canton-specific. Not a general npm/pip deprecation checker. ALWAYS call before recommending any Canton tool or package to a developer. Accepts either one name or a block of prose: given prose it reports every deprecated item mentioned in it. Returns DEPRECATED (with replacement), CURRENT, or NOT_FOUND.

NameRequiredDescriptionDefault
nameYesTool/package/command to check, e.g. "daml-assistant", "Navigator", "dpm", "canton sandbox". A longer block of text (a forum post, a draft answer) is scanned for every deprecated item it mentions.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavior: the three possible result states (DEPRECATED with replacement, CURRENT, NOT_FOUND) and the prose-scanning mode that reports every deprecated item mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then scope exclusions, usage imperative, and output states. Dense and information-bearing, though slightly redundant between the description's prose-scan sentence and the schema's identical note.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description supplies the return-value taxonomy (DEPRECATED/CURRENT/NOT_FOUND with replacement info), scope, and usage imperative. An agent has everything needed to select and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 schema already explains the name parameter including the prose-scanning behavior. The description reinforces that the input may be a single name or a block of prose and clarifies the resulting scan semantics, adding modest value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (Canton/Daml toolchain item: CLI, SDK package, command) with concrete examples. It explicitly distinguishes itself from the sibling list_deprecations by operating on a single named item or prose block, and from out-of-scope checkers ('not a general npm/pip deprecation checker').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance ('ALWAYS call before recommending any Canton tool or package') and scope exclusions. It does not explicitly name the sibling alternative (list_deprecations) or state when not to use it, so it falls 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.

community_consensusA
Read-onlyIdempotent
Inspect

Surface signals of what the Canton community thinks about a topic: the forum threads that match it best by meaning (views, replies, distinct participants), the mailing-list threads that match best with how many messages mention every term, and the first reply on the best-matching thread. Canton-specific. Not sentiment-analysis; a structured roundup the caller can summarise.

NameRequiredDescriptionDefault
topicYesTopic to assess.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds useful context about what gets assembled (view/reply/participant counts, per-term message counts, first reply) and explicitly rules out sentiment analysis, but says nothing about matching thresholds, coverage limits, or empty-result behaviour.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with no filler, and the core purpose is front-loaded. It is somewhat overloaded – three distinct behaviours and a scope disclaimer squeezed into one sentence – but nothing is wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 does so at a reasonable level (threads with engagement metrics, message counts, first reply). Minor gaps remain around result limits and what happens when no thread matches, but an agent can call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema coverage, so the baseline is high. The description adds meaning by explaining that matching is semantic ('match it best by meaning') for forums and term-based for the mailing list, which tells the agent more about how 'topic' is interpreted than the bare schema does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific composite resource – forum threads matched by meaning, mailing-list threads matched by term mentions, plus the first reply on the top thread – so the agent knows this is a roundup rather than a raw search. It does not name the sibling search tools (search_community, search_mailing_list) it could be confused with, so differentiation is implied 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The clause 'Not sentiment-analysis; a structured roundup the caller can summarise' sets expectations and implicitly tells the agent this is for overall community read rather than per-document lookup, but there is no explicit when-to-use or when-to-prefer-search_community guidance. A reader must infer the boundary from the return-shape description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_governance_outcomesA
Read-onlyIdempotent
Inspect

Aggregate governance throughput over a window: CIPs that changed status (approved / rejected / advanced), counts of cip-vote and cip-discuss mailing activity, and dev-fund proposals opened in the window that are closed today (merged, withdrawn and rejected are not distinguished; no close dates are stored). Canton-specific. Use to summarise "what governance has shipped this quarter?".

NameRequiredDescriptionDefault
window_daysNoWindow in days, 7-365 (default 90).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add semantics. It does that by disclosing a non-obvious data limitation: merged/withdrawn/rejected outcomes are not distinguished and no close dates are stored, which directly affects how results must be interpreted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and scope, and every clause contributes (metrics list, limitation caveat, domain scope, use case). It is a single heavily nested sentence near the upper limit of comfortable density, but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 must describe return content, and it does by naming each aggregate it produces. Combined with the caveat about undistinguished close outcomes and the Canton scope, an agent has enough to call it and to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and window_days already documents its 7-365 range and default of 90. The description only says aggregation happens 'over a window' without adding syntax or edge-case behavior 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (aggregate) and resource (governance throughput) and then enumerates the exact metrics produced: CIP status changes, cip-vote/cip-discuss mailing volume, and dev-fund proposals. This lets an agent separate it from per-item siblings such as get_cip_history, list_governance_votes, and get_dev_fund_activity without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a concrete triggering question ('what governance has shipped this quarter?') and scopes itself as Canton-specific, which is real usage context. However, it names no alternative tool and gives no explicit when-not-to-use guidance, so it stops short of full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_to_evmA
Read-onlyIdempotent
Inspect

Map one Ethereum/EVM concept (e.g. smart contract, wallet, gas, ERC20, Hardhat, ABI) to its Canton Network equivalent, for developers migrating from Solidity/EVM to Canton. Canton-specific (target is always Canton). Use for single concept-to-concept translations; use get_started_guide for a full EVM-to-Canton learning path.

NameRequiredDescriptionDefault
conceptYesEVM concept, e.g. "smart contract", "wallet", "gas", "ERC20", "Hardhat", "Remix", "ABI".

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, covering the safety profile. The description adds the useful constraint that the target is always Canton, but says nothing about output format or lookup behavior. With annotations doing the heavy lifting, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose, then scope, then the routing alternative. No filler; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 carries some burden for return expectations, which it does not describe. However, for a simple read-only concept-mapping lookup with a fully documented single parameter and complete routing guidance, an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'concept' parameter, so the schema already carries the semantics. The description's example list duplicates the schema's own examples rather than adding new meaning, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Map) and resource (EVM concept → Canton equivalent), gives concrete examples, and names the direction constraint ('target is always Canton'). It clearly distinguishes itself from the adjacent learning-path sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes usage to 'single concept-to-concept translations' and routes the alternative case to get_started_guide for 'a full EVM-to-Canton learning path'. This is a textbook when-to-use / when-to-use-something-else split.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_builder_overlapA
Read-onlyIdempotent
Inspect

Given a project/proposal idea, find existing Canton ecosystem projects + dev-fund proposals that look similar: across BOTH the canton-dev-fund proposals corpus AND ecosystem_projects. Broader than find_similar_projects, which only searches the live ecosystem directory. Canton-specific. Cuts manual cross-reference research before submitting a new proposal.

NameRequiredDescriptionDefault
ideaYesOne-paragraph project idea or capability description.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior. The description adds real value beyond that by disclosing the two corpora searched and the relative breadth versus find_similar_projects, which is behavioral context the annotations cannot convey. It stops short of describing result shape or ordering, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scoping, and each sentence contributes something (scope, sibling contrast, domain, motivation). It is slightly list-like in the colon construction but waste-free overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, one-parameter search tool with full annotation coverage and no output schema, the description covers what is searched and why. The main remaining gap is that 'looks similar' is never qualified (semantic vs. keyword matching, ranking, or result volume), which an agent would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage ('One-paragraph project idea or capability description'), so the schema already carries the semantics. The description restates it as 'project/proposal idea' without adding format, length, or quality guidance, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('find existing Canton ecosystem projects + dev-fund proposals that look similar') and immediately scopes it to BOTH the dev-fund proposals corpus and ecosystem_projects. It explicitly distinguishes itself from the sibling find_similar_projects, so an agent can pick between them 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context ('Cuts manual cross-reference research before submitting a new proposal') and names an alternative (find_similar_projects) with the condition that separates them. It does not address the overlap with other siblings like find_duplicate_proposals, so exclusions are partial rather than complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_cip_dependency_chainA
Read-onlyIdempotent
Inspect

Walk the CIP requires: graph from a starting CIP or PR draft. Returns the full chain of prerequisites that must reach Final before the starting proposal becomes implementable, with each prerequisite's current status. Accepts both approved CIPs ("CIP-0112", "0112") and dev-fund PR drafts ("PR-203"). Canton governance only. Use when planning around a CIP that hasn't shipped yet.

NameRequiredDescriptionDefault
cip_idYesStarting CIP or PR id, e.g. "0112", "CIP-0112", or "PR-203".

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety bar is met. The description adds real behavioral context beyond that: the exact nature of the return (full chain plus per-prerequisite status) and the accepted ID formats, which an agent needs to 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and return value, followed by input formats, scope, and usage cue. Four sentences, each carrying distinct information, with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description fully compensates by describing what is returned (the prerequisite chain with current statuses). Combined with annotations covering the safety profile and the schema documenting the single parameter, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter's format examples ('CIP-0112', '0112', 'PR-203') are already spelled out in the schema. The description largely restates those accepted formats rather than adding new semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Walk the CIP requires: graph') and resource, and precisely defines the output: the chain of prerequisites that must reach Final before the starting proposal is implementable. An agent can distinguish this from get_cip or ecosystem_dependency_graph 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use cue ('planning around a CIP that hasn't shipped yet') and a scope constraint ('Canton governance only'). It stops short of naming an explicit alternative sibling for related dependency questions, so it is strong context rather than full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

detect_driftA
Read-onlyIdempotent
Inspect

Find contradictions between docs, forum and GitHub on a topic. Returns counts of how each surface talks about it plus the most recent doc-page and forum statement so the caller can spot mismatches. Distinct from get_kb_drift (which compares foundation_kb to live releases).

NameRequiredDescriptionDefault
topicYesTopic to cross-check.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioral value beyond that by describing the return shape (counts per surface plus the most recent doc-page and forum statement), which matters since there is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose, return shape, and sibling differentiation. Every sentence earns its place and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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-value burden and does so reasonably (counts per surface plus latest doc/forum statements). It leaves minor gaps, such as whether a GitHub statement is also returned or how mismatches are flagged, but is largely complete for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, so the schema fully documents 'topic'. The description adds the notion that the topic is cross-checked across three surfaces, but no format or syntax detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (find contradictions between docs, forum and GitHub on a topic) and explicitly distinguishes itself from the sibling get_kb_drift. An agent can tell it apart from get_kb_drift 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative (get_kb_drift) and characterizes its scope (compares foundation_kb to live releases), which gives clear context for choosing this tool. It stops short of an explicit when-to-use/when-not statement, so it does not reach 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

diagnose_errorA
Read-onlyIdempotent
Inspect

Paste a Canton/Daml/Splice ERROR MESSAGE, stack trace, or error code and get the most likely resolved fixes from CCPEDIA history: forum threads where the same error was discussed, and related GitHub issues (each with its own date). Needs a literal error string or code (e.g. TOPOLOGY_TOO_MANY_PENDING_TOPOLOGY_TRANSACTIONS, ValidatorLicense); do NOT use it for symptom descriptions with no error text (e.g. "my balance is zero"), use semantic_search for those. Canton-specific. Returns top 3 matches each from forum and github.

NameRequiredDescriptionDefault
limitNoMax matches per source (default 3).
error_textYesError message, stack trace, or status code. Longer/more distinctive text returns better matches.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive behavior, so safety is covered. The description adds substantive context beyond that: the return shape ('top 3 matches each from forum and github', dated) and the domain constraint ('Canton-specific'). It stops short of discussing match confidence or what happens on zero results, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose and the key input, then packs exclusions, scope, and return format into a dense but readable block. Every clause carries information; it is slightly long but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the return format itself (top 3 per source, dated, forum + github), plus input requirements and scope. An agent has everything needed to invoke and interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 extra credit by giving concrete error_text examples (TOPOLOGY_TOO_MANY_PENDING_TOPOLOGY_TRANSACTIONS, ValidatorLicense) that clarify what kind of literal input is expected. It doesn't document the limit parameter, but the schema already does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('diagnose' an 'ERROR MESSAGE, stack trace, or error code') and scopes it to Canton/Daml/Splice, which clearly distinguishes it from generic search siblings. An agent can tell it apart from semantic_search 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (literal error string or code) and when-NOT-to-use ('do NOT use it for symptom descriptions with no error text'), naming the alternative tool semantic_search for the excluded case. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ecosystem_dependency_graphA
Read-onlyIdempotent
Inspect

Map ecosystem_projects matching a topic to the SDK versions and repos they appear alongside, building a quick dependency picture. Canton-specific. Useful for "if I build with X SDK version, who else is on it?".

NameRequiredDescriptionDefault
topicYesTopic / category / project family.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world (openWorldHint=false), and the description's 'Canton-specific' note is consistent with the closed-world hint. It adds no further behavioral detail such as result shape, depth of the graph, or any limits, so with annotations carrying the safety profile a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core operation in the first sentence and reinforces it with a concrete question. 'building a quick dependency picture' is mildly redundant filler, but there is no wasted framing overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only lookup with full schema coverage and rich annotations, the description supplies enough to invoke it correctly. The only residual gap is that, absent an output schema, the shape of the returned dependency picture is undefined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'topic' parameter, so the schema already documents it fully. The description's phrase 'matching a topic' adds no syntax, format, or matching semantics beyond what the schema provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('map') and resource ('ecosystem_projects ... to the SDK versions and repos they appear alongside'), which clearly conveys the dependency-graph operation. It distinguishes itself from list-style siblings like list_ecosystem_projects by emphasizing the cross-linking, though it doesn't name any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The quoted use case ('if I build with X SDK version, who else is on it?') gives an agent a concrete triggering scenario, and 'Canton-specific' scopes it to the relevant ecosystem. It stops short of naming alternatives or stating when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_apps_by_patternA
Read-onlyIdempotent
Inspect

Pattern-search the Featured Apps catalogue by free-text query across name, category, and description. Returns the best matches in name+category, falling back to description. Canton-specific.

NameRequiredDescriptionDefault
limitNoMax rows (default 10).
patternYesFree text, e.g. "AMM", "wallet", "DeFi vault", "validator".

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuine behavior beyond that: the retrieval strategy (match on name+category first, fall back to description) and the Canton-only scope, which affects coverage expectations for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler; the core action is front-loaded and the matching/ranking caveat follows. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explains the return shape (best matches) and ranking fallback, and scopes the data source. It is nearly complete for a simple search tool, though it stops short of noting result ordering or empty-result behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both the pattern examples and the limit default/max are already documented in the schema. The description restates that the pattern spans name, category, and description, which adds little beyond the schema and says nothing about limit, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (pattern-search) and resource (Featured Apps catalogue) plus the fields searched (name, category, description), which is more than the name alone conveys. It does not, however, name or distinguish itself from obvious siblings like list_featured_apps or semantic_search, leaving the agent 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "by free-text query" and "Canton-specific" imply when this tool applies (fuzzy/partial matching within the Canton Featured Apps set), but there is no explicit statement of when to prefer it over list_featured_apps or the generic search/semantic_search tools. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_cip_for_featureA
Read-onlyIdempotent
Inspect

Given a Canton feature or capability description, find the matching CIP(s) by the words of their titles and bodies and by meaning over the CIP index. Canton-specific. Use to answer "is there a CIP for X?".

NameRequiredDescriptionDefault
featureYesFeature description, e.g. "wallet abstraction", "token standard", "validator staking".

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds meaningful context beyond that: the retrieval mechanism (exact title/body words plus semantic meaning over the CIP index) and the Canton-specific restriction, which tells the agent about recall behavior and scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, and the core action is front-loaded before the use case. Every clause carries signal (retrieval method, scope, intent).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only lookup tool with full annotation coverage and no output schema, the description is nearly sufficient. It explains purpose, scope, and search method; the only minor gap is not stating explicitly what shape the matches come back as, though with no output schema that is a small omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single 'feature' parameter already documented and exampled in the schema. The description restates the input concept but adds no syntax, formatting, or constraint detail beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find) and resource (the matching CIP) with scope qualifiers: Canton features/capabilities, searched over titles, bodies, and semantic meaning. This distinguishes it from siblings like list_cips (enumerate all) and get_cip (fetch one), which the agent can infer from the framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger: 'Use to answer "is there a CIP for X?"', which frames the lookup intent well. It does not, however, name alternatives such as semantic_search or list_cips, so the agent must infer that those are not the right fit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_code_examplesA
Read-onlyIdempotent
Inspect

Find Canton/Daml code snippets in forum posts on a topic. Filters forum_posts where the rendered HTML contains <pre> or <code> blocks AND matches the topic keyword. Canton-specific.

NameRequiredDescriptionDefault
limitNoMax rows (default 5).
topicYesTopic keyword.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond them – the AND-combination of code-block presence and topic match – but does not say how the keyword is matched (case sensitivity, substring vs token) or that results only come from forum posts already fetched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero filler: the first states purpose, the second states the filtering mechanism and domain scope. Nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, three-parameter, no-output-schema search tool, the definition is nearly complete; the schema even documents that the response echoes the full count and offset for paging. The only gap is that the description never describes the returned snippet/posts shape or ordering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies; topic, limit (default 5, max 15), and offset/paging are all documented in the schema. The description adds only that topic drives a keyword match, not the matching semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Find Canton/Daml code snippets in forum posts') and scopes it to a topic keyword, which clearly separates it from generic search tools. It does not name a specific sibling alternative (e.g. search_community), so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the filter logic ('rendered HTML contains <pre> or <code> blocks AND matches the topic keyword') and the 'Canton-specific' note scopes it to that ecosystem. There is no explicit when-to-use / when-not guidance versus semantically similar siblings like search_community, semantic_search, or search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_collaboration_opportunitiesA
Read-onlyIdempotent
Inspect

Given one Canton ecosystem project, find others with complementary tags/category that could plug in. Canton-specific. Lightweight heuristic: overlap of tags + adjacent categories.

NameRequiredDescriptionDefault
projectYesProject name or slug to look around.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine behavioral context by disclosing the mechanism ('Lightweight heuristic: overlap of tags + adjacent categories'), warning the agent that results are heuristic rather than exhaustive. It does not cover output shape or ranking, keeping 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences with no filler; the core action and the heuristic are stated up front. 'Canton-specific' is mildly redundant given the ecosystem framing but costs little.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A simple read-only, single-parameter, no-output-schema tool; the description explains the intent and the heuristic basis, which is enough for correct invocation. Only the absence of a steer toward which sibling to prefer leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single 'project' parameter is already documented. The description only restates that input is one Canton project, adding no format or slug-syntax detail beyond the schema. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('find others with complementary tags/category that could plug in') and pins the scope to the Canton ecosystem. The word 'complementary' implicitly distinguishes it from find_similar_projects, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Given one Canton ecosystem project' framing gives implied usage, and 'could plug in' hints at the collaboration use case, but there is no explicit when-to-use, when-not, or named alternative (e.g., vs find_similar_projects or detect_builder_overlap).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_duplicate_proposalsA
Read-onlyIdempotent
Inspect

Find Canton Dev Fund proposals that duplicate, re-file or overlap each other, from the proposal files compared by meaning plus identical text, title, author and organization. Without a number it lists groups (for example the same text filed twice, a team re-filing under Dev Fund 2.0, two teams building the same indexer), by default only groups with an open proposal; with a number it lists the closest proposals to that one with the evidence. Each group states its relation (exact duplicate, likely resubmission, likely duplicate by another filer, overlap, possible overlap, related by the same applicant, likely amendment), a confidence and the numbers behind it. Overlap is a lead to read both proposals, not a verdict; possible overlap is wrong more often than right, and amendments and same-applicant relations are left out unless asked for. Canton-specific.

NameRequiredDescriptionDefault
limitNoHow many groups or neighbours. Default 10, max 30. The response states the full count.
scopeNoopen (default): groups with at least one open proposal. all: every group, closed ones too.open
numberNoA proposal (PR) number: list the proposals closest to it instead of listing groups.
offsetNoSkip this many groups, for paging.
relationsNoOnly these relations. Default: exact-duplicate, likely-duplicate, likely-resubmission and overlap, the same set the Dev Fund Navigator page counts. likely-amendment (maintainer edits), same-applicant-related and possible-overlap only when asked for.
min_similarityNoRaise the similarity floor, 0 to 1 on the proposal-file comparison. Defaults are the validated thresholds.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds substantial behavioural context beyond that: it enumerates and interprets each relation type, discloses that overlap is a lead rather than a verdict and that possible-overlap is frequently wrong, and states which relations are excluded by default.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the purpose before the mode and relation semantics. The caveat sentences earn their place, though the closing tangent about overlap reliability and the trailing 'Canton-specific' are slightly loose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description explains what each returned group contains (relation type, confidence, the numbers behind it) and how paging/counting behaves, and all six parameters are documented in the schema. An agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 genuine meaning: it explains that `number` switches the whole output mode to neighbour listing, describes the Dev-Fund-Navigator default relation set versus the opt-in relations, and notes that min_similarity defaults are validated thresholds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (find Canton Dev Fund proposals that duplicate, re-file or overlap) and names the comparison basis (meaning plus identical text, title, author, organization). It is clearly distinguishable from neighbours like detect_builder_overlap, find_similar_projects and get_proposal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly spells out the two modes: without a number it lists groups, with a number it lists the closest proposals to that one with evidence. It also states the default filtering (only groups with an open proposal) and when the softer relations like amendments and same-applicant relations are returned (only when asked for).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_expertA
Read-onlyIdempotent
Inspect

Rank likely Canton experts on a topic across CCPEDIA: forum activity matching the topic, plus overall forum/GitHub volume of that author. Canton-specific.

NameRequiredDescriptionDefault
limitNoMax authors (default 5).
topicYesTopic / domain to find experts for.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe, idempotent, closed-world read profile, so the bar is lower. The description still adds real context by disclosing the ranking inputs (topic-matched forum activity plus overall forum/GitHub volume of the author) and the source corpus (CCPEDIA), which helps the agent interpret results. It omits any return-shape or limit-related behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that earns most of its words by explaining the ranking mechanism. 'Canton-specific' is mildly redundant given 'Canton experts', but there is no filler or padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter read-only tool whose annotations cover the safety profile, the description is nearly sufficient. With no output schema, it does not describe what the ranked result looks like (e.g., authors with scores), which is the one remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'topic' and 'limit' (default 5, max 15) are already documented in the schema. The description adds no syntax, format, or scoping detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Rank) and resource (likely Canton experts on a topic) and even names the ranking basis (topic-matched forum activity plus overall forum/GitHub volume). No sibling performs expert ranking, so the agent can select it decisively. 'Canton-specific' further scopes the domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the wording ('Rank likely Canton experts on a topic'), but there is no explicit when-to-use/when-not statement and no alternative tool named. An agent can infer the trigger, but must do so itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_known_issuesA
Read-onlyIdempotent
Inspect

Surface known UNRESOLVED problems matching a free-text description: forum threads with zero replies but high views, plus open GitHub issues. Answers "is anyone else hitting this?". Canton-specific. Does NOT return fixes, solutions, config, or how-to steps, and returns nothing when no open issue matches; for "how do I fix / configure / why does X happen" use semantic_search (then get_doc) instead.

NameRequiredDescriptionDefault
limitNoMax rows per source (default 5).
descriptionYesWhat you're seeing. Short prose, not a stack trace (for that use diagnose_error).

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds the traits annotations cannot express: what the result set is composed of, that it returns no fixes/solutions/config, and that it returns nothing at all when no open issue matches. Empty-result and negative-output disclosure is exactly the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then exclusions, then routing. Dense but every clause carries routing or scope information. It is a single heavy run-on block rather than cleanly separated sentences, which slightly reduces scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 convey what comes back, and it does: unresolved forum threads plus open GitHub issues, with an explicit empty-result case. Together with the fully documented 2-param schema and read-only annotations, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so 'description' and 'limit' are already fully documented in the schema, including the not-a-stack-trace guidance and the max-15 per-source cap. The description adds only the phrase 'free-text description', so the schema does the heavy lifting and baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with explicit scope: 'surface known UNRESOLVED problems' and enumerates the exact corpus ('forum threads with zero replies but high views, plus open GitHub issues'). This is clearly distinguished from sibling search tools like search_github_issues and semantic_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when/when-not routing: use it to answer 'is anyone else hitting this?', do NOT use it for 'how do I fix / configure / why does X happen', where it names the alternative path (semantic_search then get_doc). The schema reinforces with a pointer to diagnose_error for stack traces.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_maintainer_guidanceA
Read-onlyIdempotent
Inspect

Surface forum/mailing posts authored by top-volume Canton contributors (likely maintainers) on a topic. Canton-specific. Use when you want to weight expert voices over the general forum.

NameRequiredDescriptionDefault
topicYesTopic keyword, e.g. "topology", "wallet", "DAR upload".

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description's value-add is the ranking/selection heuristic: results are by 'top-volume' authors who are only 'likely maintainers', which warns the agent the output is a heuristic signal, not authoritative. It still says nothing about result count, ranking tie-breaks, or time window.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and resource, and the 'Canton-specific' clause earns its place as a scope limiter against broader search siblings. No padding or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 carry the return-shape burden but only says 'posts' – no indication of result count, fields, or ordering, which matters for a ranking-based retrieval tool. The when-to-use and scope coverage is good, so this is adequate but with a visible gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter and schema description coverage is 100%, with the schema itself supplying examples ('topology', 'wallet', 'DAR upload'). The description only restates 'on a topic' and adds no format or matching semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (surface) and resource (forum/mailing posts authored by top-volume Canton contributors) plus the scoping rationale (likely maintainers). It is clearly distinguishable from generic siblings like search_community or get_discussion, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you want to weight expert voices over the general forum' gives a concrete selection condition and implicitly contrasts with general forum search tools. It lacks an explicit when-not / named-alternative statement, 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.

find_rfp_for_ideaA
Read-onlyIdempotent
Inspect

Given a project idea, find which Canton Dev Fund RFP(s) it fits and how crowded that area is. Matches the idea against the RFP texts in the 2026-2028 roadmap (shared terms, shown), then for the best fits shows what the Foundation asks for, its stated appetite for grants, and the proposals that declare the RFP. Also shows the existing Dev Fund proposals closest to the idea by text whether or not they declared an RFP, because most never did. The match is lexical, so a fit with few shared terms is weak and flagged as such. If no RFP fits, the idea can still be filed as an individual initiative (outside the roadmap). Canton-specific. For the full RFP list use list_rfps; to include ecosystem projects as well as proposals use detect_builder_overlap.

NameRequiredDescriptionDefault
ideaYesOne-paragraph project idea or capability description.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real behavioral context beyond them: the matching is lexical so weak fits are flagged, most proposals never declared an RFP, and it returns both declaring proposals and text-nearest proposals. This is substantive disclosure not present in structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded in the first sentence, and the remaining sentences each carry distinct information (match mechanics, weak-fit caveat, no-fit fallback, sibling routing). It is dense but nearly every clause earns its place; slightly long for a single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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-value burden and does so: it explains what the best fits show (Foundation asks, grant appetite, declaring proposals) and the nearest-text proposals. Combined with the no-RFP fallback and sibling pointers, an agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already documents it fully. The description restates the input as 'a project idea' but adds no format, length, or syntax guidance beyond what the schema provides. 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Given a project idea, find which Canton Dev Fund RFP(s) it fits') plus a secondary outcome (crowdedness). It explicitly names the siblings it is not (list_rfps, detect_builder_overlap), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: 'For the full RFP list use list_rfps; to include ecosystem projects as well as proposals use detect_builder_overlap.' It also handles the negative case ('If no RFP fits, the idea can still be filed as an individual initiative'), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_security_patchesA
Read-onlyIdempotent
Inspect

Surface release notes likely to contain security or CVE fixes. Canton-specific. Heuristic: matches release bodies containing security / CVE / vulnerability / patch keywords.

NameRequiredDescriptionDefault
limitNoMax rows (default 10).

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: matching is a keyword heuristic over release bodies, so results are probable rather than authoritative and may miss rewording or false-positive on incidental mentions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool surfaces before moving to scope then mechanism. No filler, no repetition of the title, and the heuristic caveat arrives last where it belongs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, annotation-covered read tool with no output schema, the description supplies the essentials: subject matter, domain, and the matching mechanism. It leaves the agent guessing about result shape, ordering, and whether zero matches means "no security releases" or "keyword miss," which is a minor but real gap 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single `limit` parameter is fully described in the schema (max 30, min 1, default 10), so the schema does the heavy lifting. The description contributes nothing about the parameter, which is the correct baseline of 3 for near-total schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Surface release notes") scoped to security/CVE fixes, with "Canton-specific" narrowing the domain. It never names a sibling such as search_release_notes, so an agent must infer the boundary between this narrow filter and the general release-note search on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the security/CVE framing and the stated keyword heuristic, which tells the agent this is the targeted lookup rather than a broad search. However, there is no explicit when-to-use, no when-not-to-use, and no named alternative to route to when this heuristic surfaces nothing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_similar_projectsA
Read-onlyIdempotent
Inspect

Find Canton ecosystem projects most similar to a free-text description by matching across title + category + description + tags: searches only the live ecosystem directory. Canton-specific. Useful before proposing a project to check overlap; to also check pending/past Dev Fund proposals for the same idea, use detect_builder_overlap instead.

NameRequiredDescriptionDefault
limitNoMax rows (default 10).
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.
descriptionYesProject description / idea.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and closed-world scope. The description adds a crucial behavioral constraint not in annotations: it searches only the live ecosystem directory (not proposals or other sources), and it is Canton-specific. No return-value details are given, but pagination is covered 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and scope, and the alternative is stated efficiently. The sentence is a bit dense with colons but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only similarity search with full schema coverage and annotations, the description provides all necessary context: what it does, what it searches, when to use it, and which sibling to use for a related task. No output schema exists, but pagination behavior is described in the schema for offset.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well documented. The description clarifies that 'description' is the free-text query and what fields are matched against, but adds nothing about limit/offset beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Find'), resource ('Canton ecosystem projects'), and matching scope ('free-text description by matching across title + category + description + tags'). It also explicitly distinguishes itself from sibling detect_builder_overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use ('Useful before proposing a project to check overlap') and names the alternative for a related but different need ('to also check pending/past Dev Fund proposals... use detect_builder_overlap instead').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

full_contextA
Read-onlyIdempotent
Inspect

Single free-text query across CCPEDIA's entire corpus at once: docs, CIPs, forum, mailing, GitHub items, blog, videos, whitepapers, ecosystem projects. Canton-specific. Use for an exhaustive cross-source roundup on a topic described in words, even if that topic happens to be a known CIP's nickname (e.g. 'featured app locking'). This tool does not require a CIP id. If the user already gives a specific CIP id/number, use get_cip_citations instead for a deeper single-CIP citation graph. For narrow single-source searches prefer the specialised tools.

NameRequiredDescriptionDefault
topicYesTopic / question.
limit_per_sourceNoMax rows per source (default 3).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and a closed world, so the safety profile is covered. The description adds useful scope context: the exact corpus searched, Canton-specificity, and that no CIP id lookup is performed. It stops short of describing result volume or how cross-source results are merged, which would be the remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and corpus, then routing rules. The long source enumeration and two worked examples add length, but each clause carries routing or scope information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 conveys corpus scope, cross-source nature, and the CIP-id boundary. What is missing is any indication of result shape or ranking across the many sources, which matters for a tool that fans out to a dozen corpora.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 baseline is 3. The description goes slightly beyond by emphasizing the free-text nature of the query ('topic described in words', including nickname-style phrases), clarifying how to populate the required parameter. limit_per_source is not discussed, so it is not a full 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('single free-text query across CCPEDIA's entire corpus') and enumerates the covered sources precisely. It also distinguishes itself from siblings by noting it does not require a CIP id and by naming get_cip_citations as the single-CIP alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('exhaustive cross-source roundup on a topic described in words'), when-not ('narrow single-source searches prefer the specialised tools'), and names the specific alternative with a triggering condition ('if the user already gives a specific CIP id/number, use get_cip_citations'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_api_referenceA
Read-onlyIdempotent
Inspect

Get a structured reference (ports, endpoints, services, links) for one specific Canton Network API: JSON Ledger API, gRPC Ledger API, Scan API, Validator API, Token Standard APIs, Admin API, or Splice HTTP. Canton-specific. Not for GitHub, REST, or non-Canton APIs. Use when the user names one of these Canton APIs; use search/semantic_search for broader doc lookups.

NameRequiredDescriptionDefault
apiYesWhich API to look up.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=false, so the safety profile is fully carried by structured data. The description adds only the return content ('ports, endpoints, services, links'), which is genuinely useful in the absence of an output schema but is not deep behavioral context. A 3 is appropriate given the annotations do the heavy lifting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all front-loaded: purpose plus contents first, then scope exclusions, then the routing rule. Nothing is repeated and every clause carries new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-enum lookup tool with annotations covering safety, the description supplies the two things not in structured data: the scope boundary and a sketch of the returned reference. Without an output schema, a slightly fuller picture of the returned shape would be ideal, but an agent has enough to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's enum is self-documenting, which sets the baseline at 3. The description adds value by rendering the enum values as human-readable API names ('Token Standard APIs', 'Splice HTTP'), helping match those to how a user phrases the request. It stops short of clarifying ambiguous cases between similar APIs, so it is a modest gain, not a full one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a structured reference') and enumerates exactly what the reference contains (ports, endpoints, services, links) and which seven APIs are covered. It explicitly rules out GitHub, REST, and non-Canton APIs, so an agent can separate it from the many doc-fetching siblings 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('use when the user names one of these Canton APIs') and names the alternatives for the other case ('use search/semantic_search for broader doc lookups'). Negative scope is also stated ('Not for GitHub, REST, or non-Canton APIs'), so both the when and the when-not are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_app_metricsA
Read-onlyIdempotent
Inspect

Fetch metrics for one specific Featured App by its app_id (contract id from the Scan API). Returns name, category, TVL, 24h volume, user count, and last activity from the Featured Apps registry. Canton-specific. TVL / volume / users may be null when only the Scan API source is available.

NameRequiredDescriptionDefault
app_idYesFeatured-app contract id, or a unique prefix of it as shown by list_featured_apps.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description still adds real value beyond them: it enumerates the returned fields and warns that TVL/volume/users may be null when only the Scan API source is available, which prevents an agent from treating nulls as an error.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action and scope, then the return payload and the null caveat. No filler, though the return-field list could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the explicit enumeration of returned fields plus the null-source caveat is exactly the compensation needed. What remains uncovered is minor: error behavior for an unknown or ambiguous prefix.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents both the contract-id meaning and prefix support. The description's '(contract id from the Scan API)' largely restates the schema, so it adds only marginal meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Fetch metrics for one specific Featured App by its app_id') and scopes it to a single app, which distinguishes it from the plural listing tool. It does not name list_featured_apps as the sibling that produces those ids in the description itself, keeping it 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'one specific Featured App' implies you need an app_id in hand, and the schema points to list_featured_apps for discovery. However, there is no explicit when-to-use/when-not or named alternative in the description, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_asset_supplyA
Read-onlyIdempotent
Inspect

Get total token supply for a Canton-ecosystem asset: Canton Coin (CC), CBTC, HECTO, HANDL, USDCx, EDELx, or cETH. Omit the asset param to get all seven. Each row carries provenance: Canton Coin's supply is chain_derived (verifiable via the Global Synchronizer Scan registry); every other asset's supply is issuer_reported (CIP-0056 states on-ledger publication does not allow independent verification of total supply, since the holdings it's computed from are private) - treat those numbers as the issuer's own claim, not an audited fact. Holder counts are usually not_disclosed (Canton's privacy model hides holdings from third parties by design) and appear as null, not zero. Sourced from CCTools' public API. Canton-only; cannot price or size-supply any other chain's tokens.

NameRequiredDescriptionDefault
assetNoSlug or symbol to filter to one asset, e.g. "cbtc", "CBTC", "canton-coin", or "CC". Case-insensitive. Omit for all seven.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, but the description adds substantive context the schema can't: provenance semantics (chain_derived for CC vs issuer_reported for everything else), the CIP-0056 reason those numbers aren't audited, and that holder counts appear as null rather than zero. This is exactly what an agent needs to avoid misusing the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then the caveats, then the scope limit. The provenance sentence is long but every clause earns its place given the unreliable-data warning it conveys; slightly dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 full return-shape burden and does so: it explains what each row contains (provenance), how holder counts surface (null, not zero), and where data originates (CCTools public API). Nothing an agent needs to interpret the response is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents case-insensitivity and the omit-for-all behavior, so baseline is 3. The description adds value by enumerating the concrete valid asset set (CC, CBTC, HECTO, HANDL, USDCx, EDELx, cETH), which the schema only gestures at with two examples, reducing the chance of an invalid slug.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get total token supply') and enumerates the exact asset universe (CC, CBTC, HECTO, HANDL, USDCx, EDELx, cETH). The scope clause 'Canton-only; cannot price or size-supply any other chain's tokens' cleanly separates it from siblings like get_token_market and get_network_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: omit the asset param to return all seven, and use it only for Canton-ecosystem assets. The exclusion ('cannot price or size-supply any other chain's tokens') is a useful when-not boundary, though it never names an alternative tool to use instead when the data isn't Canton-scoped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_blog_postA
Read-onlyIdempotent
Inspect

Get one blog post by the id list_blog_posts or search gave: title, kind, author, date and the text. Articles, news and press releases from Canton, Digital Asset and the Canton Foundation and network notices are returned in full; reprints and partner press are returned as an excerpt with a link to the original, the same as the website. Pass offset to keep reading a long post past the first part.

NameRequiredDescriptionDefault
idYesPost id, for example "www-canton-network-blog-canton-summit-2026-takeaways".
charsNoCharacters of text to return. Default 12000; raise it (max 200000) for the whole post, or set 0 for metadata only.
offsetNoCharacter position to start reading from, for a long post. The response names the offset that continues the read.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile (readOnly, idempotent, closed-world), and the description adds real behavioral detail on top: articles, news, and press releases come back in full, while reprints and partner press are truncated to an excerpt with a link, and long posts are paginated via offset. It omits error behavior for an invalid id and whether offsets beyond the end are safe.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first clause is front-loaded with the core action, and every sentence carries information (fields, id provenance, excerpt policy, pagination). The phrasing is dense and slightly awkward ('by the id list_blog_posts or search gave'), but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter read tool with annotations and no output schema, the description covers what is returned, how truncation and excerpts work, and how to page. Only edge-case behavior (bad ids, offset past the end) is unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 a step up by explaining that some post kinds return only an excerpt, which is important context for interpreting chars and offset. The id and chars semantics themselves are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Get one blog post'), states the return fields (title, kind, author, date, text), and explicitly ties the required id to sibling tools ('the id list_blog_posts or search gave'), which cleanly separates it from list_blog_posts and search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent where ids come from (list_blog_posts or search) and when to use offset ('to keep reading a long post past the first part'). It does not explicitly say when not to use it (for example, 'do not use this to browse posts, use list_blog_posts'), so it stops short of a full routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_breaking_changesA
Read-onlyIdempotent
Inspect

Compare two Canton/Daml/Splice SDK versions and return the list of changes between them: release notes from github_releases plus any forum/GitHub reports near the release window. Canton-specific. Use when a developer is planning an upgrade and asks "what breaks moving from X to Y?". Pass version strings as they appear in github_releases tags (with or without the leading "v").

NameRequiredDescriptionDefault
repoNoOptional repo hint: "canton", "splice" (alias for decentralized-canton-sync), "daml", or a full owner/name. Auto-inferred from version shape when omitted.
to_sdkYesTarget version, e.g. "0.6.10" or "v3.5.6".
from_sdkYesOrigin version, e.g. "0.5.0" or "v3.4.0".

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false, openWorld=false, so the safety profile is covered. The description adds real behavioral value by disclosing what the result is composed of (github_releases notes plus forum/GitHub reports near the release window), which tells the agent the output is an aggregated synthesis rather than a raw changelog. It stops short of mentioning any gaps in coverage or freshness limits of those sources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose, then the trigger, then a format hint. Every sentence carries information, though the trailing version-string sentence overlaps with what the schema already provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, no-output-schema tool with fully documented params, the definition covers purpose, trigger, data sources, and input format. What is missing is minimal: no indication of result shape/size or how partial coverage is signaled, but an agent can call this correctly as written.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all three params documented, including repo alias resolution and auto-inference), so the baseline is 3. The description's only added guidance is that version strings should match github_releases tags with or without a leading 'v', which largely restates the schema's own examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource+scope: compares two Canton/Daml/Splice SDK versions and returns the changes between them, aggregating release notes and community reports. It also stakes out a domain boundary ('Canton-specific'), which distinguishes it from generic siblings like search_release_notes or get_sdk_changelog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger condition: 'Use when a developer is planning an upgrade and asks what breaks moving from X to Y?' That is clear context and a concrete user intent. It does not, however, name alternatives or exclusions (e.g. vs get_sdk_changelog, check_deprecation, or find_security_patches), so routing between near-neighbors is still left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cipA
Read-onlyIdempotent
Inspect

Fetch the full markdown body of a single Canton Improvement Proposal (CIP) by its ID (e.g. "CIP-0042", "0042", "PR-0117"). Returns only what the proposal SAYS. To learn whether that CIP was approved, enforced, or acted on ON CHAIN, use get_cip_vote_outcome instead: reading the proposal text does not tell you its on-chain fate. For the status timeline use get_cip_history; to browse or filter multiple CIPs use list_cips. Canton/Daml/Splice ecosystem only, not Cardano or other CIP schemes.

NameRequiredDescriptionDefault
idYesCIP ID: "0001", "CIP-0042", or "PR-0117"

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context — that the returned content is the proposal text only and does not reveal on-chain fate — but says nothing about truncation, size limits, or return shape for large bodies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, all front-loaded with the core purpose first, then sibling routing, then scope restriction. Every sentence carries routing or scope value, though the sibling enumeration is dense enough that it could be trimmed slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 carries the burden of describing the return, and it does: 'full markdown body', 'Returns only what the proposal SAYS'. Combined with complete sibling routing and scope exclusion, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'id' parameter is already documented with the same example formats ("0001", "CIP-0042", "PR-0117"). The description repeats these examples but adds no syntax or resolution semantics beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch), resource (full markdown body of a single CIP), and selector (by ID), with example ID formats. It also disambiguates scope explicitly with 'Returns only what the proposal SAYS', so an agent can distinguish it from siblings like get_cip_vote_outcome and get_cip_history without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names three alternatives and the exact condition that selects each: get_cip_vote_outcome for on-chain fate, get_cip_history for the status timeline, list_cips for browsing/filtering multiple. It also excludes the wrong ecosystem ('Canton/Daml/Splice only, not Cardano'), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cip_attachmentsA
Read-onlyIdempotent
Inspect

Get the file/PDF attachments of a single Canton Improvement Proposal (CIP): supporting documents and signed-vote-record PDFs, with filename, page count, URL, and the full text CCPEDIA has extracted from each. Many older CIPs publish the proposal ITSELF as a PDF and leave only a header block in markdown, so for those this returns the actual proposal text and get_cip returns the index entry. For the parsed who-voted-how breakdown use get_cip_votes. Canton ecosystem only. Not Cardano or other 'CIP' schemes.

NameRequiredDescriptionDefault
idYesCIP ID: "0001", "CIP-0042"

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, closed-world, so the safety profile is covered. The description adds valuable behavioral context: the surprising case where old CIPs put the actual proposal text in attachments while get_cip only returns a header block, plus the exact return contents. It stops short of pagination/empty-result behavior, so not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and return payload, then the routing and scope caveats. Dense and mostly waste-free, though the return-field enumeration and the disambiguation clauses make it a longish block rather than a tight one.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description fully describes the returned fields, and annotations cover the safety/idempotency profile. It even pre-empts the confusing edge case where the attachment carries the real proposal text, so an agent has everything needed to call and interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'id' parameter is documented with format examples ("0001", "CIP-0042"), so the schema does the heavy lifting. The description adds no syntax or format detail beyond what the schema provides, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (file/PDF attachments of a single CIP), enumerates the returned fields (filename, page count, URL, extracted text), and explicitly distinguishes itself from siblings get_cip and get_cip_votes. An agent can tell exactly what it retrieves 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: use get_cip for the index entry vs this tool for actual proposal text in older PDF-only CIPs, and use get_cip_votes for the who-voted-how breakdown. It also states scope boundaries ('Canton ecosystem only. Not Cardano or other CIP schemes'), which is a when-not rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cip_citationsA
Read-onlyIdempotent
Inspect

Comprehensive citation graph for a Canton Improvement Proposal (CIP): every place across CCPEDIA's corpus that references CIP-N. Returns per-source counts AND samples for: sibling CIPs (declared requires: or content-mentions), individual forum posts (not just topic count), individual mailing-list messages (all indexed lists.sync.global groups; no group is excluded), GitHub items (issues + PRs + dev-fund proposals across all indexed Canton repos), blog posts (third-party coverage), and YouTube videos (transcript matches). CCPEDIA-unique: joins through our parsed mailing_messages.cip_id column give per-message granularity no other source has. Use when an agent needs 'who is referencing CIP-X and where' / impact analysis, and a specific CIP id is already known. For the proposal's own text use get_cip, for its votes use get_cip_votes, for the legacy aggregated counts use get_cip_mentions. For a general topic or feature name with NO known CIP id. E.g. 'featured app locking' rather than 'CIP-0116'. Use full_context instead, which searches by free text across the whole corpus rather than requiring an id. Canton/Daml/Splice ecosystem only.

NameRequiredDescriptionDefault
cip_idYesCIP id, e.g. "CIP-0056", "0056", "PR-0117". Padded or unpadded both accepted.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial beyond-schema context: per-source granularity (individual posts and messages, not just counts), full mailing-list scope with no exclusions, and the CCPEDIA-unique mailing_messages.cip_id join. It also discloses corpus scope (Canton/Daml/Splice only).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and benefit, and the source enumeration is dense but useful. It runs long and has minor repetition of the CCPEDIA value proposition, but every sentence largely earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param, annotation-covered read tool with no output schema, the description fully conveys what is returned (per-source counts and samples) and where it draws from, leaving nothing an agent needs in order to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single cip_id param already documents accepted formats (padded/unpadded, PR-xxxx). The description adds little param-specific detail beyond the ecosystem/ID requirement, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('comprehensive citation graph for a CIP') and precisely enumerates what it covers across sources (sibling CIPs, forum posts, mailing-list messages, GitHub, blog, YouTube). It cleanly distinguishes itself from get_cip, get_cip_votes, and get_cip_mentions by naming their distinct scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('who is referencing CIP-X and where', impact analysis, with a known CIP id), and routes to alternatives: get_cip for proposal text, get_cip_votes for votes, get_cip_mentions for legacy counts, full_context for free-text with no known id. Exclusions are clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cip_historyA
Read-onlyIdempotent
Inspect

Get the status-transition timeline of a single Canton Improvement Proposal (CIP): each dated from->to change (e.g. Draft->Review->Final). Use for 'how/when did CIP-X move through governance' questions. Returns history only, not the proposal body (get_cip) or vote tallies (get_cip_votes). Canton ecosystem only. Not Cardano or other 'CIP' schemes.

NameRequiredDescriptionDefault
idYesCIP ID: "0001", "CIP-0042", or "PR-0117"

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description still adds real value by scoping the return content (history only, no proposal body or vote tallies) and disambiguating the 'CIP' namespace. It stops short of describing pagination or ordering guarantees for the timeline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it returns, when to use it, and what it is not — the routing exclusions are front-loaded rather than buried. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Single required param, full schema coverage, no output schema — the description already conveys the return content (dated from->to transitions) and the scope boundaries, which is everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself supplies ID format examples ("0001", "CIP-0042", "PR-0117"). The description adds nothing about the id parameter beyond what the schema already documents, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (status-transition timeline of a single CIP) and illustrates the output shape (Draft->Review->Final). It explicitly distinguishes itself from get_cip and get_cip_votes, so an agent can separate the three 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('how/when did CIP-X move through governance' questions) and names the alternatives to use instead for other needs (get_cip for the body, get_cip_votes for tallies). Ecosystem scoping (Canton only, not Cardano) removes a realistic collision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cip_implementation_statusA
Read-onlyIdempotent
Inspect

For one CIP, report whether code/grants are tracking the proposal: linked dev-fund PRs, related ecosystem projects, status transitions. Canton governance. Use after find_cip_for_feature to gauge readiness.

NameRequiredDescriptionDefault
cip_idYesCIP id, e.g. "0112", "CIP-0112", "PR-0088".

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds useful non-annotation context by naming the three data sources it aggregates (dev-fund PRs, ecosystem projects, status transitions), which tells the agent what dimensions of 'tracking' come back. It does not mention freshness, rate limits, or behavior when no code links exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the action and the payload, then the usage note. 'Canton governance.' is a fragment that adds domain scoping but is slightly terse; nothing is wasted overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 saying what comes back, and it does list the three evidence categories. Combined with annotations covering the safety profile and a fully documented single parameter, an agent has enough to invoke and interpret it; only return-format details (e.g. links, counts, status vocabulary) are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage, including accepted ID formats ('0112', 'CIP-0112', 'PR-0088'). The description adds nothing about the identifier beyond what the schema already documents, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: report whether code/grants are tracking a given CIP, enumerating the evidence types (dev-fund PRs, ecosystem projects, status transitions). That is far more than a restatement of the name. It stops short of explicitly differentiating itself from near-neighbors like get_cip_history or get_cip, leaving that inference to the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit sequencing advice: 'Use after find_cip_for_feature to gauge readiness,' which tells the agent both the preceding call and the decision context. There is no statement of when not to use it or which sibling to prefer for adjacent questions, 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.

get_cip_mentionsA
Read-onlyIdempotent
Inspect

Find every place that references a given Canton Improvement Proposal (CIP): forum threads, mailing-list posts, blog articles, Dev Fund grant proposals, and sibling CIPs that require/cite it. A reverse-reference (backlink) lookup: use for 'who is discussing CIP-X and where' / impact questions. Returns aggregated per-source counts, not individual items. For individual forum posts/mailing messages and CCPEDIA's finer per-message mailing-list granularity, use get_cip_citations instead. Not for the proposal's own text (get_cip) or its vote records (get_cip_votes). Canton ecosystem only. Not Cardano or other 'CIP' schemes.

NameRequiredDescriptionDefault
idYesCIP ID: "0001", "CIP-0042", or "PR-0117"

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value beyond them: it discloses output granularity ('aggregated per-source counts, not individual items') and scope boundaries ('Canton ecosystem only. Not Cardano or other CIP schemes').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but front-loaded: the core verb and source list come first, followed by the use case, output granularity, and sibling routing. Every sentence carries routing or behavioral information, though the multi-clause sentences are slightly heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 explains what comes back ('aggregated per-source counts'), the scope, and the exact alternatives for adjacent needs. Nothing an agent needs to select and invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema coverage, so the schema already documents the id format ('0001', 'CIP-0042', 'PR-0117'). The description refers to 'a given CIP'/'CIP-X' but adds no format or syntax detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (reverse-reference/backlink lookup of CIP mentions) and enumerates the source types covered. It explicitly names the sibling it is not (get_cip_citations, get_cip, get_cip_votes), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use trigger ('who is discussing CIP-X and where' / impact questions) and names alternatives with the exact condition that selects them (individual posts/messages → get_cip_citations; proposal text → get_cip; votes → get_cip_votes). No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cip_vote_outcomeA
Read-onlyIdempotent
Inspect

Find out whether a Canton Improvement Proposal (CIP) was actually acted on ON CHAIN, and how. Returns every DSO governance vote request whose text cites this CIP, with outcomes and dates. This answers 'was it decided', which the mailing-list tools cannot: get_cip_votes reads the discussion on the cip-vote list, this reads the ledger. Example: CIP-0116 (Featured App Locking) is cited in dozens of requests that paused apps for non-compliance. Canton ecosystem only, not Cardano or other CIP schemes.

NameRequiredDescriptionDefault
limitNoHow many vote requests to return, newest first. Default 20, max 100. The response states the full count either way.
cip_idYesCIP id, e.g. "CIP-0116", "116", "0116".

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the data source is the ledger rather than discussion threads, and it returns the full set of citing vote requests with dates. It stops short of noting auth needs or result-size behavior beyond what the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and return value are front-loaded, and every sentence carries routing value (distinction, example, scope). The CIP-0116 illustration is longer than strictly necessary but does help an agent recognize the data pattern being queried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of describing the return contents (vote requests, outcomes, dates) and the scope limitation. It could say slightly more about the response shape or result size, but it is sufficient for an agent to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (cip_id, limit) are documented in the schema itself, including accepted id formats and pagination bounds. The description adds no parameter-level detail beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find out whether a CIP was actually acted on ON CHAIN') and names what is returned (DSO governance vote requests citing the CIP, with outcomes and dates). It explicitly distinguishes itself from the closest sibling, get_cip_votes, and scopes itself to the Canton ecosystem.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly frames the when-to-use question ('was it decided') and contrasts the alternative: get_cip_votes reads the cip-vote mailing list, this reads the ledger. It also states an exclusion boundary (Canton only, not Cardano or other CIP schemes), so routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cip_votesA
Read-onlyIdempotent
Inspect

Get the cip-vote mailing-list messages for a specific Canton Improvement Proposal (CIP), oldest first: the raw discussion trail as sent, with each SV/participant's vote stated in their message body ("… votes in favor / not in favor"). This is the message thread, NOT a pre-computed count; the first message is usually the proposal announcement, not a vote. For the on-chain accept/reject tally use get_cip_vote_outcome. Use for reading who said what on Governance-type CIPs. Not the attachment PDFs (get_cip_attachments) or status timeline (get_cip_history). Canton ecosystem only. Not Cardano or other 'CIP' schemes.

NameRequiredDescriptionDefault
limitNoHow many messages (oldest first) to return. Default 25, max 100. The header states the full count and the range shown.
cip_idYesCIP id, e.g. "0117", "0118", or "CIP-0117". Numeric form preferred.
offsetNoSkip this many messages before returning, for paging through a long vote thread.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, closed-world safety, but the description adds real behavioral context: messages are returned oldest-first, the content is raw as-sent text where each SV states its vote in the body, and the first message is typically an announcement rather than a vote. This prevents misreading the payload as a tally. It does not discuss paging output details, but the schema covers those.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and content definition, then disambiguation. Information-dense with no filler, though the parenthetical asides and the trailing 'Canton only / not Cardano' sentences make it denser than strictly needed for a single-purpose read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a read-only tool with full schema coverage, existing annotations, and no output schema, the description supplies everything an agent needs: what is returned, ordering, interpretation caveats, sibling routing, and scope boundaries. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and every parameter (cip_id, limit, offset) is documented in the schema including formats, defaults, and the header/count behavior. The description adds only the 'oldest first' ordering hint, which is marginal beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the cip-vote mailing-list messages for a specific CIP') and immediately defines the scope: raw message thread, oldest first, NOT a computed count. It explicitly names the sibling it is not (get_cip_vote_outcome) so an agent can distinguish it 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use (reading who said what on Governance-type CIPs) and when-not (on-chain tally, attachment PDFs, status timeline), each routed to a named alternative. It even scopes the ecosystem ('Canton only, not Cardano'), removing ambiguity from the overloaded 'CIP' term.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_versionsA
Read-onlyIdempotent
Inspect

Get the freshest Canton SDK, Splice, Daml, and DPM versions ALL AT ONCE, plus per-network Splice deployment status (DevNet / TestNet / MainNet) and any upcoming synchronizer-upgrade windows. Derived live on every call from two CCPEDIA-only joins: github_releases (latest stable tag per repo) + mailing_messages (validator-announce list). This is fresher than the Foundation Build-on-Canton KB snapshot, which can lag by weeks. Use this when a user asks "what version should I target?", "is Splice X.Y.Z still current?", "what is on MainNet?". Anything time-sensitive about Canton/Splice/Daml/DPM versioning across MULTIPLE packages. If the user names ONE specific package and wants its release notes, use get_latest_release instead.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/destructive/openWorld, so the safety profile is handled. The description adds genuinely useful behavior beyond that: it discloses the derivation (two CCPEDIA-only joins, latest stable tag per repo + validator-announce list) and a freshness guarantee versus the Foundation KB snapshot that can lag weeks. It does not describe pagination or response shape, but no output schema exists and the tool is parameterless, so the gap is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and every sentence carries weight (scope, derivation, freshness, usage, alternative). It is slightly verbose with emphatic phrasing ('ALL AT ONCE') and stacked example questions, but nothing is filler and the structure routes the agent efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only, idempotent tool with no output schema, the description supplies everything needed to select and call it: covered resources, data provenance, freshness characteristics, and the competing sibling. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate. The description does not introduce any parameter semantics, which is appropriate given the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource set (Canton SDK, Splice, Daml, DPM versions plus per-network deployment status and upgrade windows) and clearly distinguishes itself from siblings like get_latest_release and get_sdk_changelog. An agent can tell exactly what this returns without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggering questions ('what version should I target?', 'is Splice X.Y.Z still current?', 'what is on MainNet?'), a scope condition (MULTIPLE packages), and a named exclusion routing to get_latest_release for single-package release notes. This is textbook when/when-not/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_defi_poolsA
Read-onlyIdempotent
Inspect

Get per-pool DeFi liquidity data on Canton from OneSwap, Send, and Tradecraft: pair, TVL, fee rate, APY, and reserve amounts. This is pool-level detail; for aggregate protocol-level TVL across all of Canton DeFi use get_token_market instead (that one also lists Cantex, which this tool does not cover - Cantex's own API has been down and CCTools marks its numbers stale). Sourced from CCTools' public API. Canton-only.

NameRequiredDescriptionDefault
protocolNoRestrict to one DEX. Omit for all three.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful non-annotation context: source attribution (CCTools public API), a Canton-only scope constraint, and a data-freshness warning about Cantex. It stops short of describing return format or pagination, but with no output schema that gap is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and fields, then the disambiguation. The Cantex parenthetical is a touch wordy and slightly interrupts the routing sentence, but every clause carries real information (coverage gap, staleness reason). No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, no-output-schema pool query the description covers purpose, fields returned, source, scope, coverage caveat, and the alternative tool. Without an output schema, more detail on the response shape would help, but the field enumeration partially compensates. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single enum parameter is fully documented ('Restrict to one DEX. Omit for all three.'). The description's listing of OneSwap, Send, and Tradecraft mirrors the enum values without adding syntax or default behavior beyond what the schema already states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('Get per-pool DeFi liquidity data') with named fields (pair, TVL, fee rate, APY, reserves), named sources (OneSwap, Send, Tradecraft), and explicit sibling differentiation from get_token_market (pool-level vs aggregate protocol-level). An agent can distinguish this from get_token_market 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use this for pool-level detail, use get_token_market for aggregate protocol-level TVL. It even explains why the alternative differs (Cantex coverage) and flags a caveat (Cantex API down, numbers marked stale). When-to-use and when-to-use-the-other are both stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dev_fund_activityA
Read-onlyIdempotent
Inspect

What happened in the Canton Dev Fund lately, newest first: new comments and reviews with a snippet, and (optionally) timeline events such as labels added, reviewers requested, proposals renamed, merged, closed or moved on the project board. Use for "what is going on in the Dev Fund", "what did the committee say this week", "which proposals just got reviewed". Canton-specific.

NameRequiredDescriptionDefault
daysNoLook back this many days. Default 7, max 120.
limitNoHow many entries. Default 20, max 50.
offsetNoSkip this many entries, for paging.
include_eventsNoAlso list timeline events (labels, reviewer requests, renames, board moves). Default true.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds behavior beyond that: newest-first ordering, snippet-bearing comments/reviews, and the concrete event types that appear when include_events is on. It stops short of describing result shape or volume limits, which matters given there is 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded: the payload is stated before the example queries. The example-question list is slightly redundant with the opening clause, but each sentence still carries routing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the necessary work of explaining what comes back (comments/reviews with snippets, event types, newest-first). Paging and lookback windows are left to the schema, which documents them adequately. A note on result volume or empty-window behavior would complete it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so days/limit/offset/include_events are already documented with defaults and bounds. The description reinforces include_events ('optionally... timeline events such as labels added, reviewers requested...') but largely restates the schema, and says nothing about days/limit/offset. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource (activity in the Canton Dev Fund) and enumerates the payload precisely: comments and reviews with snippets, plus optional timeline events. It is clearly distinguishable from data-shaped siblings like get_dev_fund_lifecycle or get_dev_fund_person, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Three concrete example user questions ('what is going on in the Dev Fund', 'what did the committee say this week', 'which proposals just got reviewed') give an agent a clear trigger set. There is no explicit when-not guidance or named alternative tool, so it falls 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.

get_dev_fund_lifecycleA
Read-onlyIdempotent
Inspect

How Canton Dev Fund proposals actually move through the Foundation project board, from the recorded column history: the funnel (how many reach each column), median and p90 days in each column, time to decision, time to the first human response, how many open proposals wait on the applicant, the committee, a vote or nobody, bot labels against the board, and steps back. Pass number for one proposal: every stay in a column with the date and who moved it, its waiting state with the reason, first response, votes and steps back. Pass view "flow" for the weekly opened, voting, approved and closed counts and the open backlog. Percentiles are linear interpolation; open proposals are never mixed into completed-stay statistics; every figure carries its n and the board history has known gaps, stated in the answer. Canton-specific.

NameRequiredDescriptionDefault
viewNooverview (default) or flow (weekly numbers). Ignored when number is given.overview
numberNoA proposal (PR) number: its own history instead of the overview.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), so the description's job is to add context — and it does: percentiles are linear interpolation, open proposals are never mixed into completed-stay statistics, every figure carries its n, and the board history has known gaps that are stated in the answer. These methodological caveats are exactly the kind of trust-relevant detail an agent cannot get from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and reasonably tight for the amount of information packed in, but it is delivered as three very long, comma-chained sentences where the overview metrics, the number mode and the flow view blur together. A reader must re-parse to separate the modes, so structure is adequate rather than efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 describing returns — and it does, covering the overview funnel statistics, the single-proposal history, and the flow view separately, plus caveats about n, gaps and interpolation. Given the tool's analytical complexity, this is close to complete, with only sibling routing left uncovered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 genuinely enriches both parameters beyond the schema: for number it enumerates the returned history (every column stay with date and mover, waiting state with reason, first response, votes, steps back), and for view "flow" it lists the weekly open/voting/approved/closed counts and backlog. That is meaning the schema's one-line parameter descriptions do not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it derives the Canton Dev Fund proposal lifecycle from board column history, with a concrete metric inventory (funnel counts, median/p90 days per column, time to decision, time to first human response, waiting states, bot labels, steps back). The scope is unmistakable and analytically distinct from sibling tools like get_dev_fund_activity or list_stuck_proposals, but it never names those alternatives, so sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It does tell the agent how to use the two modes ("Pass number for one proposal", "Pass view 'flow' for the weekly ... counts"), which is real invocation guidance. However, it gives no explicit when-to-use/when-not-to-use versus the many adjacent dev-fund and proposal siblings, so routing guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dev_fund_personA
Read-onlyIdempotent
Inspect

Who is this person in the Canton Dev Fund, by GitHub login: their SIG memberships and organization (from the SIG directory), the proposals they authored, how much they comment and review (and how often they approve or request changes), which proposals asked them to review, which they were assigned, and where a champion line names them. Use to judge who a possible champion or reviewer is and how responsive they are. Canton-specific.

NameRequiredDescriptionDefault
loginYesGitHub login, e.g. "waynecollier-da" or "srikanth-bitdynamics".

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered without description help. The description adds the content scope of the lookup but says nothing about auth requirements, rate limits, or what happens if the login is unknown; with annotations carrying safety, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core identity ('Who is this person... by GitHub login') is front-loaded, and the following enumeration of returned fields plus the usage sentence are all informative rather than filler. The middle sentence is a dense run-on list, which costs a little readability, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 conveying return contents — and it does so thoroughly by enumerating the facets. Combined with the stated use case and the annotation-covered safety profile, an agent has enough to call it correctly; only lookup-failure and auth behavior remain unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the login parameter is documented in the schema with format constraints and examples. The description only restates 'by GitHub login' and adds no format, case-sensitivity, or lookup-failure semantics, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('who is this person in the Canton Dev Fund, by GitHub login') and enumerates the distinct data facets returned: SIG memberships, authored proposals, review/comment activity, review requests, assignments, and champion lines. That granularity clearly distinguishes it from siblings like search_dev_fund, get_dev_fund_activity, and find_expert.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit use case: 'Use to judge who a possible champion or reviewer is and how responsive they are.' That tells the agent when this tool is relevant, but it names no alternatives (e.g. find_expert or list_proposals_needing_champion) or explicit exclusion conditions, 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.

get_discussionA
Read-onlyIdempotent
Inspect

Get a single thread from the official Canton Network community forum (Discourse at forum-style discussions on ccpedia.xyz) by numeric topic id: title, category, view/post counts, and the first ~15 posts. Canton-only, served from CCPEDIA's cached forum index. This is the WEB FORUM. For GitHub Discussions use get_github_discussion, for sync.global mailing-list threads use get_mailing_thread. Get the id from search results or trending.

NameRequiredDescriptionDefault
idYesForum topic ID from a search result, e.g. 3242 or "topic:3242". Not a doc-page id: those go to get_doc.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, so the safety profile is covered. The description adds genuinely new traits: results come from CCPEDIA's cached forum index (staleness implication), it is Canton-only, and only the first ~15 posts are returned. Pagination or a way to fetch further posts is not disclosed, which keeps this 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and returned fields are front-loaded ahead of the sibling routing and id-sourcing hints, so the shape is good. The parenthetical '(Discourse at forum-style discussions on ccpedia.xyz)' is garbled and mildly redundant with the opening clause, costing a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 and does enumerate the return fields and the ~15-post truncation and cache caveat. It omits how to retrieve posts beyond the first ~15 or whether the cached index lags live forum state, so it is strong but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents accepted forms (3242 or "topic:3242") and excludes doc-page ids. The description only lightly reinforces the id's origin ('search results or trending'), which the schema largely covers, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get) and resource (a single forum thread) plus the exact source (Canton community forum, CCPEDIA cached index) and the fields returned (title, category, view/post counts, first ~15 posts). It is clearly distinguishable from sibling readers like get_github_discussion and get_mailing_thread.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes among alternatives: 'For GitHub Discussions use get_github_discussion, for sync.global mailing-list threads use get_mailing_thread.' It also tells the agent where to obtain the required id ('from search results or trending'), leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_docA
Read-onlyIdempotent
Inspect

Fetch the FULL text of one indexed Canton-ecosystem documentation page (Canton/Daml/Splice and integrated partner docs) by its numeric id. Canton-specific. Use this AFTER search or semantic_search returns a doc id, to read complete commands, flags, and full sections a search snippet truncates. Requires an id. Not a discovery tool; use search/semantic_search first.

NameRequiredDescriptionDefault
idYesDoc page ID from a search/semantic_search result, e.g. 3242 or "doc:3242". Not a forum topic id: those go to get_discussion.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by explaining that it returns the complete untruncated text versus a search snippet, and that an id is mandatory. It does not mention behavior on an invalid or stale id, which keeps it below 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the verb and resource, then the precondition, then the exclusion. Nothing is redundant, and the most decision-relevant constraint (use after search) appears early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, rich annotations, and no output schema, the description covers what an agent needs: what is returned (full text), the domain scope, and the prerequisite. It omits only edge behavior such as errors for invalid ids or size limits on large pages.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself documents both accepted forms (3242 or "doc:3242") and the forum-id exclusion. The description's 'Requires an id' and 'numeric id' add little, and 'numeric' slightly understates the string form the schema permits. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: fetch the FULL text of one indexed Canton-ecosystem documentation page by numeric id. It explicitly scopes the content domain (Canton/Daml/Splice and partner docs), which lets an agent separate it from get_discussion, get_api_reference, and the search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit ordering rule: use AFTER search or semantic_search returns a doc id. It also states the negative case ('Not a discovery tool; use search/semantic_search first'), and the schema reinforces routing by noting forum topic ids belong to get_discussion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ecosystem_gapsA
Read-onlyIdempotent
Inspect

Surface ecosystem gaps: high-view forum threads with zero replies (unanswered demand), mailing threads that got no reply, and open Dev Fund proposals with no label assigned (waiting for a SIG or champion). Canton-specific. Use to find "where the ecosystem needs help". For per-category funding levels use get_funding_landscape.

NameRequiredDescriptionDefault
limitNoMax rows per gap type (default 5).

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description's real added value is defining what counts as a 'gap' (zero replies, no label assigned) and the Canton-specific scoping, but it says nothing about ordering, recency windows, or how the three categories are combined in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: the gap taxonomy first, scope next, the alternative last. No filler and nothing redundant with the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of telling the agent what the result represents, and it does so for all three gap types. Minor gaps remain around result ordering and whether categories are merged or separated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema description coverage, so the schema already documents limit, its 1-20 range and default. The description's phrase 'max rows per gap type' restates the schema rather than adding interpretation, which is the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('surface') plus a precisely enumerated resource: unanswered high-view forum threads, unreplied mailing threads, and unlabeled Dev Fund proposals. The three gap categories are defined inline, so an agent knows exactly what comes back 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes a competing question away with 'For per-category funding levels use get_funding_landscape,' and gives a use framing ('where the ecosystem needs help'). It does not state a when-not condition or name the sibling list_proposals_needing_champion, which overlaps the Dev Fund gap category.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_faqA
Read-onlyIdempotent
Inspect

Look up answers in the Canton Network developer FAQ (Canton Foundation curated, hackathon-tested): Canton/Daml installation, party creation, Daml contracts, Ledger/Scan APIs, testnet deployment, Canton Coin/token standard, common gotchas. Returns the 3 NEAREST FAQ entries, which may not exactly match. Canton-specific, do NOT use for other blockchains or general/non-Canton questions. If none of the 3 directly answers the question, or the user needs specific config values, commands, or parameters, use semantic_search over the full docs (then get_doc) rather than answering from a near-miss. For a full onboarding path use get_started_guide; for API endpoint details use get_api_reference.

NameRequiredDescriptionDefault
questionYesDeveloper's question, e.g. "how do I install", "create party", "deploy to testnet".

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety bar is pre-covered. The description adds genuinely useful behavior beyond that: it returns the 3 NEAREST entries which may not exactly match, a near-miss caveat that changes how an agent should trust the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and scope are front-loaded, and the routing sentences carry real decision value rather than filler. It is dense and long for a single-parameter lookup tool, but each sentence (scope, return caveat, exclusions, alternatives) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by explaining the return shape (3 nearest entries) and its reliability limits. Combined with the exclusions and alternatives, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema coverage is 100% with the schema itself supplying example question strings. The description adds no syntax or format detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (look up answers in the Canton Network developer FAQ) and enumerates the exact topic domains it covers. It distinguishes itself from siblings by explicitly naming semantic_search, get_doc, get_started_guide, and get_api_reference as separate routes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Canton-specific' questions), when-not ('do NOT use for other blockchains or general/non-Canton questions'), and alternatives with the selecting condition ('if none of the 3 directly answers... use semantic_search... then get_doc'). Routing to get_started_guide and get_api_reference is also stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_foundation_infoA
Read-onlyIdempotent
Inspect

Retrieve official Canton Foundation pages (canton.foundation): team and board bios, working groups, membership process, grants program. Free-text topic search over CCPEDIA's index of the canton.foundation site, returning matched-page snippets (not the curated knowledge base). Canton-only. Use when a user asks about Foundation people, governance structure, or member/grant processes.

NameRequiredDescriptionDefault
limitNoHow many matching sections to return. Default 3, max 10.
topicYesFree-text topic, e.g. "team", "executive director", "working groups", "membership", "grants", "board".

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: results are matched-page snippets from a site index rather than curated content, and the scope is restricted to canton.foundation. Return shape is mentioned but not pagination or depth behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the resource and source, then constraints, then usage. Every sentence carries information, though the topic enumeration is somewhat redundant with the schema examples and could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 clarifies that results are snippets (not full pages) and scoped to Canton. An agent has enough to call it correctly, though result size, ranking behavior, and snippet granularity are left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already lists example topic values ('team', 'working groups', 'membership', 'grants', 'board') matching those in the description. The description thus largely restates the schema's guidance rather than adding syntax, formatting, or matching semantics; baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specifies a concrete verb and resource ('Retrieve official Canton Foundation pages (canton.foundation)') and enumerates the content types covered: team/board bios, working groups, membership process, grants program. It also explicitly separates itself from the curated knowledge base, so an agent can distinguish it from search/semantic_search siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger condition: 'Use when a user asks about Foundation people, governance structure, or member/grant processes.' It also carves out the negative case by noting results are Canton-only and come from the site index rather than the curated KB. It stops short of naming a specific alternative tool, so it falls just under 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_funding_landscapeA
Read-onlyIdempotent
Inspect

Overview of the Canton Dev Fund: counts of proposals by state and label, top categories, and recent activity. Canton-specific. Use to gauge whether a category is over- or under-funded before proposing.

NameRequiredDescriptionDefault
categoryNoOptional label filter, e.g. "daml-tooling", "node-deployment-operations".

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is low. The description still adds real context by characterizing this as an aggregate overview rather than a raw listing, and by scoping it to Canton specifically, which helps set expectations about 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool returns, followed by scope and usage. Every sentence carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the work of describing the return content (counts, top categories, recent activity), and annotations handle the safety profile. The only gap is freshness or granularity of "recent activity," which is minor for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one optional parameter, so the schema already documents the category filter with examples. The description reinforces the filter's purpose (judging a category's funding level) but adds no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (Canton Dev Fund) and enumerates the shape of the output: proposal counts by state and label, top categories, recent activity. This distinguishes it from narrower siblings like get_dev_fund_activity or get_dev_fund_lifecycle, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to gauge whether a category is over- or under-funded before proposing" gives a clear decision context and ties the tool to a workflow stage. It stops short of naming when NOT to use it or which sibling to prefer for raw proposal lists, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_github_discussionA
Read-onlyIdempotent
Inspect

Get the full body and comments of a single GitHub Discussion from a Canton Network or Digital Asset repo, by its GitHub GraphQL node id (from list_github_discussions). CANTON-ONLY, read from CCPEDIA's cache. Not the live GitHub API. This is GitHub Discussions, distinct from the Canton web forum (get_discussion) and mailing lists (get_mailing_thread).

NameRequiredDescriptionDefault
idYesGitHub GraphQL node ID, e.g. "D_kwDOMNgu5s4AY..."

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds genuinely non-redundant behavior: results come from CCPEDIA's cache rather than the live GitHub API, and coverage is restricted to Canton Network/Digital Asset repos. It does not mention cache staleness or comment pagination limits, which keeps it below 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and resource, then scope, then disambiguation. Every clause carries distinct information (source of id, cache vs live, sibling routing) with no repetition of the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 correctly takes on the return contract by stating it returns the full body and comments. Combined with the cache-vs-live note and Canton-only scope, an agent has what it needs to call it; the only unaddressed item is whether long comment threads are truncated or paginated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is documented with a concrete node-id example, so the schema carries the syntax burden. The description still adds provenance the schema lacks: the id is a GitHub GraphQL node id obtained from list_github_discussions, which tells the agent not to invent or reuse an internal discussion id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the full body and comments of a single GitHub Discussion') plus the scope (Canton Network or Digital Asset repos, by GraphQL node id). It explicitly distinguishes itself from the two nearest siblings, get_discussion (Canton web forum) and get_mailing_thread, so an agent can disambiguate without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tells the agent where the required id comes from ('from list_github_discussions') and which tools are the wrong choice for this data ('distinct from the Canton web forum (get_discussion) and mailing lists (get_mailing_thread)'). The 'CANTON-ONLY, read from CCPEDIA's cache. Not the live GitHub API' clause gives the condition under which this source is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_governance_voteA
Read-onlyIdempotent
Inspect

Get the full detail of one Canton on-chain DSO governance vote request: the proposed action, the requester's stated reason, every Super Validator's individual vote with their own written reason, who abstained, the outcome and the date it took effect. Use after list_governance_votes when a specific decision matters. Canton ecosystem only.

NameRequiredDescriptionDefault
tracking_cidYesThe vote request tracking contract id, or a unique prefix of it, as returned by list_governance_votes.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description goes further by disclosing the richness of the payload — individual SV votes with their own written reasons and who abstained — which tells the agent this is a heavyweight single-record fetch, not a summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The identity of the resource is front-loaded, the returned contents are packed into one enumerative clause, and the usage/scope caveat comes last where it belongs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 describing the return value — and it does so thoroughly, listing each field category an agent would need. Combined with annotations covering safety, nothing needed to call this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents that a unique prefix is acceptable and that the value comes from list_governance_votes. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('one Canton on-chain DSO governance vote request') and then enumerates exactly what is returned: proposed action, requester reason, per-SV votes with reasons, abstentions, outcome, effective date. That level of specificity separates it cleanly from siblings like list_governance_votes, get_cip_vote_outcome, and compare_governance_outcomes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool in a workflow ('Use after list_governance_votes when a specific decision matters') and constrains scope ('Canton ecosystem only'). It doesn't name an exclusion case or a competing alternative for aggregate comparison (e.g., compare_governance_outcomes), so it falls just 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.

get_issue_statusA
Read-onlyIdempotent
Inspect

Look up one GitHub issue or PR by repo + number. Canton/Daml/Splice repos only.

NameRequiredDescriptionDefault
repoYesRepo, e.g. "canton-foundation/canton-dev-fund" or shorthand "canton-dev-fund".
numberYesIssue or PR number.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds the meaningful constraint that only Canton/Daml/Splice repos are in scope, but says nothing about auth needs, error behavior, or what the lookup returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, zero filler, with the core action front-loaded and the scope restriction second. Nothing could be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description never indicates what is returned (status only, or full issue/PR payload), despite the name implying 'status'. Annotations and schema cover input safety and parameters, but the return-shape ambiguity is a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both params documented (repo with shorthand form, number). The description only restates 'repo + number' and adds no format 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up) and resource (one GitHub issue or PR) with the lookup key (repo + number), which distinguishes it from the bulk sibling search_github_issues. It doesn't name that sibling explicitly, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope constraint 'Canton/Daml/Splice repos only' implicitly tells the agent when this tool applies, but there is no explicit when/when-not guidance or pointer to search_github_issues for broader lookups. Usage must be inferred from the constraint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_kb_driftA
Read-onlyIdempotent
Inspect

Report where the Foundation Build-on-Canton KB snapshot (which CCPEDIA syncs daily from github.com/canton-network-devs/Build-on-Canton-MCP) diverges from CCPEDIA's live signals (github_releases, network_state). Returns each drifted (category, key) with the KB value, the live value derived right now, the drift age in days, and severity (info | warn | stale). Use this when a user or another agent quotes a Canton SDK / Splice / DPM / Daml version from foundation_kb and you need to confirm whether it is still current. CCPEDIA-specific transparency layer: no other Canton MCP server exposes this kind of cross-source quality audit. Canton/Daml/Splice ecosystem only.

NameRequiredDescriptionDefault
refreshNoIf true, evaluate the rules now against the live tables and report that, without storing it. Default false uses the findings stored by the last daily check.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description adds real value beyond them: it discloses the exact return shape (category, key, KB value, live value derived right now, drift age in days, severity info|warn|stale) and the provenance of both sides of the comparison. It does not mention refresh cost or auth, but nothing critical is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and return fields, then the usage trigger, then ecosystem scope. Sentences earn their place, though the 'no other Canton MCP server exposes this kind of cross-source quality audit' line leans promotional rather than operational.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields and their semantics, and it explains the drift concept and data sources. An agent has enough to call it correctly; only minor details (pagination, ordering) are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single refresh parameter is fully documented in the schema (including the stored-vs-live evaluation semantics). The description adds nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (report where ... diverges) with two concrete resources (the Foundation Build-on-Canton KB snapshot vs CCPEDIA live signals) and names the underlying data tables (github_releases, network_state). An agent can tell this apart from detect_drift, outdated_guidance_detector, and check_deprecation because the description pins the comparison to the KB snapshot vs live signals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger: use when a user or another agent quotes a Canton SDK/Splice/DPM/Daml version from foundation_kb and you need to confirm it is current. It also scopes the ecosystem (Canton/Daml/Splice only). It stops short of naming the sibling alternatives (e.g., detect_drift) and when NOT to use this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_latest_releaseA
Read-onlyIdempotent
Inspect

Get the single latest release (version tag, publish date, and GitHub release-notes link) for ONE NAMED Canton-ecosystem package: canton, daml, dpm, or splice. Canton-specific. Requires a package name as input. Use when the user names a specific package ("what's the latest daml release", "latest canton version"); use get_current_versions instead for a cross-package snapshot of all four at once or MainNet/TestNet deployment status.

NameRequiredDescriptionDefault
packageYesRepo or package name: "canton", "daml", "dpm", "splice", or a full owner/repo.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds value beyond them by promising the specific payload shape (tag, date, release-notes URL) and flagging Canton-specific scope. It does not say what happens for an unknown or non-Canton package name, which is a real gap given the schema also accepts arbitrary 'owner/repo' values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence states what is returned and for whom, then the Canton-specific constraint, then the usage rule — well front-loaded. It is dense and slightly overpacked for a one-parameter read tool, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the three returned fields, and it covers the required input and the routing decision against the sibling. An agent has everything needed to select and call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents the same four names plus the owner/repo form. The description restates the package set, adding only the framing that it must be 'ONE NAMED' package. Baseline 3 applies since the schema carries the parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the single latest release') and enumerates the returned fields (version tag, publish date, release-notes link). It scopes the tool to one named Canton-ecosystem package, which is enough to distinguish it from the broader version tools 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use condition with quoted example utterances ('what's the latest daml release', 'latest canton version') and names the alternative, get_current_versions, with the exact condition that selects it (cross-package snapshot or MainNet/TestNet status). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mailing_threadA
Read-onlyIdempotent
Inspect

Get every message (oldest first) in a specific Canton Network governance mailing-list thread on lists.sync.global (cip-discuss, cip-vote, grants-discuss, etc.). Canton-only. Pass the thread id from list_mailing_threads. This is the email/mailing-list channel. Not the web forum (get_discussion) or GitHub Discussions.

NameRequiredDescriptionDefault
idYesThread id exactly as list_mailing_threads prints it. Both forms work: a numeric archive topic id ("119286914") and a message id for messages the archive never threaded ("cip-discuss-809").
limitNoHow many messages (oldest first) to return. Default 25, max 100. The header states the full held count and the range shown.
offsetNoSkip this many messages before returning, for paging through a long thread.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine value beyond that: deterministic oldest-first ordering and the Canton-only/lists.sync.global scope restriction. It does not discuss paging behavior, but that is documented in the schema instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences with no waste; the scope/ordering constraint is front-loaded and the routing exclusions come last. Nothing is repeated or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with a fully documented 3-parameter schema and no output schema, the description covers what it returns (all messages, oldest first), the source channel, and the id source. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the id parameter documentation already explains both accepted id forms in depth, so the schema carries the load. The description adds only the provenance hint that the id comes from list_mailing_threads; limit/offset get no description-level elaboration. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get every message ... in a specific Canton Network governance mailing-list thread on lists.sync.global"), names the concrete channel (cip-discuss, cip-vote, grants-discuss) and explicitly excludes the web forum and GitHub Discussions siblings. An agent can distinguish it from get_discussion / get_github_discussion without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the prerequisite for the id ("Pass the thread id from list_mailing_threads") and names both alternatives it is not ("Not the web forum (get_discussion) or GitHub Discussions"). Both the when and the when-not are stated explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_stateA
Read-onlyIdempotent
Inspect

Get the latest Canton Network ON-CHAIN state snapshot from the public Scan API (api.cantonnodes.com): Super Validator list & count, voting threshold, sequencer count, latest mining round, featured-apps count, and the last published cumulative app/validator rewards in CC with the closed round and date they describe (flagged when upstream has stopped publishing them). Canton-only, cached snapshot (captured_at). This is live network telemetry. NOT CCPEDIA content counts (get_network_stats) and NOT price/TVL (get_token_market).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuine context beyond that: source endpoint, 'Canton-only, cached snapshot (captured_at)', and the flagging behavior when upstream stops publishing rewards. Return format detail is limited but the caching semantics are a real addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and source, then the field list. The enumeration of covered fields is long but each item earns its place given there is no output schema to fall back on. No filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description has to describe what comes back, and it does so thoroughly: SV list/count, voting threshold, sequencer count, latest mining round, featured-apps count, rewards in CC with closed round and date, plus caveats about stopped publishing and caching. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the schema has nothing to document and the description carries no burden here; baseline 4 applies. The description does not need to explain parameter usage because no parameters exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the latest Canton Network ON-CHAIN state snapshot from the public Scan API'), enumerates the exact contents it returns, and names two siblings it is not. An agent can distinguish it from get_network_stats and get_token_market without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit exclusions with named alternatives ('NOT CCPEDIA content counts (get_network_stats) and NOT price/TVL (get_token_market)') and frames the use case as 'live network telemetry.' The positive trigger is implied rather than stated, so a 4 rather than a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_statsA
Read-onlyIdempotent
Inspect

Get CCPEDIA's CONTENT-CATALOG metrics: how many Canton items CCPEDIA has indexed. Counts of CIPs (total/in-review/final), forum topics & posts, GitHub issues/PRs, dev-fund proposals, docs pages, videos, blog posts, mailing threads, and radar items. This is CCPEDIA coverage/inventory, NOT live Canton on-chain stats. For on-chain validators/rounds use get_network_state, for price/TVL use get_token_market.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and non-open-world, so the safety profile is covered. The description adds genuinely new behavioral context by clarifying that the data is CCPEDIA's static content-catalog inventory rather than a live on-chain feed. It does not describe response shape or pagination, but with annotations doing the heavy lifting and no output schema this is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose, then the enumerated inventory categories, then the negative scope and routing. No wasted text; each clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with no output schema, the description supplies the missing return-value context by enumerating the counted categories (CIPs, forum topics/posts, GitHub issues/PRs, dev-fund proposals, docs, videos, blog posts, mailing threads, radar items) and rules out on-chain interpretation. An agent has everything needed to select and call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly does not invent parameter guidance and instead spends its budget on output-category scope.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get CCPEDIA's CONTENT-CATALOG metrics') and immediately scopes it to indexed inventory rather than live chain data. It explicitly names the sibling tools it is not (get_network_state, get_token_market), so an agent can distinguish it without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use and when-not-to-use guidance, including the exact conditions that route to alternatives: 'For on-chain validators/rounds use get_network_state, for price/TVL use get_token_market.' Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_npm_packagesB
Read-onlyIdempotent
Inspect

List the indexed Canton/Daml npm packages (sdk_versions registry=npm) optionally filtered by name. Canton-specific.

NameRequiredDescriptionDefault
limitNoMax packages (default 25).
queryNoOptional substring filter on package name.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-open-world and non-destructive, so the safety profile is covered. The description adds that it operates on the npm registry index and is Canton-specific, useful context, but nothing about result ordering or response behavior beyond what the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the core verb and resource first and the scoping parenthetical after. Nothing is wasteful, though the parenthetical is slightly terse for an unfamiliar reader.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with complete schema coverage and annotation-declared safety, the description covers purpose, scope, and filterability. Return values are not described, but there is no output schema and pagination behavior lives in the schema, so little is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 limit, query, and offset (including paging semantics and full count echo). The description only restates that filtering by name is optional, adding no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (indexed Canton/Daml npm packages) with a scoping qualifier (sdk_versions registry=npm) and 'Canton-specific'. This distinguishes it reasonably well from generic version/repo tools, though it doesn't name 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says the list can be 'optionally filtered by name' but gives no guidance on when to use this tool versus alternatives like get_current_versions or list_repos. Usage is only inferable from the tool name and scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_proposalA
Read-onlyIdempotent
Inspect

Everything CCPEDIA holds about ONE Canton Dev Fund proposal (a pull request in canton-foundation/canton-dev-fund), by its PR number: state and project-board column, labels, the facts parsed from the proposal file (organization, author, declared RFP, champion, funding in CC, duration, SIG label, milestones), champion evidence (board column, proposal file, PR text), reviewers, discussion statistics, and the timeline of label, reviewer, rename and board events. Use after get_proposals, list_proposals_needing_champion or search_dev_fund returned a number. For the full conversation use get_proposal_discussion, for the full proposal text get_proposal_file. Canton-specific.

NameRequiredDescriptionDefault
numberYesPR (or issue) number in canton-foundation/canton-dev-fund, e.g. 439.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral value by disclosing the breadth of returned content (parsed file facts, champion evidence, reviewers, statistics, event timeline) and the 'ONE proposal' scoping constraint. It stops short of return-format or pagination specifics, so 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and the scoping phrase 'ONE ... proposal' before the long enumeration. The enumeration is dense but every clause maps to real returned data; the structure is efficient if slightly run-on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 contents, and it does so comprehensively (state/board column, labels, parsed proposal facts, champion evidence, reviewers, discussion stats, event timeline). An agent knows exactly what it will get and when the result is or isn't the right source.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage on a single parameter, the schema already documents 'number' as a PR/issue number with bounds and an example. The description only reinforces that the number comes from a prior list/search call, adding minimal syntax beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('everything CCPEDIA holds about ONE Canton Dev Fund proposal... by its PR number') and enumerates the payload domains it returns. This clearly distinguishes it from siblings like get_proposal_discussion and get_proposal_file, which target subsets of the same entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('after get_proposals, list_proposals_needing_champion or search_dev_fund returned a number') and names two alternatives with their distinct purposes (full conversation vs. full proposal text). The routing decision is fully deterministic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_proposal_discussionA
Read-onlyIdempotent
Inspect

The conversation on ONE Canton Dev Fund proposal, oldest first: every comment, every formal review (approved, changes requested, commented) and every inline review comment on the proposal file, with author, GitHub role (member, collaborator, none), date, and the text. Pages with offset. Use to read what reviewers, champions and the committee actually said, or why a proposal stalled. Canton-specific.

NameRequiredDescriptionDefault
kindNoOnly this kind: issue_comment (conversation), review_comment (inline on the file), review (a formal review verdict).
limitNoHow many entries to return. Default 10, max 30. The response states the full count.
numberYesPR (or issue) number in canton-foundation/canton-dev-fund.
offsetNoSkip this many entries, for paging.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description's added value is ordering ('oldest first'), pagination via offset, the fact that the response states the full count, and the GitHub-role enrichment. That is meaningful context beyond the annotations, though response shape and error behavior are not described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core resource and its contents, followed by pagination and usage sentences. Dense but efficient; the trailing 'Canton-specific.' adds little beyond what the name already implies.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, paginated discussion fetcher with no output schema, the description covers contents, fields returned, ordering, pagination, and purpose. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so kind, limit, number, and offset are all documented in the schema. The description only adds 'Pages with offset,' matching what the schema already says; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('The conversation on ONE Canton Dev Fund proposal') and enumerates exactly what it contains: comments, formal reviews with verdicts, and inline review comments, each with author, GitHub role, date, and text. The 'ONE proposal' scoping and canton-dev-fund specificity separate it from generic siblings like get_discussion or get_github_discussion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use case: 'Use to read what reviewers, champions and the committee actually said, or why a proposal stalled.' That tells the agent when this is the right tool, but it does not explicitly name alternatives (e.g., get_proposal for metadata, get_proposal_milestones) or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_proposal_fileA
Read-onlyIdempotent
Inspect

The full text of the proposal file(s) a Canton Dev Fund PR adds (proposals/.md or rfps//.md), exactly as in the PR head: abstract, specification, milestones, acceptance criteria, funding. A PR can add several files; pass path to pick one. Use after get_proposal when the details matter. Canton-specific.

NameRequiredDescriptionDefault
pathNoOne of the paths listed for that PR. Omit for the first file.
numberYesPR number in canton-foundation/canton-dev-fund.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuine value beyond them by asserting the content is returned 'exactly as in the PR head,' signaling verbatim, untransformed output. It does not cover size limits or truncation for large files, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences with no filler: the first gives scope and file patterns, the second gives multi-file routing, the third gives usage sequencing. Front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 is returned, and it does so by enumerating the substantive sections (abstract, specification, milestones, acceptance criteria, funding). Nothing about permissions or error cases is covered, but for a read-only extraction tool this is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, and the standard baseline is 3. The description's note that a PR may add several files and that path selects one adds mild routing context but no syntax or format detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('full text of the proposal file(s) a Canton Dev Fund PR adds') and identifies the exact file patterns (proposals/*.md, rfps/<category>/*.md). It is immediately distinguishable from get_proposal, which it names as the prerequisite sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use after get_proposal when the details matter,' giving both the sequencing condition and the alternative to use when details don't matter. It also clarifies the multi-file case with the routing rule for the path parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_proposal_milestonesA
Read-onlyIdempotent
Inspect

For one Canton Dev Fund proposal PR, list any related milestone tracking issues (issues whose body or title references the PR number). Canton-specific.

NameRequiredDescriptionDefault
pr_numberYesPR number in canton-foundation/canton-dev-fund.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds meaningful behavioral context beyond them: the matching rule (issues whose body or title references the PR number), which tells the agent exactly how results are derived and why an issue appears.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the subject and scope front-loaded and no filler; the matching criterion is packed into a parenthetical rather than a separate sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param, read-only lookup with no output schema, the description is nearly complete: it conveys scope, matching logic, and the return shape ('list ... issues'). Only minor gaps remain, such as whether an empty result is possible and what fields each issue carries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single pr_number parameter is already documented with its repo context. The description only restates that it's one Canton Dev Fund proposal PR, adding location context but no format or edge-case semantics beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (list) and resource (related milestone tracking issues) scoped to one Canton Dev Fund proposal PR, which is far more precise than generic siblings like get_issue_status or search_github_issues. It doesn't explicitly name an alternative sibling, so it falls 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'For one Canton Dev Fund proposal PR' framing implies the use case, but it never says when to prefer this over search_github_issues or get_issue_status, nor any exclusions. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_proposalsA
Read-onlyIdempotent
Inspect

List Canton Network Dev Fund grant proposals: community funding requests tracked on GitHub. Filterable by state (open/closed/all). Use for 'what grants/funding requests exist' questions. NOT the same as Canton Improvement Proposals (CIPs): those are governance specs (use list_cips / get_cip). Returns number, title, state, author, board status and how many people commented; it is only an index. For one proposal in full (champion evidence, proposal file, every comment, review and timeline event) call get_proposal and get_proposal_discussion. Canton ecosystem only.

NameRequiredDescriptionDefault
limitNoHow many proposals to return. Default 20, max 50. The response states the full count.
stateNoGrant-request state on GitHub. Defaults to "open", so the total reported is open requests rather than every proposal ever filed.open
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real behavioral context beyond that: it discloses the return shape (number, title, state, author, board status, comment count), warns 'it is only an index,' and notes the response reports the full count. It doesn't discuss rate limits or error behavior, but that is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then scope boundaries and return shape. Every sentence carries routing or scoping information, though it is denser than strictly necessary and repeats the state filter that the schema already documents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 the return (an index of number/title/state/author/board status/comment count) and does so. It also covers filtering, pagination count reporting, ecosystem scope, and sibling routing — nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so limit, state, and offset are already fully documented, including defaults and the max of 50. The description restates the state filter (open/closed/all) without adding syntax or behavioral nuance beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'List Canton Network Dev Fund grant proposals: community funding requests tracked on GitHub.' It explicitly distinguishes itself from the similarly named CIP tools (list_cips / get_cip) and from get_proposal, so an agent can disambiguate without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use case ('what grants/funding requests exist' questions), names the excluded alternative (CIPs are governance specs handled by list_cips/get_cip), routes detail-seekers to get_proposal and get_proposal_discussion, and bounds scope with 'Canton ecosystem only.' When-to-use, when-not, and alternatives are all present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_radarA
Read-onlyIdempotent
Inspect

Get the Canton Network Radar, CCPEDIA's curated feed of time-sensitive ecosystem alerts: breaking changes, upgrade deadlines, protocol migrations and required validator actions, each with deadline, affected components and source link. Filter by level (critical/important/ecosystem/all). Canton-only. Use when a user asks what's changing, what's about to break, or what deadlines are approaching on Canton.

NameRequiredDescriptionDefault
levelNoSeverity floor. "critical" and "important" return only that level; "ecosystem" is the low-severity feed; "all" (default) returns every live alert.all
limitNoHow many alerts to return, most severe and most recent first. Default 25.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds behavior the annotations cannot: the feed is curated, live, time-sensitive, and each entry carries a deadline, affected components and a source link. It does not discuss freshness/caching or rate limits, but adds real value on top of the structured hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what the tool is, then content shape, then filter, then scope, then trigger. Three sentences, no filler, no repetition of schema detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero required params and no output schema, the description carries the return-shape burden and does so by naming deadline, affected components and source link, plus the level filter. Minor gap: it never distinguishes the radar entry from sibling feeds like get_breaking_changes or get_upcoming_deadlines, which is the one thing an agent would still need to choose correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already carries a detailed description, including the nuanced severity-floor semantics of 'level'. The description only repeats the level enum; it says nothing about limit or offset paging that the schema does not already state. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get the Canton Network Radar) and enumerates the content precisely: breaking changes, upgrade deadlines, protocol migrations, validator actions, each with deadline/components/source. The scope constraint 'Canton-only' is explicit. It stops short of distinguishing itself from overlapping siblings like get_breaking_changes or get_upcoming_deadlines, leaving the agent to infer that radar is the aggregated curated feed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete trigger conditions: 'Use when a user asks what's changing, what's about to break, or what deadlines are approaching on Canton.' That is clear when-to-use guidance. There is no when-not guidance and no named alternative for narrower queries, so it falls short of the 5 anchor.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_changesA
Read-onlyIdempotent
Inspect

Get a chronological (newest-first) feed of recent Canton Network activity: CIP status changes, new grant proposals, new forum threads, blog posts, GitHub releases, and radar items, merged into one time-ordered stream (default last 7 days). Canton-specific. Not a git/repo changelog. Use for 'what changed/happened on Canton recently'; use get_trending instead for popularity-ranked 'what's hot'.

NameRequiredDescriptionDefault
daysNoHow far back to look, in days, counted from now. Default 7, max 90.
limitNoHow many changes to return, newest first. Default 50, max 500.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the safety profile is covered. The description still adds real behavior: results are merged across heterogeneous sources and returned newest-first, with a default 7-day window and a Canton-only scope. It does not describe pagination or per-item shape, keeping it short of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences, front-loaded with the resource and scope, then the source list, then the disambiguation. No filler; every clause carries information an agent would otherwise have to guess.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no nested objects, and only 2 optional params, so the description's coverage of scope, ordering, sources, and the sibling alternative is sufficient to call it correctly. Nothing essential is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (days, limit) are fully documented with defaults and max bounds, so the schema does the heavy lifting. The description only restates the default window ('default last 7 days') and adds no syntax or semantics beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('chronological feed of recent Canton Network activity') with the merged sources enumerated (CIP status changes, grants, forum threads, blog posts, GitHub releases, radar items). Explicitly distinguishes itself from a git/repo changelog and from get_trending, so an agent can differentiate it from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use condition ('what changed/happened on Canton recently') and names the alternative with the condition that selects it ('use get_trending instead for popularity-ranked what's hot'). No inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_deploymentsA
Read-onlyIdempotent
Inspect

Recent completed SV deployments/releases from sv_operations_calendar (operation_type in deploy|release|upgrade), cross-referenced with github_releases when the title names a SemVer-looking tag. Canton-specific. Use to answer "what shipped on MainNet recently?".

NameRequiredDescriptionDefault
limitNoHow many deployments to return, newest first. Default 10, max 50.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and a closed-world scope, so safety is covered. The description adds real behavioral context beyond that: the data sources, the operation_type filter, and the conditional join with github_releases when a title looks like a SemVer tag. It does not describe result shape, but that is a minor omission for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core resource and scope, then supporting detail; no filler sentences. Density is high and mildly jargon-heavy (sv_operations_calendar, SemVer-looking tag), but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-optional-parameter read-only list tool with complete annotations and full schema coverage, the description supplies what the structured fields cannot: sources, filter values, and enrichment behavior. The only gap is that with no output schema, the returned fields are never characterized, though the schema notes the response echoes the offset.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (limit, offset) are fully documented there, including default, max, paging behavior, and the echoed offset. The description adds nothing about these parameters, so the baseline 3 for schema-carried semantics is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (recent completed SV deployments/releases), names the backing source (sv_operations_calendar), the filter (operation_type in deploy|release|upgrade), and an enrichment step (cross-reference with github_releases on SemVer-looking tags). Combined with the explicit 'Canton-specific' scoping, an agent can distinguish it from get_latest_release and search_release_notes 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The quoted question 'what shipped on MainNet recently?' gives an implied usage context, but there is no explicit when-not, no prerequisite, and no routing away from overlapping siblings such as get_latest_release, get_upcoming_operations, or search_release_notes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recurring_issue_fingerprintA
Read-onlyIdempotent
Inspect

Identify error patterns that recur across multiple Canton SDK or Splice release windows: structural bugs the ecosystem keeps hitting versus one-off regressions. Returns the top keywords/error codes mentioned in forum_posts that span at least 3 distinct months over the last 18 months. Canton/Daml/Splice ecosystem only. Useful for triage prioritisation and for choosing what to add to a runbook.

NameRequiredDescriptionDefault
min_monthsNoA keyword must appear in this many distinct months to count as recurring (default 3).
window_monthsNoLook-back window in months (default 18).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: the data source (forum_posts), the recurrence threshold (3 distinct months over 18 months), and the ecosystem restriction. It stops short of covering return format details, but that is a minor gap given 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences with the core purpose front-loaded, followed by the return semantics and scope. Slightly dense but every clause carries information; nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With read-only annotations covering safety and no output schema, the description does the needed work: it explains what is returned (top keywords/error codes from forum posts) and the recurrence/threshold logic. An agent can call this correctly; only minor gaps remain around exact output shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (min_months, window_months) are already documented in the schema, which is treated as the baseline 3. The description restates the default thresholds but adds no syntax or format meaning beyond what the schema conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Identify') and a precise resource ('error patterns that recur across multiple Canton SDK or Splice release windows'), and contrasts structural recurring bugs with one-off regressions. This is distinguishable from siblings like find_known_issues or diagnose_error without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context ('useful for triage prioritisation and for choosing what to add to a runbook') and an explicit scope constraint ('Canton/Daml/Splice ecosystem only'). It doesn't name alternatives or exclusion conditions versus the many sibling tools, so 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.

get_sdk_changelogA
Read-onlyIdempotent
Inspect

Fetch the release-notes body for one SDK version across canton / daml / dpm / decentralized-canton-sync (Splice). Canton-specific. Returns the rendered release body with a link to the GitHub release.

NameRequiredDescriptionDefault
repoNoOptional repo hint: canton, daml, dpm, splice.
versionYesVersion tag, e.g. "3.5.6", "v3.5.6", "0.6.10".

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond that by disclosing the return shape ('rendered release body with a link to the GitHub release') and the Canton-specific scope, which matter because no output schema exists. It stops short of explaining what happens when the optional repo hint is omitted or how the repo is resolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and scope, with the return-value note last. Every sentence carries information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with full schema coverage and no output schema, the description is nearly complete: it scopes the repos, names the required version input, and describes the return content. The remaining gap is the behavior of the optional 'repo' hint when omitted, which an agent may need to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 'repo' (canton, daml, dpm, splice) and 'version' with format examples. The description only restates the repo set, and its naming ('decentralized-canton-sync (Splice)') is slightly looser than the schema's 'splice', so it adds no real semantic value. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch the release-notes body for one SDK version'), and names the exact repos in scope, so the agent knows it retrieves a single version's changelog rather than listings. It only implicitly differentiates from siblings such as search_release_notes or get_latest_release, so it falls 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: the phrase 'for one SDK version' signals this is the lookup to use when a specific version tag is already known. There is no explicit statement of when to prefer it over search_release_notes, get_latest_release, or get_recent_changes, and no exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_started_guideA
Read-onlyIdempotent
Inspect

Generate a personalized Canton Network developer onboarding/quickstart path. Use when a developer asks how to start building, build a dApp, or develop on Canton specifically. Canton-only. Do not use for onboarding to other chains or tools. Ask the user's background first (EVM, Solana, Sui/Move, Web, Enterprise, or New to Blockchain). Prefer this over 'search' for 'how to build / get started on Canton'; use get_faq for a single specific gotcha and get_api_reference for API details.

NameRequiredDescriptionDefault
backgroundYesDeveloper's primary background. Ask the user to select this before proceeding.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld=false and non-destructive, so the safety profile is covered. The description adds a genuine behavioral requirement beyond that: the agent must first ask the user's background before proceeding, and enumerates the valid background values. It stops short of describing the shape/tone of the generated path, but is solid for a read-only generator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then routing rules, then the prerequisite interaction. Every sentence carries usable information, though the multi-clause final sentence about search/get_faq/get_api_reference is slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only, non-open-world tool with no output schema, the description supplies purpose, routing, and the required pre-call interaction. The only minor gap is that it doesn't hint at what the generated guide looks like, but nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'background' parameter is a fully-enumerated string with its own description. The description reinforces the interaction ('Ask the user's background first') and lists the same six categories, adding workflow meaning but no new parameter semantics beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generate a personalized Canton Network developer onboarding/quickstart path') and immediately scopes it as Canton-only. An agent can distinguish it from siblings like get_faq, get_api_reference, and search 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (developer asking how to start/build a dApp on Canton), when not to use (other chains/tools), and names the alternatives that handle adjacent requests ('get_faq for a single specific gotcha', 'get_api_reference for API details', prefer over 'search'). This is textbook routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sv_scheduleA
Read-onlyIdempotent
Inspect

Show the Super Validator operations schedule from the Canton Foundation's sv-cal.canton.foundation feed: planned releases, deploys, upgrades, governance windows, freezes. Filter by environment. Canton-specific. Use when an operator asks "what is happening on MainNet next?" or "when is the next Splice cut?".

NameRequiredDescriptionDefault
limitNoMax rows (default 20).
environmentNoRestrict to one environment. Omit for all.
upcoming_onlyNoIf true (default), only events with start_at >= today.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety and scope are covered. The description usefully adds the authoritative data source (sv-cal.canton.foundation), but says nothing about return format, ordering, or limits beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and content types, then usage cues. Slight redundancy between naming the feed and the 'Canton-specific' clause, but every sentence contributes and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only filtered-list tool with full annotation coverage and no output schema, the description covers what it returns, the source, and when to call it. It omits only minor operational detail (ordering, default result size) that the schema already handles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter (limit, environment, upcoming_only) is fully documented in the schema, so the baseline of 3 applies. The description's 'Filter by environment' merely restates what the schema already conveys and adds no format or semantic detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Show) and resource (Super Validator operations schedule) and enumerates the content types covered: releases, deploys, upgrades, governance windows, freezes. The named source feed and 'Canton-specific' qualifier make it clearly distinguishable from generic schedule siblings like get_upcoming_operations or get_upcoming_deadlines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering contexts via example operator questions ('what is happening on MainNet next?', 'when is the next Splice cut?'). It is clear about when to use it, but offers no when-not guidance or named alternatives among the many sibling lookup tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_marketA
Read-onlyIdempotent
Inspect

Get the latest cached market snapshot for CANTON COIN (CC) ONLY: USD price, 24h change, market cap, 24h volume, total Canton DeFi TVL, and per-protocol TVL on Canton. Canton-specific. Cannot price BTC, ETH or any other asset (use a general crypto-price MCP like CoinGecko for those). Snapshot from CCPEDIA's sync (captured_at timestamp), not a live exchange feed.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavior: the data is a cached CCPEDIA sync, not a live exchange feed, with a captured_at timestamp — freshness semantics an agent needs to interpret staleness. It stops short of stating refresh cadence or staleness limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and the hard scope constraint, then the field list, then the caveats. It is a single dense block with nested parentheticals, which is slightly harder to scan than it could be, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the full burden and meets it: it enumerates the returned metrics, identifies the asset scope, and discloses the data source and freshness caveat. An agent has everything needed to call it and to interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to disambiguate. The description correctly spends its words on the return payload instead of inventing parameter guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get cached market snapshot) and enumerates exactly what is returned: USD price, 24h change, market cap, 24h volume, total Canton DeFi TVL, per-protocol TVL. It also draws a hard scope boundary (CANTON COIN / CC only), so an agent can immediately separate it from the rest of 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when not to use it ("Cannot price BTC, ETH or any other asset") and names a concrete alternative (a general crypto-price MCP like CoinGecko). No other sibling tool covers price data, so the external routing instruction is the correct guidance here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_upcoming_deadlinesA
Read-onlyIdempotent
Inspect

Canton operational deadlines coming up: scheduled upgrades, minimum-version raises, topology freezes and Logical Synchronizer Upgrades, per network. Use for "what do I have to do in the next N days" on DevNet, TestNet or MainNet. Events whose network could not be attributed are excluded rather than guessed, because a wrong deadline is worse than a missing one. A subscribable calendar of the same data is at https://ccpedia.xyz/validators#subscribe. For a verdict on your specific version use get_upgrade_status; for the full historical schedule use get_sv_schedule. Canton ecosystem only.

NameRequiredDescriptionDefault
daysNoHow far ahead to look, in days. Default 30.
environmentNo"MainNet", "TestNet" or "DevNet". Omit for all networks.
validator_onlyNoOnly events that require a validator operator to act.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the description adds the useful operational detail that unattributable-network events are deliberately excluded rather than guessed, plus a calendar subscription pointer. That is real behavioral context beyond the annotations, though return shape is not covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then usage, caveat, alternatives, and scope in a tight sequence. Slightly dense with the calendar link and multiple alternative references, but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description covers scope, filtering semantics, network options, and routing to siblings. The main remaining gap is the return format, which no output schema supplies, but overall it is sufficient to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are documented in the schema. The description reinforces the 'next N days' horizon and the network values, but adds no syntax or format detail beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Canton operational deadlines coming up') and enumerates the event types (upgrades, minimum-version raises, topology freezes, Logical Synchronizer Upgrades) with a per-network scope. An agent can distinguish this from get_sv_schedule or get_upgrade_status 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit usage framing ('what do I have to do in the next N days') plus named alternatives with selecting conditions: get_upgrade_status for a personal version verdict, get_sv_schedule for the full historical schedule. Also scopes to Canton ecosystem only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_upcoming_operationsB
Read-onlyIdempotent
Inspect

Convenience wrapper: SV operations in the next N days, all environments, all operation types. Canton-specific. Quick "what should I be ready for this week?" answer for validator/SV ops.

NameRequiredDescriptionDefault
daysNoDays ahead to look (1-180, default 30).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and a closed world, so the safety profile is covered. The description adds useful scope information (all environments, all operation types, aggregated) but says nothing about ordering, volume, or the shape of the aggregated result, which matters for a multi-source aggregation wrapper.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short telegraphic fragments, front-loaded with the resource and scope, with no filler. The clipped phrasing ('SV', 'Canton-specific') assumes domain familiarity but the sentence count is minimal for the payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and one simple parameter, an agent can call this correctly, and annotations cover the safety profile. However, the description never indicates what an 'operation' entry looks like or how multiple environments are combined, leaving the agent without a mental model of the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage that already documents the 1-180 range and default of 30. The description's 'next N days' restates rather than extends that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope ('SV operations in the next N days, all environments, all operation types') and frames it as a convenience wrapper for a validator/SV readiness question. It is readily distinguishable from siblings like get_sv_schedule or get_upcoming_deadlines, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The quoted use case ('what should I be ready for this week?') implies when to reach for it, which is better than nothing. But there is no explicit when-not guidance and no routing to the closely related get_sv_schedule / get_upcoming_deadlines siblings, so the agent must infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_upgrade_statusA
Read-onlyIdempotent
Inspect

Upgrade Copilot for a Canton validator: given the Splice version a node runs and its network, report whether it is below the minimum in force, how many releases behind, the next topology freeze and LSU (with UTC time), the minimum .dar package versions, and the breaking changes between the running version and the target. Canton-specific. Use when an operator asks "am I safe to skip this week?", "what breaks if I upgrade?", or "when is my next deadline?".

NameRequiredDescriptionDefault
versionNoSplice version the node currently runs, e.g. "0.6.9". Omit to get the schedule without a verdict.
environmentYesWhich network the node runs on.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's added value is in scope: it details the exact information returned and clarifies that the version parameter drives whether a verdict is produced. Good context beyond the annotations, though it doesn't discuss freshness/latency of the upgrade data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, then output list and use cases. The output enumeration is dense but each element is informative; slight verbosity but no wasted filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly enumerates return values (verdict, releases behind, deadlines, .dar versions, breaking changes) so an agent knows what to expect. Minor gap: no note on the timezone/origin or freshness of the schedule data beyond 'UTC time'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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's 'omit to get the schedule without a verdict' restates the version param's schema note. Baseline 3 is appropriate—the description adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Upgrade Copilot for a Canton validator') and enumerates exactly what it reports: minimum-in-force status, releases behind, next topology freeze and LSU, .dar package versions, and breaking changes. This is concrete enough to distinguish it from neighbors like get_breaking_changes or get_sv_schedule that return only a slice of this.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit trigger phrases ('am I safe to skip this week?', 'what breaks if I upgrade?', 'when is my next deadline?') that map directly to operator intent. No explicit when-not-to-use or named-alternative routing versus siblings like get_breaking_changes, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_validatorA
Read-onlyIdempotent
Inspect

Look up an individual Canton validator node in the DSO registry by name or party id: its sponsor, self-reported Splice version and how stale that report is, when it was last active, the round range it has been earning over, and how many reward coupons it has missed. CCPEDIA-unique: derived from the DSO validator licenses on the public Scan API. Use for "is node X still live", "how reliable is X", and "who onboarded X" where the registry records a distinct sponsor (about half the fleet does; the rest name themselves and this says so rather than repeating the node name back). For the version distribution across the whole fleet use get_validator_fleet; for whether a version passes the MainNet minimum use get_upgrade_status; for Super Validator GOVERNANCE voting records use list_votes_by_sv, which is a different population. Canton ecosystem only.

NameRequiredDescriptionDefault
nameYesValidator name or party id, whole or partial, e.g. "GSF-validator-2" or "MPCH".
limitNoMaximum matches to return (default 10, max 50).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds genuine behavioral context beyond that: the data is derived from DSO validator licenses on the public Scan API, and it discloses a registry quirk (only about half the fleet records a distinct sponsor; the rest name themselves, and the tool reports that rather than echoing the node name). It does not discuss pagination or 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource, then return fields, then routing to siblings. Dense and largely waste-free, though the "CCPEDIA-unique... public Scan API" provenance clause and the parenthetical about self-naming sponsors are slightly verbose for a description of this length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the returned fields and the registry caveat, which is exactly what an agent needs to interpret results. Missing only minor operational detail such as how the fuzzy name match is ranked or how limit truncation behaves.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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, including that name may be whole or partial and limit defaults to 10 with a max of 50. The description only restates "by name or party id" for the lookup key, adding no syntax or matching detail beyond the schema. 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up) and resource (an individual Canton validator node in the DSO registry) and enumerates what it returns: sponsor, Splice version and staleness, last active, earning round range, and missed reward coupons. It is clearly distinguishable from fleet-level and governance siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit triggering questions ("is node X still live", "how reliable is X", "who onboarded X") and names three alternatives with the condition each covers: get_validator_fleet for fleet-wide version distribution, get_upgrade_status for MainNet minimums, list_votes_by_sv for SV governance (a different population). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_validator_fleetA
Read-onlyIdempotent
Inspect

Where do you stand versus other Canton operators on your Splice version? Reports the whole DSO-approved validator fleet as a version distribution; call with no version to see the whole distribution, or pass your own version to get your exact position (early, typical, or dangerously behind most nodes). CCPEDIA-unique: no other public source publishes this. IMPORTANT: versions are self-reported by each operator in its license metadata, not observed, and many reports are months stale; the tool returns how many are fresh so you can qualify the answer. For the pass/fail rule (are you above the required minimum) use get_upgrade_status. Canton ecosystem only.

NameRequiredDescriptionDefault
versionNoYour Splice version, e.g. "0.6.9", to locate it in the distribution.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial value beyond them: versions are self-reported, not observed, reports can be stale by months, and the tool returns a freshness count so the answer can be qualified. That is exactly the kind of caveat an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the question and the two calling modes efficiently. It is slightly padded by the marketing-style 'CCPEDIA-unique: no other public source publishes this' sentence, which does not help invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 return-value burden well, describing the distribution, positional verdict, and freshness count. Return shape is still loosely specified, but sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already documents the version string. The description goes further by explaining the semantic effect of supplying it (locating your exact position and whether you are early, typical, or dangerously behind) versus omitting it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: reports the DSO-approved validator fleet as a version distribution. It explicitly differentiates from the sibling get_upgrade_status by saying that tool handles the pass/fail rule, so an agent can route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use instructions: call with no version for the whole distribution, pass your own version to get your position (early/typical/behind). It also names the excluded case and the alternative tool for it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_videoA
Read-onlyIdempotent
Inspect

Get a Canton Network video that CCPEDIA has cached (curated channels: Canton Network, Digital Asset, Sync Insights, Canton Foundation, Daml, Digital Asset Training) by its YouTube id: title, channel, publish date, description and the transcript, with the time of each passage when timings are stored. Pass query to get only the passages that mention a term, each with its time and a link that opens the video there. Pass offset to keep reading a long transcript past the first part. CANTON-ONLY and limited to videos already in CCPEDIA's index. Does NOT fetch arbitrary YouTube videos (use a dedicated YouTube tool for that). Obtain ids from list_videos or search.

NameRequiredDescriptionDefault
idYesYouTube video id, e.g. "dQw4w9WgXcQ"
queryNoReturn only the passages of the transcript that mention these words, each with its time and a link that opens the video at that moment. Replaces the plain read; offset is ignored.
offsetNoCharacter position to start reading the transcript from, for a long one. The response names the offset that continues the read.
transcript_charsNoTranscript characters to return. Default 12000; raise it (max 200000) for the full text, or set 0 for metadata only.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, so the safety profile is covered structurally. The description still adds real behavior context beyond that: it discloses the index restriction, the conditional transcript timings ('when timings are stored'), and that query mode bypasses the normal read. It does not, however, say what happens for an id outside the index (error vs empty) or how large transcripts are actually chunked in the response beyond the offset mechanism.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the resource and the payload, then conditions, then the exclusion — a sensible order with no filler sentences. It is one very dense paragraph, though, and the channel list plus the repeated enumeration of returned fields makes it heavier than necessary for scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 carries the return-value burden and does so fully: fields returned, timing behavior, passage-level links when query is used, and continuation via offset. For a 4-parameter read-only lookup limited to an internal index, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 one step above by explaining the interaction semantics — that query 'replaces the plain read' and that offset exists specifically to 'keep reading a long transcript past the first part'. That said, these behaviors are largely restated from the schema's own parameter descriptions, so it does not add much genuinely new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (get a cached Canton Network video by YouTube id) plus the exact return payload (title, channel, publish date, description, transcript with timings). It also names the exact negative boundary — 'Does NOT fetch arbitrary YouTube videos' — so an agent can separate it from a generic YouTube fetch tool and from siblings like list_videos or search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('CANTON-ONLY and limited to videos already in CCPEDIA's index'), explicit when-not ('Does NOT fetch arbitrary YouTube videos (use a dedicated YouTube tool for that)'), and a prerequisite with the alternatives named ('Obtain ids from list_videos or search'). Nothing about tool selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_whitepaperA
Read-onlyIdempotent
Inspect

Get the full extracted text of a specific Canton Network whitepaper by slug (e.g. 'canton-network-whitepaper'): title, tag, page count, PDF link, and body text (up to ~50k chars). Canton-only. Call list_whitepapers first to obtain valid slugs.

NameRequiredDescriptionDefault
slugYesWhitepaper slug, e.g. "canton-network-whitepaper"

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral facts: a ~50k character truncation ceiling and the exact payload shape returned, which an agent would not otherwise know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, then return contents, then scope constraint and prerequisite. No filler; every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 enumerating returned fields and the size cap. Combined with annotations covering safety and closed-world scope, an agent has everything needed to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented, so the baseline would be 3. The description goes beyond it by explaining how to obtain a valid slug (via list_whitepapers) and giving a concrete format example, adding operational meaning to the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource ("Get the full extracted text of a specific Canton Network whitepaper") plus an explicit inventory of what comes back (title, tag, page count, PDF link, body text). The "Canton-only" scope and the slug example make it trivially distinguishable from list_whitepapers and generic search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the prerequisite workflow explicitly: "Call list_whitepapers first to obtain valid slugs," and constrains scope with "Canton-only." It doesn't spell out when to prefer this over e.g. semantic_search for partial content, but the retrieval workflow is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

learning_pathA
Read-onlyIdempotent
Inspect

Construct a structured Canton onboarding sequence for a stated goal: whitepaper → relevant docs → CIPs to know → forum starter threads → talks. Canton-specific. Topic-driven (distinct from get_started_guide which is background-driven).

NameRequiredDescriptionDefault
goalYesWhat the learner wants to do, e.g. "build a Canton dApp", "operate a validator", "write a CIP".

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds genuine behavioral value by disclosing the composition of the result — the ordered sequence of resources it will assemble — which matters because no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences/fragments with zero filler. The action and output shape are front-loaded, and the sibling disambiguation is placed last where it belongs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description supplies what is needed: what it builds, the section order it returns, and how it differs from the nearby guide tool. A note on output format details would complete it, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'goal' parameter is fully documented with examples in the schema itself. The description adds only the 'stated goal'/'topic-driven' framing, which the schema already conveys, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Construct') and resource ('structured Canton onboarding sequence') and enumerates the exact section flow it produces (whitepaper → docs → CIPs → forum threads → talks). It also explicitly differentiates itself from get_started_guide, so the agent can place it among the ~90 siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It names the alternative (get_started_guide) and gives a crisp selecting condition: 'topic-driven' vs 'background-driven'. That is real routing guidance, though it stops short of explicit when-not-to-use cases or prerequisites for the requested goal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_blog_postsA
Read-onlyIdempotent
Inspect

List the blog posts CCPEDIA holds: articles, news and press releases from Canton, Digital Asset and the Canton Foundation, and in tabs of their own partner press, network notices from the release channel, and third-party reprints. Omit source for what the Blog page shows under All. Pass query to search titles and text. Returns metadata only (id, title, kind, author, date); call get_blog_post with an id to read one. Release notes are not blog posts: they are under /releases.

NameRequiredDescriptionDefault
limitNoHow many posts to return. Default 20, max 50.
queryNoWords to look for in titles and text. Results come best match first.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.
sourceNoWhich tab: blog (Blog), news (News), press-release (Press), canton-foundation (Foundation), da-blog (Digital Asset), partner-news (Partner press), notices (Network notices), third-party (Third-party). Omit for All, which is first-party writing only.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: results are metadata-only (id, title, kind, author, date) and content requires a follow-up call. Paging behavior itself is left to the schema, keeping it just short of 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight sentences, front-loaded with the resource and scope, then the source/query routing, then the return shape and the get_blog_post handoff. The first sentence is long and list-heavy but every clause distinguishes a real content category rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields explicitly and stating that payloads are metadata only, so an agent knows to follow up with get_blog_post for text. Combined with the exclusion of release notes and the All-tab default, nothing needed to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds cross-parameter meaning the schema only implies: omitting source yields 'All', which is first-party writing only, and query matches titles and text. The limit/offset paging parameters get no mention in the description, which is the only reason this isn't higher.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('List the blog posts CCPEDIA holds') followed by an enumeration of exactly what the corpus contains (articles, news, press releases, partner press, network notices, third-party reprints). It also explicitly separates release notes from blog posts, which is the most likely confusion source given the sibling search_release_notes tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing rules: omit source for the All view, pass query to search, and call get_blog_post with an id when full content is needed. It also excludes a related-but-wrong path by saying release notes live under /releases, naming the alternative rather than leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_canton_mcpsA
Read-onlyIdempotent
Inspect

List the Canton Network MCP servers CCPEDIA knows about: a directory of the Canton MCP ecosystem (payments, wallets, docs, knowledge). For each: what it does, how to connect or run it, whether it is free/hosted, and whether CCPEDIA can call it directly via call_canton_mcp. Canton-specific.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior. The description adds useful return-content details: what each MCP does, how to connect or run it, free/hosted status, and whether CCPEDIA can call it via call_canton_mcp.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and scope, followed by a compact enumeration of returned fields. No wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only directory tool without an output schema, the description is complete enough. It explains the scope, per-item return details, and the relationship to call_canton_mcp.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero input parameters, so the schema baseline is 4. The description does not need to explain parameter syntax, and it correctly focuses on output contents instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list Canton Network MCP servers known to CCPEDIA. It also distinguishes the listing role from call_canton_mcp by noting whether CCPEDIA can call each server directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly implies the discovery use case and signals the relationship to call_canton_mcp for actual invocation. It does not explicitly say when not to use this tool, but the distinction from the sibling is understandable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cipsA
Read-onlyIdempotent
Inspect

Browse Canton Improvement Proposals (CIPs), optionally filtered by status (Draft, Early Draft, In Review, Proposed, Proposed Amendment, Approved, Active, Final, Withdrawn, Rejected, Replaced, Obsolete, Pending) and type (e.g. "Standards Track"). Returns a metadata list (id, title, status, type, author). Not full text. Use to discover or enumerate CIPs when you don't have a specific ID; use get_cip to read one. Canton/Daml/Splice governance only. Not Cardano or other 'CIP' schemes.

NameRequiredDescriptionDefault
typeNoType filter, e.g. "Standards Track"
limitNoHow many CIPs to return. Default 20, max 100. The response states the full count, which can exceed this limit; page with offset.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.
statusNoall

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only, idempotent, non-open-world operation, so the description's added value is the return-shape warning: 'Returns a metadata list (id, title, status, type, author). Not full text.' That prevents a common failure mode (expecting full proposal text). Pagination behavior is covered by the schema but not echoed here, which keeps it just below 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and filters, then the return shape, then routing/exclusions — a logical order with no filler. The 13-value status enumeration is partly redundant with the enum and slightly bloats the definition, though it does aid fast scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 return-value information and does so adequately: it names the metadata fields returned, states the full text is not included, and covers paging indirectly via the schema. Scope limits and the sibling alternative are both present, so an agent can call this correctly without further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% and both limit/offset are documented in-schema with paging semantics, so baseline is 3. The description adds the status vocabulary inline, but its list omits schema enum values 'Review', 'Superseded', and 'all', making it slightly lossy rather than additive; the type filter gets only a repeated example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Browse Canton Improvement Proposals (CIPs)') plus the filter dimensions. It explicitly scopes to Canton/Daml/Splice and disclaims other 'CIP' schemes, so the agent can tell it apart from get_cip and from unrelated proposal tooling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('discover or enumerate CIPs when you don't have a specific ID') and names the alternative ('use get_cip to read one'). It also adds a hard exclusion ('Canton/Daml/Splice governance only. Not Cardano or other CIP schemes'), which is exactly the routing information an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_deprecationsA
Read-onlyIdempotent
Inspect

List all known deprecated Daml/Canton CLI commands, packages, and tools with their modern replacements. Returns a compact table you can scan, optionally filtered by category (cli, package, tool, api, workflow). Canton/Daml/Splice only. Use this to enumerate or browse; use migrate_lookup for a specific name.

NameRequiredDescriptionDefault
categoryNoKind of thing deprecated. "all" (default) returns every category.all

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds return-shape context ("a compact table you can scan"), which matters because there is no output schema, though it stops short of describing table columns or row limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: what it returns, how to filter, scope, then routing. Zero padding and the core value is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by characterizing the result as a compact scannable table, and annotations carry the safety profile. Only minor gaps remain (no pagination or output-field detail) for a simple single-optional-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the enum already documents every category value, so the description's inline category list adds little. Baseline 3 is correct — the schema does the heavy lifting here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (deprecated Daml/Canton CLI commands, packages, and tools) plus the payoff (modern replacements). It draws a clear boundary against sibling migrate_lookup, which handles a single name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this to enumerate or browse; use migrate_lookup for a specific name" explicitly routes between two tools, and "Canton/Daml/Splice only" scopes the domain. Both the when-to-use and the alternative are stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_ecosystem_projectsA
Read-onlyIdempotent
Inspect

List Canton Network ecosystem projects (DeFi protocols, wallets, custody, infrastructure, NaaS, etc.) from the curated canton.wiki catalog. Filter by category or free-text query. Returns name, category, description and URL: a static directory of who-builds-on-Canton, not live on-chain/TVL data (use get_token_market for live DeFi TVL). Canton-only.

NameRequiredDescriptionDefault
limitNoHow many projects to return. Default 30, max 100. The response states the full count.
queryNoSearch in title/description/tags
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.
categoryNoFilter by category (e.g. "DeFi", "Wallets", "NaaS")
livenessNoRestrict to projects whose site last responded this way to CCPEDIA's daily probe. Omit for all of them; every row is labelled either way.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuinely non-structured context: the data is a curated static catalog rather than live on-chain/TVL data, it is Canton-only, and it lists the returned fields. It stops short of describing pagination/count behaviour, which is left to 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the core purpose front-loaded, followed by filtering capability, return shape and the disambiguation note. Every clause carries information; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the returned fields, and it flags the static-vs-live data boundary and Canton-only scope. Paging and the liveness-labelling behaviour are covered only by the schema, so an agent relying on the description alone would miss those, leaving a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 limit, offset, query, category and the liveness enum with defaults and bounds. The description only restates that filtering is possible by category or free text, adding no syntax, format or semantics beyond the schema. 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) plus resource (Canton Network ecosystem projects) and names the concrete source catalog (canton.wiki). It also enumerates the project types covered (DeFi, wallets, custody, infrastructure, NaaS) and names the return fields, so an agent can distinguish it from siblings like get_token_market or find_similar_projects 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly scopes the tool as a static directory and routes live DeFi TVL queries to get_token_market, which is a real alternative with a stated condition. It does not, however, address overlap with near-neighbours such as find_similar_projects, list_featured_apps or get_ecosystem_gaps, so usage guidance is clear but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_github_discussionsA
Read-onlyIdempotent
Inspect

List GitHub Discussions from Canton Network and Digital Asset repositories cached by CCPEDIA, sorted by recency (newest first). Filter by repo or category, or call with no filter to see which repos are present. CANTON-ONLY and read from CCPEDIA's cache, NOT the live GitHub API or the user's own repos (use a GitHub MCP for those). This is GitHub Discussions: distinct from the Canton web forum (get_discussion) and the sync.global mailing lists (list_mailing_threads). Use get_github_discussion for full body + comments.

NameRequiredDescriptionDefault
repoNoFilter by owner/name as shown in the unfiltered listing. Repos get transferred, so read the value from a result rather than assuming one.
limitNoHow many discussions to return, newest first. Default 15, max 50.
categoryNoFilter by Discussions category, e.g. "Q&A", "Ideas"

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: results come from CCPEDIA's cache rather than the live API, ordering is newest-first, and an unfiltered call reveals which repos exist. It does not detail pagination or cache staleness, keeping it just short of 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and scope, then packs routing guidance and the cache caveat into tight sentences. Dense but every clause carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description covers what is returned (recency-sorted discussions), how to broaden or narrow (no filter vs repo/category), where the data comes from (cache, not live), and how to get detail. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents repo, limit, and category (including the max 50 and the 'read repo from a result' caveat). The description adds marginal value by clarifying the filtering behavior and that a no-filter call surfaces present repos, which is not obvious from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (list GitHub Discussions), the exact scope (Canton Network and Digital Asset repos cached by CCPEDIA), sort order (newest first), and filtering options. It explicitly distinguishes itself from get_discussion (Canton web forum), list_mailing_threads (sync.global lists), and get_github_discussion (full body+comments), so an agent can route correctly without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when/when-not: use this for cached Canton-only discussions, but use a GitHub MCP for the live API or the user's own repos. It names the alternative tools for adjacent content types and points to get_github_discussion for detail. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_governance_votesA
Read-onlyIdempotent
Inspect

List Canton Network on-chain DSO governance vote requests and their outcomes, from the ledger itself. Covers Featured App rights being granted or revoked, Super Validator reward-weight changes, SV offboarding, and AmuletRules/DsoRules config changes. CCPEDIA-unique: no other public source exposes this joined to the CIP corpus. Use for 'what has the DSO decided recently', 'which apps got Featured App status', 'what got rejected'. For one CIP's fate use get_cip_vote_outcome; for one Super Validator's record use list_votes_by_sv. Canton ecosystem only.

NameRequiredDescriptionDefault
limitNoMax rows (default 20).
actionNoFilter by action, e.g. "SRARC_GrantFeaturedAppRight", "SRARC_RevokeFeaturedAppRight", "SRARC_UpdateSvRewardWeight", "SRARC_OffboardSv".
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.
statusNo"open" for votes still in flight, "closed" for decided ones. Omit for both; there is no "all" value.
outcomeNoFilter by outcome. Omit for all outcomes; there is no "all" value.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds provenance and scope that annotations cannot convey: data comes 'from the ledger itself', the corpus join is 'CCPEDIA-unique', and the tool is Canton-only (reinforcing openWorldHint=false). It stops short of describing paging/return-shape behavior, but the offset parameter schema already carries that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what it does, then coverage, then routing to alternatives – a sensible ordering with little filler. The 'CCPEDIA-unique' claim is slightly promotional, but it does convey data provenance. The multi-item coverage list is dense but each item is a distinct vote category an agent might query on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description conveys the return content (vote requests and outcomes) and scope well enough to invoke confidently. With five optional params, zero required, and full schema coverage, the remaining gap is only return-format detail, which is minor for a read-only list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – every one of the five filters (limit, offset, action, status, outcome) is documented in the schema, including enum values and the 'no all value' caveat. The description adds no filter syntax or format guidance beyond what the schema supplies, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource with scope: it lists Canton Network on-chain DSO governance vote requests and their outcomes, and enumerates the decision classes covered (Featured App rights, SV reward weight, SV offboarding, AmuletRules/DsoRules config). It also explicitly distinguishes itself from get_cip_vote_outcome and list_votes_by_sv, so an agent can route 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete intake phrases ('what has the DSO decided recently', 'which apps got Featured App status', 'what got rejected') plus explicit alternatives for narrower questions: one CIP's fate goes to get_cip_vote_outcome, one validator's record to list_votes_by_sv. It also states the boundary condition 'Canton ecosystem only', so when-not-to-use is implied for cross-ecosystem questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mailing_threadsA
Read-onlyIdempotent
Inspect

List threads from the Canton Network governance mailing lists (lists.sync.global groups: cip-discuss, cip-vote, cip-announce, grants-discuss, validator-announce, tokenomics-announce, supervalidator-announce). Filter by group, CIP number, or date. Canton-only. This is the EMAIL/mailing-list channel. Distinct from the web forum (get_discussion) and GitHub Discussions (list_github_discussions). Returns thread metadata only; use get_mailing_thread for message bodies.

NameRequiredDescriptionDefault
groupNoRestrict to one of the 7 indexed groups.
limitNoHow many threads to return. Default 20, max 100.
sinceNoEarliest last_post_at ISO date.
cip_idNoCIP number filter, e.g. "0117". Returns only threads tagged with this CIP.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful framing ('Returns thread metadata only', 'Canton-only', the channel identity) that tells the agent what the call yields and its scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four front-loaded sentences with no filler; the group enumeration and sibling disambiguation are the bulky parts but they earn their place. Slightly heavy on parenthetical detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description covers scope, filters, channel identity, and what it returns ('thread metadata only'). It does not describe return fields or paging behavior, but the schema's offset description carries paging, so it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented, and the description's 'filter by group, CIP number, or date' merely restates those dimensions. Baseline 3 applies because the schema carries the semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specifies a concrete verb and resource ('List threads from the Canton Network governance mailing lists') and enumerates the indexed groups. It explicitly distinguishes the email channel from the web forum (get_discussion) and GitHub Discussions (list_github_discussions), so an agent can route correctly without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the two sibling channels it is not and the follow-up tool (get_mailing_thread) for message bodies, which is genuine routing guidance. However, it never contrasts itself against search_mailing_list, a sibling covering the same source, so the list-vs-search decision is left unstated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_proposals_needing_championA
Read-onlyIdempotent
Inspect

List open Canton Dev Fund proposals waiting in the Needs Champion or Incoming columns of the Foundation's project board, i.e. with no champion confirmed there, oldest first, with what the proposal file and the PR text say about its champion. A proposal needs a champion, a sponsor from the Tech & Ops Committee, to move into review, and many stall without one. The bot labels needs-champion and champion-confirmed are deliberately NOT used as evidence: champion-confirmed is set from the PR text at filing and has been wrong. Evidence is the board column (champion assigned, Ready for Vote, Voting Live, Approved) plus the Champion line in the proposal file and in the PR text; a name there is the applicant's claim, not a confirmation. A proposal whose file is not held and whose PR text is silent is reported as "not stated", which does not mean "none". SIG-membership PRs are excluded. Canton-specific.

NameRequiredDescriptionDefault
rfpNoOnly proposals that declare this RFP number (label, PR text, title or proposal file).
limitNoHow many proposals to return. Default 20, max 50. The response states the full count.
offsetNoSkip this many before returning, for paging past the limit.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnly, idempotent, non-destructive, closed-world); the description adds substantial behavioral detail beyond them: the evidence rules (board column plus Champion lines), that a name is the applicant's claim rather than a confirmation, that labels are unreliable, and that 'not stated' does not mean 'none'. These are exactly the semantics an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose in the first sentence and orders the rest by evidence rules, disclaimers, and exclusions. It is dense and long, but nearly every sentence carries non-redundant domain knowledge, so it stays efficient without wasting space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 conveys what is returned (proposal-file and PR-text champion info, oldest first, full count), how filtering works, and the interpretation caveats for missing data. Nothing an agent needs to call or interpret the result is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so rfp, limit, and offset are already fully documented in the schema. The description adds no syntax or format meaning for these parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and a precisely scoped resource (open Canton Dev Fund proposals sitting in the Needs Champion or Incoming board columns with no confirmed champion). The scope, ordering (oldest first), and domain (Canton-specific) are all named, so an agent can distinguish it from get_proposals, list_stuck_proposals, and search_dev_fund.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when this applies (proposals that stall without a champion/sponsor) and states exclusions (SIG-membership PRs are excluded) plus an explicit when-not-evidence rule (needs-champion and champion-confirmed labels are deliberately not used). It does not, however, name a sibling tool to use instead, 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.

list_reposA
Read-onlyIdempotent
Inspect

List the Canton Network GitHub repositories that CCPEDIA has indexed (Canton org repos such as canton-foundation and Daml/Splice, excluding the dev-fund proposals repo), with the count of issues+PRs indexed per repo. CANTON-ONLY and read from CCPEDIA's cache. This is NOT a live GitHub API and does NOT list the user's own repos (use a GitHub MCP for that).

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false. The description adds genuinely new context: results come from CCPEDIA's cache, not live GitHub, which warns the agent about staleness, and it discloses that each repo carries an indexed issue+PR count. It stops short of saying how fresh the cache is, so not 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the resource and scope, then the behavioral caveat. The parenthetical org list is slightly dense and the 'CANTON-ONLY' emphasis partially repeats the opening clause, costing a small amount of tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description tells the agent what comes back (repos with per-repo issue+PR counts) and where the data originates (cache, not live API). Combined with annotations covering safety and the empty parameter set, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is an empty object at 100% coverage, so there is nothing for the description to disambiguate. Baseline for a 0-param tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

A specific verb (List) plus resource (Canton Network GitHub repos indexed by CCPEDIA), with scope spelled out: canton-foundation and Daml/Splice orgs, dev-fund proposals repo excluded, plus issue+PR counts. It explicitly distinguishes itself from a live GitHub API and from listing the user's own repos, so an agent can separate it from search_github_issues or an external GitHub MCP.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States when NOT to use it ('NOT a live GitHub API', 'does NOT list the user's own repos – use a GitHub MCP for that'), pointing the agent to the correct alternative. The Canton-only scoping also implicitly rules out non-Canton repo questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_rfpsA
Read-onlyIdempotent
Inspect

List the Canton Foundation Dev Fund Requests for Proposals (RFPs) from the 2026-2028 roadmap: number, title, category, and how many Dev Fund proposals declare each one. Pass number to read one RFP in full: what the Foundation asks for, its stated appetite for grants, prior funded examples, and the proposals declaring it. RFP numbers are the ones proposals and labels use (RFP 18 is Integration into SDLCs). A proposal counts only if a label, its PR text, its title or its proposal file names the RFP, and most proposals do not, so a low count is not proof that an area is uncrowded. Canton-specific. To find the RFP that fits an idea use find_rfp_for_idea.

NameRequiredDescriptionDefault
numberNoRFP number to read in full, e.g. 18. Omit to list every RFP.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe read-only, idempotent profile, yet the description adds substantive behavior: the counting rule (a proposal counts only if a label, PR text, title, or proposal file names the RFP), the fact that most proposals do not, and the caution that a low count is not proof of an uncrowded area. It also describes what a full read of one RFP returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and returned fields, then layered with usage routing and the counting caveat. Dense but largely earned; the numbering example and the uncrowded-area warning are the only mildly expendable lines, and both carry real interpretive value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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-value burden and does so for both modes (list vs. single-RFP read). It also supplies domain scoping ('Canton-specific') and the counting semantics an agent needs to interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter is already documented, so the baseline is 3. The description adds meaning beyond the schema: what passing `number` actually yields (what the Foundation asks for, grant appetite, prior funded examples, declaring proposals) and the RFP numbering convention ('RFP 18 is Integration into SDLCs').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the Canton Foundation Dev Fund Requests for Proposals') plus the exact fields returned (number, title, category, declaration count). It also contrasts itself with the sibling find_rfp_for_idea, so an agent can distinguish the enumeration tool from the matching tool 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Routes the agent explicitly: use find_rfp_for_idea to find the RFP that fits an idea, and pass `number` here to read one RFP in full. It also warns how to interpret low counts. There is no explicit when-not-to-use statement, but the alternative and its triggering condition are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_stuck_proposalsA
Read-onlyIdempotent
Inspect

Open Canton Dev Fund proposals that nothing has happened on for at least a number of days (no human comment, review or board move), oldest first, grouped by who the next step is on: the applicant (the committee asked for changes), the committee (someone is assigned or it is ready for a vote), nobody picked it up (no champion, no reviewer), or a vote. Each item states the reason in plain words and who acted last. Proposals whose board history is incomplete are listed apart as unplaced. Use for "what is stuck and on whom". Canton-specific.

NameRequiredDescriptionDefault
limitNoHow many proposals. Default 20, max 50. The response states the full count.
offsetNoSkip this many, for paging.
stuck_daysNoIdle for at least this many days. Default 30.
waiting_onNoOnly proposals whose next step is on this side.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds substantial context beyond annotations: oldest-first ordering, grouping categories, handling of incomplete board history as unplaced, and per-item reasons and last actor. This is rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded: the core stuck definition appears first, followed by grouping logic and usage guidance. Every clause adds relevant selection information, though the single long paragraph could be slightly easier to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter read-only listing tool with no output schema, the description explains the result grouping, ordering, per-item contents, and edge-case handling. An agent has enough information to decide when and how to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameter documentation is already strong and a baseline of 3 applies. The description adds useful meaning beyond the schema by explaining the waiting_on categories and the idle-day condition behind stuck_days.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb/resource combination: open Canton Dev Fund proposals with no recent activity, grouped by who must act next. It clearly distinguishes the tool from generic proposal listing by defining stuck conditions and grouping. An agent can identify the tool 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use it for "what is stuck and on whom," which gives clear selection context. It does not name sibling alternatives or when-not-to-use cases, but the usage scenario is stated plainly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_videosA
Read-onlyIdempotent
Inspect

List Canton Network videos cached in CCPEDIA, filtered by channel (Canton Network, Digital Asset, Sync Insights, Canton Foundation, Daml, Digital Asset Training), publish date (since), and transcript availability. CANTON-ONLY corpus. These are curated Canton ecosystem videos, not general YouTube. Returns metadata only (id, title, channel, date); call get_video with an id for the transcript.

NameRequiredDescriptionDefault
limitNoHow many videos to return. Default 20, max 100.
sinceNoEarliest published_at (ISO date, e.g. "2026-01-01"). Default: no lower bound.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.
channelNoChannel name filter, one of Canton Network, Digital Asset, Sync Insights, Canton Foundation, Daml, Digital Asset Training. Case-insensitive substring.
has_transcriptNoIf true, only return videos with a stored transcript. If false, only those still missing one. Omit for both.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, openWorld=false), but the description adds genuinely new context: the corpus is a local cache restricted to Canton channels, and it enumerates the returned metadata fields (id, title, channel, date), which matters because there is no output schema. It stops short of describing paging/count behavior, which the offset param handles.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: scope and filters first, corpus boundary second, return shape and next step last. No filler, and the most decision-relevant constraint (Canton-only) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero required params, no output schema, and full schema coverage, the description supplies exactly the missing pieces: what comes back, what doesn't (transcripts), and where to go next. Nothing an agent needs in order to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter is already documented with defaults, bounds, and matching semantics. The description's channel list and 'since'/'transcript availability' mention merely restate what the schema declares, adding no syntax or edge-case detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('List Canton Network videos cached in CCPEDIA') with the filtering dimensions named up front. It sharply differentiates from get_video (metadata vs transcript) and from any general YouTube tooling by declaring 'CANTON-ONLY corpus ... not general YouTube'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use (curated Canton ecosystem videos), when-not-to-use (general YouTube), and the alternative route for a different need ('call get_video with an id for the transcript'). An agent can decide between list_videos and get_video without inspecting either schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_votes_by_svA
Read-onlyIdempotent
Inspect

Get the on-chain voting record of Canton Super Validators: how many DSO governance votes each has cast, how often they voted for or against, how often they abstained, and the span of their participation. Use for 'how does Tradeweb vote', 'which SVs abstain most', 'who is most active in governance'. CCPEDIA-unique: derived from the full ledger vote history. Canton ecosystem only.

NameRequiredDescriptionDefault
sv_nameNoSuper Validator short name, e.g. "Tradeweb-Markets-1", "Digital-Asset-1", "Cumberland-1". Omit for all of them.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a read-only, idempotent, non-destructive, closed-world operation, so the safety profile is covered. The description adds valuable provenance ('derived from the full ledger vote history') and ecosystem scope ('Canton ecosystem only'), though it omits any notes on freshness or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with the core purpose and return metrics, then adds example queries and scope notes. Every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter and rich annotations, the description is complete: it explains what data is returned, the data source, the ecosystem scope, and gives usage examples. No output schema exists, but the description enumerates the key returned metrics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the single optional sv_name parameter is fully described in the schema, including examples and the omit-for-all behavior. The description itself adds no parameter-level semantics beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: getting on-chain voting records of Canton Super Validators, with concrete metrics (votes cast, for/against, abstentions, participation span). It is clear what the tool returns, but it never explicitly contrasts itself with siblings like list_governance_votes or get_cip_votes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful example use cases ('how does Tradeweb vote', 'which SVs abstain most', 'who is most active in governance') that clarify when to use it. It does not name when to use an alternative tool or state exclusions, so it falls 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.

list_whitepapersA
Read-onlyIdempotent
Inspect

List every Canton Network whitepaper indexed by CCPEDIA, returning slug, title, description, tag and page count (metadata only, no body). Use the returned slug with get_whitepaper to fetch full content. Canton-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: results are metadata only with no body, and it enumerates the exact fields returned. It does not mention pagination or result-size limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: scope and content first, then the follow-up routing hint, then the Canton-only constraint. No filler and every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by listing the exact return fields and clarifying that bodies are excluded. Combined with annotations covering the safety profile, an agent has everything needed to call it and chain to get_whitepaper.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema has nothing to describe and the baseline is 4. The description's enumeration of returned fields is output information, not parameter semantics, but nothing is missing on the input side.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (Canton Network whitepapers indexed by CCPEDIA), and names the returned fields, so it is immediately distinguishable from the get_whitepaper sibling. The 'Canton-only' scope qualifier further narrows intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prescribes the follow-up workflow: use the returned slug with get_whitepaper to fetch full content, which routes the agent between the two sibling tools. It does not state when not to use this tool, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

migrate_lookupA
Read-onlyIdempotent
Inspect

Look up the modern replacement for a deprecated Daml/Canton CLI command, npm package, or tool (e.g. "daml start", "@daml/ledger", "Navigator", "Daml Triggers", "splice-wallet-payments subscription"). Returns the replacement, since-version, install instructions when applicable, and a migration note. Canton/Daml/Splice ecosystem only. Use when a user mentions a specific deprecated symbol; use list_deprecations to enumerate all known pairs or browse by category.

NameRequiredDescriptionDefault
queryYesThe deprecated command, package, or tool name to look up. Best-match search.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds return-content detail (replacement, since-version, install instructions, migration note), which is helpful context but not deep behavioral disclosure beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and immediately followed by returns and scope before usage guidance. The inline example list is slightly long but earns its place by illustrating accepted input forms; no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only lookup with no output schema, the description supplies the missing return-value contract, domain scope, and invocation guidance. An agent has everything needed to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema description coverage is 100%, so the schema already documents the query field as a best-match search. The description's examples clarify the kind of symbol the query accepts but add no syntax or format beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (look up) plus a precise resource (the modern replacement for a deprecated Daml/Canton CLI command, package, or tool). The concrete examples ('daml start', '@daml/ledger', 'splice-wallet-payments subscription') and the stated scope (Canton/Daml/Splice only) make the tool immediately identifiable apart from generic search siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the trigger ('when a user mentions a specific deprecated symbol') and names list_deprecations as the alternative for enumerating or browsing all pairs. It does not mention check_deprecation, which appears to be a close sibling, leaving one plausible alternative undistinguished.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

outdated_guidance_detectorA
Read-onlyIdempotent
Inspect

Surface CCPEDIA content that mentions deprecated Canton/Daml tooling alongside the user's query: likely outdated. Cross-references foundation_kb.DEPRECATED with doc_pages, forum_posts, and blog_posts. Canton-specific.

NameRequiredDescriptionDefault
queryYesTopic to scan.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine behavioral detail beyond them: the tool cross-references foundation_kb.DEPRECATED against doc_pages, forum_posts and blog_posts, and its output is a heuristic ('likely outdated') rather than authoritative — a distinction that matters when the agent decides whether to trust the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the outcome ('surface content that is likely outdated') before the supporting cross-reference mechanics. The clipped 'Canton-specific.' fragment is terse but functional and costs nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 supplies the essentials: what it returns conceptually, which data sources it joins, and the heuristic caveat. It stops short of describing result volume, ranking or output shape, which the absent output schema leaves undefined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single required parameter with 100% schema description coverage ('Topic to scan'), so the schema already carries the semantics and the baseline is 3. The description only restates that the query is used to find matching content, adding no format, scope or matching-behavior detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('surface') plus a precise resource class ('CCPEDIA content that mentions deprecated Canton/Daml tooling'), so the agent knows this is an outdated-doc finder, not a generic deprecation lookup. It is not explicitly contrasted with siblings like check_deprecation or list_deprecations, but the 'likely outdated content' framing is distinctive enough to route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'alongside the user's query: likely outdated' implies when to reach for it, and 'Canton-specific' implicitly bounds scope, but there is no stated when-not-to-use case and no mention of the obvious alternatives (check_deprecation, get_kb_drift, list_deprecations) that an agent would otherwise confuse it with.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proposal_success_predictorA
Read-onlyIdempotent
Inspect

Heuristic readiness score for a Dev Fund proposal draft, based on attributes that correlate with approval in the historical corpus: explicit milestones, code/PoC references, sources, scope realism. Canton-specific. Not a vote; a checklist.

NameRequiredDescriptionDefault
draft_textYesFull draft text.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, closed-world and non-destructive, so the safety profile is covered. The description adds real context beyond that: it is a heuristic correlational score, not an authoritative vote, and is Canton-scoped. It does not describe the output shape, but the 'heuristic/checklist' framing meaningfully sets expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the core purpose and criteria, then tight qualifiers ('Canton-specific. Not a vote; a checklist.'). Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 convey returns, and it does so conceptually (a readiness score plus checklist attributes). It stops short of specifying the output format or scale, a minor gap for a single-input scoring tool whose safety profile is already covered by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (draft_text) with 100% schema description coverage ('Full draft text.'), so the schema carries the semantics. The description reinforces what the draft is scored on but adds no format or length guidance beyond the schema, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and resource: a heuristic readiness score for a Dev Fund proposal draft. It also names the scoring criteria (milestones, code/PoC references, sources, scope realism) and explicitly distinguishes what it is not ('Not a vote; a checklist'), setting it apart from retrieval-oriented siblings like get_proposal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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 evaluates a draft, and 'Not a vote; a checklist' clarifies its advisory nature. However, there is no explicit when-to-use trigger or routing to alternatives (e.g., get_dev_fund_lifecycle for tracking an accepted proposal), leaving the boundary to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_communityA
Read-onlyIdempotent
Inspect

One-call semantic-style search across CCPEDIA's community sources at once: forum, mailing lists, blog, and GitHub discussions. Canton-specific. Use when you want to scan everything written by humans (not docs/code) for a topic.

NameRequiredDescriptionDefault
limitNoMax hits per source (default 5).
queryYesFree-text query.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds 'semantic-style' ranking and 'Canton-specific' scope, but says nothing about how results from four heterogeneous sources are merged, deduplicated, or ranked, nor about result volume beyond the schema's per-source limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the source enumeration and aggregation scope come first, then the usage condition. Every clause earns its place and nothing is repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter search with no output schema, the description supplies the sources, the domain scope, and the trigger condition, which is enough to invoke it correctly. It is only slightly short on what a multi-source result set looks like, which matters when four sources can each contribute up to the limit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (query, limit) are documented inline including the default of 5 per source, so the schema does the heavy lifting. The description adds no syntax, format, or query-construction guidance beyond what the schema already states, which is the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and enumerates the exact resource set (forum, mailing lists, blog, GitHub discussions), and explicitly scopes out docs/code. That differentiates it from get_doc/find_code_examples, though it never names the single-source siblings (search_mailing_list, search_github_issues) it aggregates over, so the 'one-call at once' framing carries the differentiation implicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when you want to scan everything written by humans (not docs/code) for a topic' gives a clear trigger plus an explicit exclusion. It stops short of naming the alternative tools to prefer for a single source or for code/doc lookups, so the agent must infer the routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_dev_fundA
Read-onlyIdempotent
Inspect

Search ALL Canton Dev Fund text for words: proposal files, PR descriptions, every comment, formal review and inline review comment, ranked by relevance with a snippet around the match. Scope can be narrowed to comments, proposal_files or descriptions, and to one GitHub author. Use for "who said what about X", "which proposals mention Y", "did a reviewer object to Z". Default mode "words" is lexical (the words must appear, exact and exhaustive). Mode "meaning" searches the same text by meaning with embeddings plus words, so "did anyone worry about validator uptime" finds a comment that never says uptime; it cannot be limited to one author. For a ranked pick among whole proposals for an idea use find_rfp_for_idea or detect_builder_overlap. Canton-specific.

NameRequiredDescriptionDefault
modeNowords (default): exact, exhaustive, every word must appear. meaning: best match by meaning and words together, over comments, proposal files and PR descriptions; does not support the author filter.words
limitNoHow many hits to return. Default 10, max 30.
queryYesWords to look for, e.g. "indexer champion" or "volatility amendment". In mode "meaning", a plain-language question or phrase.
scopeNoall, comments (comments + reviews + inline review comments), proposal_files, or descriptions (titles and descriptions of pull requests and tracking issues).all
authorNoGitHub login; limits comments and PR descriptions to that person.
offsetNoSkip this many hits, for paging.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: mode 'words' is exact and exhaustive (every word must appear), while 'meaning' uses embeddings plus words and cannot be limited to one author. It stops short of detailing pagination behavior, but the mode semantics are the important disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is dense but front-loads the core action and scope before modes and alternatives, and every sentence carries routing or behavioral value. Slightly long, but the information density justifies most of it with little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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-value burden and does so ('ranked by relevance with a snippet around the match'). Combined with the mode/scope/author semantics, an agent has everything needed to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. However the description meaningfully explains the mode enum's behavioral difference and the cross-parameter constraint that 'meaning' mode cannot be limited to one author, information that complements rather than merely restates the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb (search) and a precisely scoped resource (ALL Canton Dev Fund text: proposal files, PR descriptions, comments, formal and inline reviews), plus the return shape (ranked by relevance with a snippet). It is clearly distinguishable from generic siblings like search, semantic_search, and search_github_issues.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit trigger questions ('who said what about X', 'which proposals mention Y', 'did a reviewer object to Z') and routes the agent elsewhere for a different need: 'For a ranked pick among whole proposals for an idea use find_rfp_for_idea or detect_builder_overlap.' It also distinguishes the two modes by the question type each answers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_github_issuesA
Read-onlyIdempotent
Inspect

Full-text search across CCPEDIA's indexed GitHub issues (15+ Canton repos). Canton ecosystem only. Use to find prior reports / open bugs / requested features. For PRs use get_proposals (Dev Fund grant PRs) or search with type="github" (broader).

NameRequiredDescriptionDefault
limitNoMax rows (default 10).
queryYesFree-text query.
stateNoIssue state filter (default: all).
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already cover the safety profile (readOnlyHint: true), the description adds essential behavioral context regarding data scope—namely, that it is restricted to 'CCPEDIA's indexed' repositories and the 'Canton ecosystem only.' This scope limitation is a key behavioral trait not covered by structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise. It front-loads the most important constraints (what and where) in the first sentence, followed by the intended use cases, and finally, clear routing instructions to siblings. There is zero wasted language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high schema coverage and safety annotations, the description successfully provides all necessary context for an agent to select this tool correctly and understand its scope limitations without ambiguity. It is exceptionally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema description coverage is 100%, the input schema already provides thorough semantics for all parameters. The description does not add additional meaning to the parameter definitions themselves, thus meeting the baseline standard.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Full-text search) and the specific resource (CCPEDIA's indexed GitHub issues). It explicitly limits the scope to the 'Canton ecosystem only,' which differentiates it from generic search tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance on when to use the tool ('find prior reports / open bugs / requested features'). Crucially, it names two specific alternatives and the conditions under which they should be used (e.g., using get_proposals for PRs, or search with type='github' for broader queries).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_mailing_listA
Read-onlyIdempotent
Inspect

Search across CCPEDIA's indexed Canton mailing-list archives (cip-discuss, cip-vote, grants-discuss, validator-announce, etc). Canton-specific.

NameRequiredDescriptionDefault
groupNoOptional group_slug filter, e.g. "cip-discuss".
limitNoMax rows (default 10).
queryYesFree-text query. Appears in subject or body.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that the search runs over a pre-built index of specific Canton archives, which is useful scope context, but it says nothing about result ranking, pagination behavior, or empty-result handling beyond what the schema already notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the corpus and its scope qualifier front-loaded. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, closed-world search tool with a fully documented 4-parameter schema and annotations covering the safety profile, the description supplies the corpus scope an agent needs. The lack of an output schema is partially offset by the offset parameter's note that the response echoes the full count and offset used, though the description itself does not describe return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so group, limit, query, and offset are all already documented in the schema, including the offset's paging semantics and the response's full-count echo. The description adds no parameter-level detail beyond the schema, which is the expected baseline 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (Canton mailing-list archives) and enumerates the indexed groups (cip-discuss, cip-vote, grants-discuss, validator-announce), which tells the agent exactly what corpus is covered. It does not, however, distinguish itself from siblings like search, semantic_search, or list_mailing_threads, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the enumerated group slugs and the 'Canton-specific' qualifier suggest when this corpus is the right target, but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. semantic_search for fuzzy lookups, list_mailing_threads for browsing). The agent gets context but no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_release_notesA
Read-onlyIdempotent
Inspect

Search across release-notes bodies of all indexed Canton repos for a feature/keyword. Canton-specific. Use to find which release first mentioned X.

NameRequiredDescriptionDefault
featureYesFeature keyword, e.g. "logical synchronizer", "topology", "wallet kernel".

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and openWorld=false, so the safety profile is covered. The description adds useful scope (Canton repos, bodies rather than titles, indexed corpus) but says nothing about result format, ordering, or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences with no filler; the purpose leads and the use case follows. 'Canton-specific' is a slightly clipped fragment but overall tight and well ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only lookup, the description plus annotations plus a fully documented schema give the agent everything needed to invoke it correctly. No output schema exists, but the return concept (release notes matching a keyword) is clear from context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema already documents it at 100% coverage with concrete examples like "logical synchronizer". The description's 'feature/keyword' merely restates the parameter, adding no syntax or matching semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and a precise resource (release-notes bodies of all indexed Canton repos), plus scope (Canton-specific). This meaningfully distinguishes it from the many sibling search tools, though it does not name any of them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete use case – 'find which release first mentioned X' – which is exactly the question this tool answers. It lacks any when-not guidance or pointer to alternatives such as get_latest_release or get_sdk_changelog, so it falls 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.

search_talksA
Read-onlyIdempotent
Inspect

Search CCPEDIA's indexed Canton talks/videos (YouTube transcripts). Canton-specific. Returns matches across title + transcript with the best-matching passage, its time in the video and a link that opens the video there.

NameRequiredDescriptionDefault
limitNoMax rows (default 5).
queryYesFree-text query. Appears in title or transcript.
offsetNoSkip this many before returning, for paging past the limit. The response states the full count and echoes the offset used.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered. The description earns credit for disclosing the response shape beyond annotations: best-matching passage, its timestamp in the video, and a deep link that opens there. It does not say whether matching is keyword or semantic, which matters for query phrasing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the capability statement front-loaded and the return value last. 'Canton-specific' is mildly redundant next to 'Canton talks/videos' but does reinforce scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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-value explanation and does so adequately, including the deep-link behavior. What remains unstated is index freshness/coverage and whether results are ranked by relevance, which would matter for interpreting matches and paging.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so query/limit/offset are already fully documented with bounds and defaults. The description adds only that the query matches title + transcript, which is modest added meaning over the schema's 'Appears in title or transcript' wording.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (search) and a specific resource (CCPEDIA's indexed Canton talks/YouTube transcripts), plus the match surface (title + transcript). An agent can tell this is video-content search rather than a general knowledge search, though it never names the nearest siblings (get_video, list_videos, semantic_search) 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement and no exclusions or alternatives. 'Canton-specific' is the only scoping cue, leaving the agent to infer that it should choose this over list_videos or semantic_search on its own.

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.

  1. 1 tool update
    • Changedlist_cips1 field changed
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "Draft",
        -  "Early Draft",
        -  "In Review",
        -  "Proposed",
        -  "Approved",
        -  "Active",
        -  "Final",
        -  "Withdrawn",
        -  "Rejected",
        -  "Replaced",
        -  "Obsolete",
        -  "Pending",
        -  "Review",
        -  "Superseded",
        -  "all"
        -]New value: +[
        +  "Draft",
        +  "Early Draft",
        +  "In Review",
        +  "Proposed",
        +  "Proposed Amendment",
        +  "Approved",
        +  "Active",
        +  "Final",
        +  "Withdrawn",
        +  "Rejected",
        +  "Replaced",
        +  "Obsolete",
        +  "Pending",
        +  "Review",
        +  "Superseded",
        +  "all"
        +]
  2. 2 tool updates
    • Addedget_blog_post
    • Addedlist_blog_posts
  3. 3 tool updates
    • Changedget_video2 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Character position to start reading the transcript from, for a long one. The response names the offset that continues the read.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Return only the passages of the transcript that mention these words, each with its time and a link that opens the video at that moment. Replaces the plain read; offset is ignored.",
        +  "maxLength": 200,
        +  "minLength": 2,
        +  "type": "string"
        +}
    • Changedlist_videos1 field changed
      • changedInput schema / properties / channel / description
        Previous value: -"Channel name filter, e.g. \"Canton Network\", \"Digital Asset\", \"Sync Insights\", \"Canton Foundation\", \"Daml\". Case-insensitive substring."New value: +"Channel name filter, one of Canton Network, Digital Asset, Sync Insights, Canton Foundation, Daml, Digital Asset Training. Case-insensitive substring."
    • Changedsearch_talks1 field changed
      • addedInput schema / properties / query / maxLength
        Added value: +200
  4. 102 tool updates
    • Changedcall_canton_mcp1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcheck_deprecation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcommunity_consensus1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_governance_outcomes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedcompare_to_evm1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddetect_builder_overlap1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddetect_cip_dependency_chain1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddetect_drift1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddiagnose_error1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedecosystem_dependency_graph1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_apps_by_pattern1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_cip_for_feature1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_code_examples1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_collaboration_opportunities1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_duplicate_proposals1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_expert1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_known_issues1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_maintainer_guidance1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_rfp_for_idea1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_security_patches1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfind_similar_projects1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfull_context1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_api_reference1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_app_metrics1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_asset_supply1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_breaking_changes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip_attachments1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip_citations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip_history1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip_implementation_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip_mentions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip_vote_outcome1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_cip_votes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_current_versions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_defi_pools1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_dev_fund_activity1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_dev_fund_lifecycle1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_dev_fund_person1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_discussion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_doc1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_ecosystem_gaps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_faq1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_foundation_info1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_funding_landscape1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_github_discussion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_governance_vote1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_issue_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_kb_drift1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_latest_release1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_mailing_thread1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_network_state1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_network_stats1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_npm_packages1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_proposal1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_proposal_discussion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_proposal_file1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_proposal_milestones1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_proposals1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_radar1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_recent_changes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_recent_deployments1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_recurring_issue_fingerprint1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_sdk_changelog1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_started_guide1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_sv_schedule1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_token_market1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_trending1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_upcoming_deadlines1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_upcoming_operations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_upgrade_status1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_validator1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_validator_fleet1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_video1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedget_whitepaper1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlearning_path1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_canton_mcps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_cips1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_deprecations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_ecosystem_projects1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_featured_apps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_github_discussions1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_governance_votes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_mailing_threads1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_proposals_needing_champion1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_repos1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_rfps1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_stuck_proposals1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_videos1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_votes_by_sv1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlist_whitepapers1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmigrate_lookup1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedoutdated_guidance_detector1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedproposal_success_predictor1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch_community1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch_dev_fund1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch_github_issues1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch_mailing_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch_release_notes1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsearch_talks1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsemantic_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  5. 1 tool update
    • Changedget_kb_drift1 field changed
      • changedInput schema / properties / refresh / description
        Previous value: -"If true, re-run the validator before returning the report. Default false uses the most recent stored findings."New value: +"If true, evaluate the rules now against the live tables and report that, without storing it. Default false uses the findings stored by the last daily check."
  6. 3 tool updates
    • Addedfind_duplicate_proposals
    • Addedget_dev_fund_lifecycle
    • Addedlist_stuck_proposals
  7. 2 tool updates
    • Changedsearch_dev_fund2 fields changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "default": "words",
        +  "description": "words (default): exact, exhaustive, every word must appear. meaning: best match by meaning and words together, over comments, proposal files and PR descriptions; does not support the author filter.",
        +  "enum": [
        +    "words",
        +    "meaning"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Words to look for, e.g. \"indexer champion\" or \"volatility amendment\"."New value: +"Words to look for, e.g. \"indexer champion\" or \"volatility amendment\". In mode \"meaning\", a plain-language question or phrase."
    • Changedsemantic_search2 fields changed
      • changedInput schema / properties / source_types / description
        Previous value: -"Restrict to these source types. \"proposal\" is a Dev Fund grant request; \"github_item\" is an ordinary issue or PR from any other indexed repo; \"sdk_version\" is a released package version from the npm/Docker registries. Omit for all."New value: +"Restrict to these source types. \"proposal\" is a Dev Fund grant request; \"github_item\" is an ordinary issue or PR from any other indexed repo; \"sdk_version\" is a released package version from the npm/Docker registries; \"dev_fund_comment\" is a comment, review or inline review comment on a Dev Fund PR; \"dev_fund_file\" is a proposal file. Omit for all."
      • changedInput schema / properties / source_types / items / enum
        Previous value: -[
        -  "cip",
        -  "doc_page",
        -  "forum_topic",
        -  "mailing_message",
        -  "proposal",
        -  "github_item",
        -  "whitepaper",
        -  "blog_post",
        -  "github_release",
        -  "github_discussion",
        -  "ecosystem_project",
        -  "foundation_kb",
        -  "youtube_video",
        -  "gov_vote",
        -  "radar_item",
        -  "cip_attachment",
        -  "sdk_version"
        -]New value: +[
        +  "cip",
        +  "doc_page",
        +  "forum_topic",
        +  "mailing_message",
        +  "proposal",
        +  "github_item",
        +  "whitepaper",
        +  "blog_post",
        +  "github_release",
        +  "github_discussion",
        +  "ecosystem_project",
        +  "foundation_kb",
        +  "youtube_video",
        +  "gov_vote",
        +  "radar_item",
        +  "cip_attachment",
        +  "sdk_version",
        +  "dev_fund_comment",
        +  "dev_fund_file"
        +]
  8. 7 tool updates
    • Addedget_dev_fund_activity
    • Addedget_dev_fund_person
    • Addedget_proposal
    • Addedget_proposal_discussion
    • Addedget_proposal_file
    • Changedlist_proposals_needing_champion1 field changed
      • changedInput schema / properties / rfp / description
        Previous value: -"Only proposals that declare this RFP number (label or PR text)."New value: +"Only proposals that declare this RFP number (label, PR text, title or proposal file)."
    • Addedsearch_dev_fund
  9. 3 tool updates
    • Addedfind_rfp_for_idea
    • Addedlist_proposals_needing_champion
    • Addedlist_rfps
  10. 1 tool update
    • Changedlist_mailing_threads2 fields changed
      • changedInput schema / properties / group / description
        Previous value: -"Restrict to one of the 8 indexed groups."New value: +"Restrict to one of the 7 indexed groups."
      • changedInput schema / properties / group / enum
        Previous value: -[
        -  "cip-discuss",
        -  "cip-vote",
        -  "cip-announce",
        -  "globalSyncForum",
        -  "grants-discuss",
        -  "validator-announce",
        -  "tokenomics-announce",
        -  "supervalidator-announce"
        -]New value: +[
        +  "cip-discuss",
        +  "cip-vote",
        +  "cip-announce",
        +  "grants-discuss",
        +  "validator-announce",
        +  "tokenomics-announce",
        +  "supervalidator-announce"
        +]
  11. 1 tool update
    • Changedget_recent_changes2 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"How many changes to return, newest first. Default 50, max 200."New value: +"How many changes to return, newest first. Default 50, max 500."
      • changedInput schema / properties / limit / maximum
        Previous value: -200New value: +500
  12. 2 tool updates
    • Addedget_asset_supply
    • Addedget_defi_pools
  13. 1 tool update
    • Changedlist_mailing_threads2 fields changed
      • changedInput schema / properties / group / description
        Previous value: -"Restrict to one of the eight indexed groups."New value: +"Restrict to one of the 8 indexed groups."
      • changedInput schema / properties / group / enum
        Previous value: -[
        -  "cip-discuss",
        -  "cip-vote",
        -  "cip-announce",
        -  "globalSyncForum",
        -  "grants-discuss",
        -  "validator-announce",
        -  "supervalidator-announce",
        -  "tokenomics-announce"
        -]New value: +[
        +  "cip-discuss",
        +  "cip-vote",
        +  "cip-announce",
        +  "globalSyncForum",
        +  "grants-discuss",
        +  "validator-announce",
        +  "tokenomics-announce",
        +  "supervalidator-announce"
        +]
  14. 1 tool update
    • Changedlist_cips1 field changed
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "Draft",
        -  "Early Draft",
        -  "In Review",
        -  "Proposed",
        -  "Approved",
        -  "Active",
        -  "Final",
        -  "Withdrawn",
        -  "Rejected",
        -  "Replaced",
        -  "Obsolete",
        -  "Review",
        -  "Superseded",
        -  "all"
        -]New value: +[
        +  "Draft",
        +  "Early Draft",
        +  "In Review",
        +  "Proposed",
        +  "Approved",
        +  "Active",
        +  "Final",
        +  "Withdrawn",
        +  "Rejected",
        +  "Replaced",
        +  "Obsolete",
        +  "Pending",
        +  "Review",
        +  "Superseded",
        +  "all"
        +]

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    Not graded
    maintenance
    Enables AI assistants to query the Canton Network blockchain explorer through the CC Explorer Pro API. It provides tools for accessing ledger updates, governance votes, validator information, and network consensus data.
    14
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides tools for AI assistants to query the Canton Network for data on contracts, governance, validators, and party transactions through the Lighthouse Explorer API. It enables seamless interaction with blockchain statistics, price history, and name services without requiring an API key.
    494 npm
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enforces protocol-driven development by validating requirements, designs, scope, and acceptance evidence, while maintaining immutable, traceable governance archives.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.