DERO MCP Server
Server Details
Read-only DERO blockchain MCP: 32 tools (11 composites) incl. TELA discovery + bundled docs.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- DHEBP/dero-mcp-server
- GitHub Stars
- 2
- Server Listing
- dero-mcp-server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.7/5 across 32 of 32 tools scored.
Each tool has a clearly distinct purpose, with detailed descriptions that specify when to call it and how it differs from similar tools. Composite tools are well-defined, overlapping concerns are minimized.
Tool names follow a general pattern: 'dero_' for core daemon RPC wrappers, 'tela_' for TELA-specific composites, and descriptive names for other composites. While mostly consistent, there are exceptions like 'audit_chain_artifact_claim' and 'dero_durl_to_scid' breaking the pattern slightly.
With 32 tools, the server is comprehensive but slightly heavy. However, each tool serves a specific need in the DERO ecosystem, covering chain queries, docs, TELA, and composite analyses. The count is justifiable given the domain breadth.
The tool set covers core chain operations, documentation, TELA app lifecycle, and common analytical tasks. Minor gaps exist, such as lack of wallet interaction tools or transaction submission, but these are outside the apparent read-only/analysis scope.
Available Tools
32 toolsaudit_chain_artifact_claimARead-onlyInspect
Composite: audit a chain artifact (block topoheight, block hash, TX hash, and/or proof string) end-to-end. Returns a verdict (cited_in_false_claim | clean), the actual on-chain facts (block reward, TX acceptance status), an optional proof-string decode, a relayable narrative, and curated rebuttal docs citations.
When to call: when the user asks "what's going on with DERO block X?" / "is this transaction the inflation-claim TX?" / "does this proof string come from a known false claim?" PREFER this over chaining dero_get_block_header_by_topo_height + dero_get_transaction + dero_decode_proof_string yourself: the composite already runs them in parallel, joins them against the flagged false-claim registry, and emits a single verdict field plus a narrative so the agent does not need to compose the rebuttal arc from scratch each time.
Input Requirements (CRITICAL):
At least ONE of
topoheight,block_hash,tx_hash, orproof_stringMUST be provided. The composite throwsINVALID_INPUTotherwise.topoheightis OPTIONAL. Non-negative integer.block_hashis OPTIONAL. 64 hex characters.tx_hashis OPTIONAL. 64 hex characters.proof_stringis OPTIONAL. Fullderoproof…/ DERO bech32 string with HRP.include_forge_demois OPTIONAL (default false). When true ANDtx_hashis provided, also forges a fresh demo proof for the same TX (viadero_forge_demo_proof) and embeds it underforge_demo. The demo amount auto-selects: a flagged artifact's pinned amount (e.g. -2.2M for the 2022 claim) > the citedproof_stringV > -1 DERO. PREFER setting this true when the agent is fielding a "Verified ✓ means the chain minted coins, right?" question — the embedded forge IS the refutation.
Output: { verdict, inputs, matched_artifacts[], context_note, chain_facts, proof_decode, forge_demo, narrative, related_docs, _diagnostics }. verdict is cited_in_false_claim when any input matches the flagged-artifact registry, else clean. chain_facts is null when no chain-querying input was provided or all daemon calls failed; proof_decode is null when no proof_string was provided. forge_demo is null unless include_forge_demo: true was passed; on success it carries { skipped: false, forged_proof_string, target_amount, ring_slot, ring_size, ring_receiver_address, math, self_check, explorer_display_amount, demo_amount_source } (the slim form — full citations stay at the top level).
PREFER citing the returned related_docs verbatim in the agent response — they are the canonical rebuttal pages and have been validated against the bundled docs index by CI. Quote the context_note when verdict is cited_in_false_claim so the user understands why the artifact matters.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hash | No | 64-char hex transaction hash to audit. | |
| block_hash | No | 64-char hex block hash to audit. | |
| topoheight | No | Topological height of a block to audit. | |
| proof_string | No | Optional `deroproof…` / DERO bech32 string to also decode and check. | |
| include_forge_demo | No | When true AND tx_hash is provided, also forge a fresh demo proof for the same TX (via dero_forge_demo_proof) and embed it under `forge_demo`. Closes the rebuttal loop in one tool call. Default false. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description explains that calls run in parallel, join against a false-claim registry, and return a unified verdict. It also describes fallback behavior: chain_facts is null on failure, proof_decode null without proof_string, forge_demo null unless include_forge_demo true. No contradiction with readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with sections, front-loading purpose and usage. Every sentence adds value, though some details could be streamlined slightly. It earns a 4 for being thorough without being excessively verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully documents all output fields, their null conditions, and how to use related_docs and context_note. It covers error states and provides comprehensive guidance for a complex composite tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds precise format constraints (e.g., '64 hex characters' for tx_hash and block_hash, 'deroproof…' for proof_string) and auto-selection logic for include_forge_demo. Schema coverage is 100%, but description still adds significant meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a composite that audits a chain artifact end-to-end, returns a verdict, on-chain facts, proof decode, narrative, and citations. It distinguishes from siblings by explicitly recommending this over chaining individual RPC calls like dero_get_block_header_by_topo_height + dero_get_transaction + dero_decode_proof_string.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists 'When to call' scenarios (e.g., 'what's going on with DERO block X?') and provides a strong preference statement. It also details input requirements, including the critical 'at least one of four parameters' rule and conditions for include_forge_demo.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_daemon_echoARead-onlyInspect
Echo strings through the daemon via DERO.Echo. Useful for round-trip sanity checks.
When to call: when you need to confirm that string payloads reach the daemon intact (e.g. before debugging a malformed call to a more complex tool). PREFER dero_daemon_ping for a lighter-weight liveness probe.
Input Requirements (CRITICAL):
wordsMUST be a non-empty array of strings.
Output: the echoed string concatenated by the daemon.
| Name | Required | Description | Default |
|---|---|---|---|
| words | Yes | Strings to echo back |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. Description adds that it echoes and concatenates strings, which is transparent. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one sentence for purpose, one for when to call, one for input requirement, one for output. No wasted words, front-loaded with most important info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple echo tool with one parameter and no output schema, the description fully covers purpose, usage context, input constraints, and output. Nothing missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'words', so baseline is 3. Description adds critical constraint: 'MUST be a non-empty array of strings', which goes beyond the schema's type and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it echoes strings through the daemon for round-trip sanity checks. Distinguishes from sibling dero_daemon_ping by noting it is for string payloads, while ping is a lighter-weight liveness probe.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to call (confirm string payload reach daemon, before debugging malformed calls) and when not to (prefer dero_daemon_ping for lighter liveness check). Provides clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_daemon_pingARead-onlyInspect
DERO daemon connectivity check via DERO.Ping.
When to call: as the first step in any chain investigation to confirm the daemon is reachable. Call before dero_get_info if you are unsure whether DERO_DAEMON_URL is correctly configured.
Input Requirements: none.
Output: a "Pong" string when the daemon is healthy. On failure this tool returns a structured _meta.error with code RPC_UNREACHABLE and a retry hint.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by detailing the output ('Pong' string on success) and failure behavior (structured error with code RPC_UNREACHABLE and retry hint), providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a first sentence stating the purpose, followed by usage guidance, input requirements, and output description. Every sentence is information-dense and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple ping tool with no output schema, the description fully covers inputs (none), outputs ('Pong' or structured error), and failure behavior. It is complete for its complexity and context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (input schema is empty) and schema description coverage is 100%. The description states 'Input Requirements: none', which is clear but adds no additional meaning beyond the schema. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a DERo daemon connectivity check via DERO.Ping, with a specific verb and resource. It distinguishes usage from siblings like dero_get_info by recommending it as the first step in any chain investigation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when to call: 'as the first step in any chain investigation' and before dero_get_info. It also states input requirements are none. While it doesn't cover all sibling alternatives, it gives clear context for primary usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_decode_proof_stringARead-onlyInspect
Decode any DERO bech32 string (dero…, deto…, deroi…, detoi…, or deroproof…) into its constituent parts: HRP, network, compressed public key, and any embedded RPC arguments (CBOR-encoded). For deroproof… strings the "public key" is a derived blinder point used in the proof's commitment math, NOT a wallet pubkey — the tool surfaces is_proof: true so the agent does not mislabel it.
When to call: when the user pastes a deroproof… / integrated-address string and wants to know what value or fields it encodes. PREFER this over chaining bech32 decoders + CBOR libraries yourself: the tool implements the exact same wire format as DEROHE rpc.NewAddress and surfaces the RPC_VALUE_TRANSFER uint64 both as raw and as a signed/wraparound interpretation. The decoder is verified against the publicly-cited 2022 inflation-claim proof string (embedded uint64 = 18446743853709551435 = signed -2,200,000.00181 DERO).
Input Requirements (CRITICAL):
proof_stringis REQUIRED. The full bech32 string including HRP and separator (e.g.deroproof1qyy…). Whitespace is trimmed but the case must be consistent (all lower OR all upper per BIP-0173).
Output: { decoded: { hrp, mainnet, is_proof, public_key_hex, arguments[] }, value_interpretation?: { uint64, signed_int64, is_negative_wraparound, signed_atoms, dero }, context_note?, related_docs? }. arguments is an array of { name, type, type_label, semantic_name?, value }. value_interpretation is present only when an RPC_VALUE_TRANSFER (V) + uint64 (U) argument is found. context_note + extra related_docs are silently attached when the input matches a flagged adversarially-cited artifact. Returns a structured _meta.error with code INVALID_BECH32 on parse failure.
PREFER citing integrity/payload-vs-transaction-proofs and integrity/negative-transfer-protection in any agent response that frames a deroproof… decode result — readers should understand that "this string decodes to value V" is a display-layer fact, not a consensus statement.
| Name | Required | Description | Default |
|---|---|---|---|
| proof_string | Yes | Full bech32 string with HRP, e.g. "deroproof1qyy…" or "dero1abc…". Whitespace is trimmed. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: that for deroproof... strings the public key is a blinder point (not a wallet pubkey), that value_interpretation is conditionally present, and that the decoder is verified against a specific proof string. Annotations already indicate readOnlyHint=true, so the description adds meaningful context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections for purpose, when to call, input requirements, and output. However, it is quite verbose, including detailed output examples and recommendations for citing documents. While informative, some redundancy could be trimmed for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description thoroughly covers output structure, conditional fields, error handling, and special cases. It also references related documents. The tool is complex (bech32, CBOR, proof interpretation), and the description leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaningful constraints beyond the schema, such as requiring case consistency (all lower or all upper per BIP-0173) and providing an example input. This elevates the score to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool decodes DERO bech32 strings (dero..., deto..., etc.) into HRP, network, public key, and CBOR arguments. It distinguishes itself from siblings by being the dedicated decoder for these specific string types, with no sibling tool offering similar functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'when to call' guidance: when the user pastes a deroproof... or integrated-address string and wants to decode it. It also recommends using this tool over manual chaining of libraries. However, it does not explicitly state when not to call the tool, though the context implies it is only for DERO bech32 strings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_docs_get_pageARead-onlyInspect
Get a single bundled docs page by slug, with plain-text content and headings.
When to call: AFTER dero_docs_search has returned a candidate slug, OR when you have a known slug from a prior citation. PREFER dero_docs_search first when you only have a topic in mind.
Input Requirements (CRITICAL):
slugMUST be a non-empty doc slug relative to pages/ (e.g.rpc-api/daemon-rpc-api,tutorials/first-app,dero-pay/quick-start).productis OPTIONAL but RECOMMENDED to disambiguate identical slugs across docs sites (derod,tela,hologram,deropay).offsetis OPTIONAL. Long pages (the Captain archive, deep RPC references) are returned in 60000-char chunks; ifcontent_truncatedis true in the response, call again withoffset: next_offsetto fetch the next chunk.
Output: { product, slug, title, headings, content, content_offset, content_length, content_truncated, next_offset, canonical_url, last_updated, source_path }. content_length is the total page size; content_truncated + next_offset signal whether to paginate.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Doc slug relative to pages/ (e.g., "rpc-api/daemon-rpc-api", "tutorials/first-app", "dero-pay/quick-start") | |
| offset | No | Byte offset into the page plaintext. Use 0 (or omit) for the first chunk; pass next_offset from a prior response to continue reading a long page. | |
| product | No | Optional product scope to disambiguate duplicate slugs |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, idempotentHint=false, destructiveHint=false. The description adds behavioral context beyond annotations, such as pagination via 60000-char chunks and signaling via content_truncated. This is useful but not extraordinary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long but well-structured with clear sections. It could be slightly more concise, but it is organized and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, the description covers all output fields, pagination, and input constraints thoroughly. It is complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds details like slug must be non-empty relative to pages/, product is recommended for disambiguation, and offset is explained with chunking. This adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a single bundled docs page by slug, returning plain-text content and headings. It distinguishes from siblings like dero_docs_search (search) and dero_docs_list (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to call: AFTER dero_docs_search returns a candidate slug, or when you have a known slug. It recommends preferring search first when only a topic is known. It provides critical input requirements and explains pagination for long pages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_docs_listARead-onlyInspect
List indexed bundled docs pages across all four products with slugs, titles, and canonical URLs.
When to call: when surveying available docs (e.g. "what TELA tutorials exist?"), OR when you need a slug catalog before invoking dero_docs_get_page. PREFER dero_docs_search when you have a specific question.
Input Requirements:
productis OPTIONAL. Provide to scope to one ofderod | tela | hologram | deropay.limitis OPTIONAL (default 120, max 500).
Output: { docs_source, total, products, pages: [{ product, slug, title, canonical_url, last_updated }] }.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max pages returned (default 120, max 500) | |
| product | No | Optional docs product filter: derod | tela | hologram | deropay |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds output structure (fields like slug, title, canonical_url) and confirms no destructive behavior, providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, well-structured with purpose, usage guidance, input requirements, and output format front-loaded. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully specifies the output shape. Sibling tools are mentioned for alternative. Parameters are well-documented. The tool is simple and the description covers all needed context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description repeats parameter details (optional, defaults, enums) but adds no new semantic information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists indexed bundled docs pages across all four products with specific fields, and differentiates from siblings like dero_docs_search and dero_docs_get_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to call (surveying available docs, getting slug catalog) and when to prefer dero_docs_search. Also covers optional parameters and defaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_docs_searchARead-onlyInspect
Search the bundled DERO documentation index across derod, tela, hologram, and deropay (145+ pages). In-process — no network round trip.
When to call: when you need authoritative docs to answer a DERO question, OR before constructing a citation in your response. Call this BEFORE explaining DVM, RPC methods, TELA contracts, Hologram simulator, or DeroPay webhooks. PREFER returning the top match's canonical_url and slug to the user as a citation.
Input Requirements (CRITICAL):
queryMUST be a non-empty search string.productis OPTIONAL. Provide when you know the scope to reduce noise (e.g.telafor TELA-DOC-1 questions).sectionis OPTIONAL. Provide a slug prefix to scope further (e.g.rpc-apiunderproduct=derod).limitis OPTIONAL (default 8, max 25).
Output: ranked matches with title, slug, headings, excerpt, canonical_url, and score.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max matches (default 8, max 25) | |
| query | Yes | Search text (e.g., "wallet rpc", "tela deployment", "deropay webhooks") | |
| product | No | Optional docs product filter: derod | tela | hologram | deropay | |
| section | No | Optional section slug prefix (e.g., "rpc-api", "guides", "dero-pay") |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the operation is 'In-process — no network round trip', which is valuable behavioral context beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (When to call, Input Requirements, Output). It is concise yet comprehensive, with no redundant sentences. The critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given moderate complexity (4 params, no output schema), the description provides complete context: input requirements, output fields (title, slug, headings, excerpt, canonical_url, score), and operational notes (in-process). It covers all necessary information for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). The description adds defaults (limit default 8), clarifies query must be non-empty, and provides usage examples for product and section parameters (e.g., 'tela for TELA-DOC-1 questions'). This adds meaningful guidance beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches a bundled DERO documentation index across specified products (derod, tela, hologram, deropay). The verb 'search' and resource 'documentation index' are explicit, and it distinguishes from sibling tools like dero_docs_get_page and dero_docs_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'When to call' section that explains when to use the tool (e.g., before explaining DVM, RPC methods) and advises returning citation information. It lacks explicit alternatives comparison, but provides clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_durl_to_scidARead-onlyInspect
Composite: resolve a TELA dURL (e.g. "vault.tela") to its on-chain SCID(s) by discovering TELA apps directly from chain — no external Gnomon indexer required. TELA apps advertise a human-readable dURL; this finds the contract(s) that claim it.
When to call: when a user asks "what's the SCID for .tela", "find the TELA app called X", or gives a dURL and wants the contract. IMPORTANT routing: for a registered DERO NAME like "quickbrownfox" (no dot, not a dURL), use dero_name_to_address instead — that is a name to address lookup, not a TELA app. This tool is only for TELA dURLs (they contain a dot / .tela / a dero:// prefix).
Input Requirements:
durlis REQUIRED. A TELA dURL such as "vault.tela", "feed.tela", or "dero://cipherchess.tela". Case- and prefix-insensitive.
Output: { query, normalized, found, match_count, scid, primary, collision, other_candidates[], narrative, related_docs } on a hit; { query, normalized, found:false, match_count:0, hint } on a miss. dURLs are NOT unique — when multiple contracts claim one, the NEWEST is returned as scid/primary and the rest are disclosed in other_candidates with collision:true. The first call triggers a ~10s one-time discovery scan of the newest chain contracts (cached afterward). Feed the returned scid to tela_inspect to view the app.
| Name | Required | Description | Default |
|---|---|---|---|
| durl | Yes | A TELA dURL to resolve, e.g. "vault.tela" or "dero://feed.tela". NOT a registered DERO name (use dero_name_to_address for names like "quickbrownfox"). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses one-time ~10s scan on first call, caching, non-unique dURLs, collision handling, and output shape. Annotations already declare readOnlyHint=true, and description adds valuable behavioral context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with purpose, when-to-call, input, output sections. It is somewhat lengthy but every sentence adds value; minor improvement possible by tightening phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and no output schema, description covers discovery process, collision behavior, and related tools (tela_inspect). Fully adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with durl parameter description. Description adds beyond schema: case- and prefix-insensitivity, examples, and clarification that it's not for DERO names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it resolves a TELA dURL to on-chain SCID(s). It uses specific verbs and resources, and distinguishes from siblings like dero_name_to_address and dero_tela_list_apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call (e.g., user asks for SCID of a dURL) and when not to call (for DERO names, use dero_name_to_address). Provides routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_forge_demo_proofARead-onlyInspect
Composite: build a fresh deroproof… display object for ANY chosen transaction, ring slot, and amount — including negative amounts that uint64-wrap into the trillions. The forged string is constructed locally from public chain data (no wallet, no keys, no broadcast). On an unpatched explorer it shows Verified ✓ for the chosen amount; on the chain, nothing has changed.
When to call: when a user pastes a deroproof… string and asks "does Verified ✓ mean the chain minted these coins?" Forge an equivalent string for the same TX with a different amount and show the result side-by-side — that is the most direct refutation. Also useful for reproducing the docs/integrity/inflation-claim Part 3 demonstration on arbitrary inputs.
Math: blinder = C[ring_slot] − amount × G, then bech32("deroproof", version || blinder || CBOR({HH: zeros, VU: uint64})). The tool runs the same equation proof.Prove() checks at proof/proof.go:88-95 and self-verifies before returning a string. If the self-check fails, the tool throws rather than emit a string that would not verify.
Input Requirements (CRITICAL):
Exactly ONE of
tx_hashortx_hexMUST be provided.tx_hashtriggers a daemon fetch (and surfaces the receiver address);tx_hexskips the daemon and uses the raw bytes the caller already has.ring_slotis OPTIONAL (default 0). Must be in [0, ring_size).amount_derois OPTIONAL (default "-1"). Signed decimal with up to 5 fractional digits, e.g."-1","1000000","-2200000.00181". Negative values produce uint64 wraparounds that unpatched explorers render as positive trillions.
Output: { forged_proof_string, target_amount: { dero, atoms_signed, atoms_uint64 }, ring_slot, ring_size, ring_receiver_address, math: { C_slot_hex, amount_x_G_hex, blinder_hex }, self_check: { verified, method }, explorer_display_amount, context_note, related_docs, _diagnostics }. ring_receiver_address is null when tx_hex was passed (the hex carries publickey pointers, not addresses).
READ-ONLY: this tool never broadcasts, never touches a wallet, never mutates chain state. It computes a string from public inputs and returns it. Annotation readOnlyHint: true is preserved. PREFER citing the returned related_docs (the integrity rebuttal pages) in any agent response — readers should understand the forged string is a display-layer object, not a consensus event.
| Name | Required | Description | Default |
|---|---|---|---|
| tx_hex | No | Raw TX bytes as hex (skip the daemon round-trip). Mutually exclusive with tx_hash. When provided, ring_receiver_address is omitted from the response (the hex carries publickey pointers, not full addresses). | |
| tx_hash | No | TX hash to forge against. Daemon fetches the TX hex + ring members. Mutually exclusive with tx_hex. | |
| ring_slot | No | Which ring slot 0..ring_size-1 the forged proof should resolve to. Defaults to 0. | |
| amount_dero | No | Target display amount in signed DERO (5 fractional digits = atomic precision). Negative values demonstrate the uint64 wraparound. Default "-1". | -1 |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool is read-only, never broadcasts, never touches a wallet, and never mutates chain state, adding to the annotations. It also details the math, self-verification, and that failure throws, providing full behavioral transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured into sections (purpose, when to call, math, input requirements, output, read-only). Every sentence contributes value for a complex tool, but it could be slightly more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description thoroughly details the output structure, input constraints, and behavior (including self-verification and failure modes). It covers all necessary context for correct invocation and interpretation of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions, but the tool description adds crucial context like mutual exclusivity of tx_hash and tx_hex, the effect of negative amount_dero on uint64 wraparound, and the meaning of output fields. This adds value beyond the schema, so slightly above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it builds a deroproof display object for any transaction, ring slot, and amount, including negative wraparounds. It distinguishes from siblings like dero_decode_proof_string by emphasizing forging over decoding, and specifies it's for demonstration/integrity refutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to call' section explicitly describes the exact scenario: when a user asks if 'Verified ✓' means chain-minted coins. It also mentions reproducing the inflation-claim demonstration. This provides clear context and appropriate use cases, though it doesn't list exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_blockARead-onlyInspect
Fetch a full block (header + miner_tx + transactions + topo position) by height OR hash via DERO.GetBlock.
When to call: when investigating a specific block or verifying a transaction's inclusion. Call dero_get_height first if you do not have a target height. PREFER citing dero_docs_search("block structure") so the user can verify field semantics.
Input Requirements (CRITICAL):
You MUST provide exactly ONE of
hashorheight. Providing both or neither returns a structured INVALID_INPUT error.hashMUST be exactly 64 hex characters.heightMUST be a non-negative integer.
Output: full block with block_header, miner_tx, txs, and topo position fields.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | No | 64-char hex block hash | |
| height | No | Block height |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but description adds critical input constraints (exactly one of hash/height, format rules) and output details (fields like block_header, miner_tx, txs). It also mentions error handling. This exceeds what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise and efficiently structured: purpose first, then usage guidelines, then critical input rules, then output. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lack of output schema, description covers input requirements, output fields, error conditions, and usage context. It is fully complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but description adds the mutual exclusivity constraint, hash length requirement, and height non-negative integer. This significantly elaborates beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Fetch a full block (header + miner_tx + transactions + topo position) by height OR hash' which is a specific verb+resource+scope. This clearly distinguishes it from siblings like dero_get_block_header_by_hash or dero_get_block_count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call ('when investigating a specific block or verifying a transaction's inclusion'), suggests calling dero_get_height first if no target height, and recommends citing dero_docs_search for field semantics. This provides clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_block_countARead-onlyInspect
Get the total block count via DERO.GetBlockCount. This is a tip count, not a topoheight.
When to call: when you need just the block count (e.g. for delta math against a reference height). PREFER dero_get_height when you need tip and stable heights together.
Input Requirements: none.
Output: { count }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering safety. The description adds useful context about it being a tip count not topoheight, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 4 sentences, each serving a distinct purpose: stating what it does, clarifying a nuance, providing usage guidance, and documenting output. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description is complete: it explains the purpose, clarifies the distinction from topoheight, gives usage guidance, and specifies the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. The description explicitly states 'Input Requirements: none', which is sufficient for a parameterless tool. Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets the total block count via DERO.GetBlockCount and distinguishes it from topoheight. It is specific about the verb and resource, and contrasts with the sibling tool dero_get_height.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call (for just the block count, e.g., delta math) and recommends an alternative (dero_get_height) when both tip and stable heights are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_block_header_by_hashARead-onlyInspect
Get a block header by its 64-char hex hash via DERO.GetBlockHeaderByHash.
When to call: when you have a block hash (e.g. from a tx confirmation) and need its header without the full block body. PREFER dero_get_block when you also need the txs or miner_tx.
Input Requirements (CRITICAL):
hashMUST be exactly 64 hex characters (matches /^[0-9a-fA-F]{64}$/).
Output: { block_header: {...} }.
| Name | Required | Description | Default |
|---|---|---|---|
| hash | Yes | Block top hash (hex) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, confirming safe read-only operation. Description adds input validation requirement (exactly 64 hex) but does not discuss error handling (e.g., invalid hash), idempotency (idempotentHint false), or rate limits. Adequate but could be improved with more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise paragraphs: purpose, usage guidelines, input/output requirements. Every sentence adds value. Front-loaded with purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and clear annotations, the description covers purpose, usage, input validation, and output format. Could include an example output but not necessary for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with pattern and description. Description reinforces that hash MUST be exactly 64 hex characters, adding emphasis beyond the schema's pattern. This adds clear, critical guidance for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get a block header by its 64-char hex hash', specifying the verb (get) and resource (block header by hash). Differentiates from sibling tools like dero_get_block (which includes txs and miner_tx) and dero_get_block_header_by_topo_height (which uses topo height instead).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: when you have a block hash and need the header without the full block body. Advises to use dero_get_block when txs or miner_tx are also needed. Provides clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_block_header_by_topo_heightARead-onlyInspect
Get a block header by topological height (canonical ordering) via DERO.GetBlockHeaderByTopoHeight.
When to call: when you need a header keyed by topo position rather than chain height. Topoheight is the canonical ordering used by DERO indexers; height is the consensus block height.
Input Requirements (CRITICAL):
topoheightMUST be a non-negative integer no greater than the current topoheight (call dero_get_info first if unsure).
Output: { block_header: { hash, height, topoheight, timestamp, ... } }.
| Name | Required | Description | Default |
|---|---|---|---|
| topoheight | Yes | Topological height |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds input constraints (non-negative, bounded by current topoheight) and outlines the output structure, which goes beyond annotations. Minor room for more detail on potential errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences plus bullet), well-organized with separate sections for usage, input requirements, and output format. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one parameter, no output schema), the description fully covers purpose, usage context, input constraints, and output structure. No gaps remain for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with description 'Topological height' and minimum 0. The tool description adds context: must be non-negative and no greater than current topoheight, which is not in the schema. This provides added value for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a block header by topological height, using the specific DERO API method. It distinguishes from sibling tools like dero_get_block_header_by_hash by focusing on topoheight vs height.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call (when needing header by topo position) and provides a prerequisite (call dero_get_info if unsure about current topoheight). This helps the agent choose correctly among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_block_templateARead-onlyInspect
Get a mining block template for a miner payout address via DERO.GetBlockTemplate.
When to call: ONLY when you are actually mining. PREFER dero_get_last_block_header for general chain-tip inspection.
Input Requirements (CRITICAL):
wallet_addressMUST be a valid DERO address (dero1...ordeto1...) that will receive the block reward.blockis OPTIONAL. Set true to include the raw block blob in the response.mineris an OPTIONAL label.
Output: block template payload suitable for a mining client. Does NOT submit a block; submission requires the excluded DERO.SubmitBlock method.
| Name | Required | Description | Default |
|---|---|---|---|
| block | No | Include block blob | |
| miner | No | Optional miner id / label | |
| wallet_address | Yes | Miner payout DERO address |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true. The description aligns by stating it's a 'Get' operation. It also discloses important behaviors: it does NOT submit a block, and explains output is a block template. No contradictions and adds context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: 4 sentences covering purpose, usage, input requirements, and output limitations. Every sentence is informative with no redundancy. Well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's specialized nature and absence of an output schema, the description adequately covers input requirements, output purpose, and critical usage notes. However, it could elaborate on the returned payload structure, but it is sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage). Description reiterates and adds emphasis on critical requirements (valid address pattern) but does not introduce new semantic details beyond the schema. Thus, it provides marginal added value, scoring a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get a mining block template for a miner payout address'. It also distinguishes itself from siblings, explicitly recommending 'dero_get_last_block_header' for general chain-tip inspection, so the purpose is specific and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'When to call: ONLY when you are actually mining. PREFER dero_get_last_block_header for general chain-tip inspection.' It clearly states the scenario and alternative, earning a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_encrypted_balanceARead-onlyInspect
Get the ENCRYPTED balance blob for a DERO address at a topo height via DERO.GetEncryptedBalance.
CRITICAL: this returns an opaque encrypted blob, NOT a cleartext balance. Only the wallet holding the spend key can decrypt it. Do NOT present the encrypted bytes as a balance to the user.
When to call: when verifying that an address has on-chain encrypted state (e.g. before attempting a transfer with a wallet you control), or as a sub-step in another tool. PREFER citing dero_docs_search("encrypted balance") so the user understands the opacity.
Input Requirements (CRITICAL):
addressMUST start withdero1(mainnet) ordeto1(testnet).topoheightMUST be an integer; use-1for the latest chain tip.scidis OPTIONAL. Omit for native DERO; provide 64-hex SCID for asset balances.
Output: { status, registration, balance (encrypted blob), ... }.
| Name | Required | Description | Default |
|---|---|---|---|
| scid | No | Asset SCID hex; omit for native DERO | |
| address | Yes | DERO address (dero1… or deto1…) | |
| topoheight | Yes | Use -1 for latest chain tip |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds critical behavioral context beyond annotations: output is an opaque encrypted blob not cleartext, only decrypted by wallet with spend key, and warns against presenting encrypted bytes as balance. This complements the readOnlyHint annotation without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with bold warnings, a clear use-case section, and bullet-style input requirements. Every sentence adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides output format outline ({status, registration, balance, ...}) and covers parameter details. However, it omits explanation of the status field and registration component, which could be important for agents. Still, it is largely complete given the tool's simplicity and other rich fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds essential guidance: address must start with dero1/deto1, topoheight must be integer (-1 for latest), scid is optional and format specified. These imperative instructions go beyond the schema's descriptive text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves an encrypted balance blob for a DERO address at a specific topo height, distinguishing it from other DERO tools that return cleartext balances or block data. The verb 'Get' and resource 'encrypted balance blob' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to call' section explicitly describes use cases (verifying on-chain encrypted state, sub-step) and recommends dero_docs_search as an alternative for understanding opacity, providing clear guidance on when and when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_gas_estimateARead-onlyInspect
Estimate gas (compute + storage) for transfers, SC deploys, or SC invokes via DERO.GetGasEstimate. This is a PRE-FLIGHT check; nothing is submitted.
When to call: BEFORE any wallet-side transfer/scinvoke (using external wallet tooling) to size fees, OR when explaining deploy costs to a user. PREFER citing dero_docs_search("gas estimate" or "fees") so the user understands how compute vs storage gas are charged.
Input Requirements (CRITICAL):
At least ONE of
transfers,sc, orsc_rpcMUST be provided.scis the DVM-BASIC contract source string when estimating a deploy.sc_rpcis an array of{ name, datatype, value }invocation arguments (entrypoint + SC_ID + caller-provided params).signeris OPTIONAL but PREFERRED; pass thedero1.../deto1...address that would sign the eventual tx.
Output: { gascompute, gasstorage, status }.
| Name | Required | Description | Default |
|---|---|---|---|
| sc | No | SC source to deploy | |
| sc_rpc | No | SC invocation arguments (entrypoint, SC_ID, etc.) | |
| signer | No | Signer address used for estimation | |
| transfers | No | Optional transfer list |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with readOnlyHint annotation, confirming no side effects. It adds context that nothing is submitted and outputs gas estimates, going beyond the annotation's binary hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, usage, input requirements, output). However, slightly verbose with bullet points; could be trimmed but still efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully describes tool purpose, pre-flight nature, input constraints, and output structure. Given no output schema, it provides the necessary fields. No gaps for an estimation tool with moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions, and the description adds critical usage rules: at least one of transfers/sc/sc_rpc must be provided, explains sc_rpc format, and notes signer is optional but preferred. This significantly enhances schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool estimates gas for transfers, SC deploys, or SC invokes using the DERO.GetGasEstimate API. It emphasizes this is a pre-flight check with no submission, distinguishing it from sibling tools like estimate_deploy_cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance on when to call: before wallet-side transfers/scinvoke to size fees, or when explaining deploy costs. It also suggests preferring dero_docs_search for deeper understanding, providing clear alternative usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_heightARead-onlyInspect
Get the current block heights: tip height, stable height (finalized), and topoheight (canonical ordering) via DERO.GetHeight.
When to call: when you need a quick height snapshot without the full chain-info payload. PREFER dero_get_info when you also need network, version, or difficulty.
Input Requirements: none.
Output: { height, stableheight, topoheight }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds value by specifying the output fields and the underlying RPC method (DERO.GetHeight), which is not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: first defines purpose, second gives usage guidance, third details output. No wasted words, front-loaded with essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with no parameters, the description fully covers behavior, output format, and usage context. Output schema is absent, but description explicitly lists output fields, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100% and description adds no param info. Baseline 4 is appropriate; the description doesn't need to elaborate on absent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'block heights', specifying three specific fields (tip height, stable height, topoheight). It distinguishes from siblings like dero_get_info and dero_get_block_count by highlighting the quick snapshot purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call (quick height snapshot without full chain-info) and recommends preferring dero_get_info when more data is needed. Provides clear context and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_infoARead-onlyInspect
Get DERO daemon and chain metadata: height, topoheight, stableheight, difficulty, version, network, mempool size, and total supply (DERO.GetInfo).
When to call: first thing in any chain-state investigation or sync-health check. Call this BEFORE dero_get_sc, dero_get_transaction, or dero_get_block when you do not already know the current tip. PREFER citing dero_docs_search("DERO.GetInfo") so the user can verify field semantics.
Input Requirements: none.
Output: full chain info JSON including topoheight, stableheight, height, network, version, difficulty, tx_pool_size, and total_supply.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description correctly aligns (no contradiction). The description adds output field details (height, difficulty, etc.) which goes beyond annotations. However, it doesn't discuss error cases or rate limits, but given the tool simplicity and annotation coverage, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences plus one-line sections for input/output. Front-loaded with purpose and usage context. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lists key output fields (topoheight, stableheight, etc.). The tool is simple (zero parameters, no side effects), and the description covers purpose, when to use, and output format sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters, so baseline 4 applies. The description correctly states 'Input Requirements: none.' No further parameter guidance needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get DERO daemon and chain metadata' and lists specific fields (height, topoheight, stableheight, etc.). It clearly identifies the resource and verb, and distinguishes from sibling tools like dero_get_height and dero_get_block which have narrower scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-call guidance ('first thing in any chain-state investigation or sync-health check'), ordering relative to other tools ('BEFORE dero_get_sc, dero_get_transaction, or dero_get_block'), and recommends using dero_docs_search for user verification. This is excellent usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_last_block_headerARead-onlyInspect
Get the header of the current tip block via DERO.GetLastBlockHeader (no full block body).
When to call: when you need tip block metadata (hash, miner, timestamp, difficulty) without the transactions or miner_tx payload. PREFER dero_get_block when you need transactions or the miner_tx.
Input Requirements: none.
Output: { block_header: { hash, height, topoheight, timestamp, difficulty, ... } }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds that it returns only header without full block body and mentions the underlying API call. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short paragraphs, well-structured with bold headers. No unnecessary words. Front-loaded with core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, read-only annotations, and no output schema, the description complete: explains output structure and use cases. No missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no properties (100% coverage). Description explicitly states 'Input Requirements: none', reinforcing the schema, which is helpful for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes specific verb 'Get' and resource 'header of the current tip block', distinguishes from dero_get_block which returns transactions. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call (need tip block metadata without transactions) and when not to (prefer dero_get_block for transactions). Also lists input requirements as none.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_random_addressARead-onlyInspect
Get random registered addresses from the chain (used for ring construction in private transfers) via DERO.GetRandomAddress.
When to call: when building a transfer ring in external wallet tooling, or sampling chain participants. Optional asset SCID limits sampling to holders of that asset.
Input Requirements:
scidis OPTIONAL. When provided it MUST be exactly 64 hex characters.
Output: { address: string[] }.
| Name | Required | Description | Default |
|---|---|---|---|
| scid | No | Optional asset smart-contract id (hex) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds context about the use case and output format but doesn't reveal additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with a bullet for input requirements, front-loaded with purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, read-only), the description adequately covers purpose, usage, parameter requirements, and output format. Annotations cover safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the only parameter (scid), and the description re-emphasizes that it's optional and must be 64 hex characters, adding clarity beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets random registered addresses for ring construction, and distinguishes it from siblings by specifying the use case (private transfers via DERO.GetRandomAddress).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call (building transfer ring, sampling chain participants) and mentions optional SCID limits sampling. Lacks explicit when-not-to-use or alternatives among siblings, but provides good context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_scARead-onlyInspect
Read smart contract state (code and/or stored variables) by SCID via DERO.GetSC. This is the primary entry point for any contract inspection on DERO.
When to call: as the first step in any DVM contract investigation. Pair with dero_docs_search("DVM-BASIC") to interpret the returned code blob. PREFER citing dero_docs_search("smart contract") or dero_docs_get_page on a relevant DVM page so the user can interpret the contract's state model.
Input Requirements (CRITICAL):
scidMUST be exactly 64 hex characters (the contract id).codeis OPTIONAL (defaults to true). Set false to skip the source blob when you only need stored variables.variablesis OPTIONAL (defaults to true). Set false to skip variables when you only need the source.topoheightis OPTIONAL. Omit or use-1for the latest committed state.
Output: { code, balances, variables: { stringkeys, uint64keys }, ... }.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Include contract source (default true) | |
| scid | Yes | 64-char hex Smart Contract ID | |
| variables | No | Include stored variables (default true) | |
| topoheight | No | Topo height; omit or use -1 for latest |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so description confirms it's a read operation. Beyond annotations, it adds critical behavioral details: input format requirements (64 hex SCID), optional parameters with defaults, and output shape. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points for input requirements, and concise without redundancy. Every sentence adds value. Efficient use of whitespace and formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description provides the return shape (`{ code, balances, variables: { stringkeys, uint64keys }, ... }`). Covers all input constraints, recommended usage patterns, and alternatives. A complete and self-contained definition for a 4-param read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing baseline 3. Description adds substantial value by explaining each parameter beyond the schema: scid must be exactly 64 hex, code defaults true, variables defaults true, topoheight omit or -1. This semantic detail helps correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it reads smart contract state by SCID, and positions itself as the primary entry point for DERO contract inspection. The verb 'Read' and resource 'smart contract state' are specific. It distinguishes itself from sibling tools by being the first step in investigations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'When to call: as the first step in any DVM contract investigation.' Provides clear alternatives: pair with dero_docs_search for interpretation, prefer citing dero_docs_search or dero_docs_get_page. This gives both when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_transactionARead-onlyInspect
Fetch one or more transactions by hash via DERO.GetTransaction. Each tx is returned with confirmation status, block hash, and (optionally) decoded JSON fields.
When to call: when tracing a tx by hash. Pair with dero_get_sc when the tx invokes a contract. PREFER citing dero_docs_search("transaction structure") so the user can interpret confirmations, ring members, and SC fields.
Input Requirements (CRITICAL):
txs_hashesMUST be a non-empty array of 64-char hex strings.decode_as_jsonis OPTIONAL. PREFER1(any non-zero value) when you want JSON-decoded fields instead of raw blobs.
Output: { txs: [...], txs_as_hex: [...] } with per-tx confirmation, block hash, and (when decoded) parsed payload.
| Name | Required | Description | Default |
|---|---|---|---|
| txs_hashes | Yes | List of transaction hashes (hex) | |
| decode_as_json | No | Optional: decode each tx as JSON when non-zero |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds that each transaction is returned with confirmation status, block hash, and optionally decoded JSON fields. It also outlines the output structure. While annotations cover safety, the description adds valuable details about what the agent can expect, though not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with front-loaded purpose, followed by usage guidelines, input requirements, and output description. Every sentence serves a purpose with no redundancy. It is concise yet comprehensive for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, read-only) and the presence of annotations, the description provides sufficient context: purpose, when to call, input requirements, and output summary. However, the lack of an output schema means the description must convey return structure, which it does adequately but not with full detail per field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description emphasizes that txs_hashes must be a non-empty array of 64-char hex strings (already in schema) and that decode_as_json is optional with a preference for 1. This adds marginal guidance beyond the schema but does not substantially enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch one or more transactions by hash via DERO.GetTransaction', providing a specific verb and resource. It distinguishes from siblings by recommending pairing with dero_get_sc when the transaction invokes a contract and differentiating from trace_transaction_with_context. Purpose is unambiguous and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'When to call: when tracing a tx by hash' and provides pairing guidance with dero_get_sc. It also advises to prefer citing dero_docs_search for transaction structure interpretation. This gives clear context for when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_get_tx_poolARead-onlyInspect
List pending mempool transaction hashes via DERO.GetTxPool.
When to call: when checking unconfirmed activity, watching for a specific tx to land, or estimating mempool pressure. NOTE: tx_hashes may be null or an empty array when the mempool is empty — treat both as "no pending".
Input Requirements: none.
Output: { tx_hashes: string[] | null }.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. Description adds that the output is `tx_hashes: string[] | null` and explains null/empty array means no pending. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one-liner, then 'When to call:', 'Input Requirements:', 'Output:'. Every sentence adds value. Front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, simple output, and annotations covering safety, the description fully explains behavior and output format, including null handling. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in input schema; description correctly states 'Input Requirements: none'. With 0 params, baseline is 4, and no additional semantics needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'list' and resource 'pending mempool transaction hashes' via 'DERO.GetTxPool'. No confusion with siblings, as no other tool lists mempool transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to call: checking unconfirmed activity, watching for specific tx, estimating mempool pressure. Also includes a note on handling null/empty array. Does not specify alternatives, but none are obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_name_to_addressARead-onlyInspect
Resolve a DERO on-chain registered name to its address via DERO.NameToAddress.
When to call: when a user supplies a human-readable name (e.g. "myname") instead of a dero1.../deto1... address.
Input Requirements (CRITICAL):
nameMUST be a non-empty string. Resolution is case-sensitive on the daemon side.topoheightMUST be an integer; use-1for the latest registry state.
Output: { name, address }. On NOT_FOUND the daemon's RPC error is surfaced as a structured _meta.error.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Registered name | |
| topoheight | Yes | Use -1 for latest |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, making idempotent and destructive hints less relevant. Description adds that resolution is case-sensitive and that NOT_FOUND surfaces a structured error via _meta.error. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, uses clear headings, and every sentence provides necessary information. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explains output format and error handling. For a simple read-only tool with two parameters, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds critical detail: name must be non-empty, case-sensitive at daemon level; topoheight must be integer and -1 for latest. This adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Resolve a DERO on-chain registered name to its address via DERO.NameToAddress', specifying verb (resolve), resource (name to address), and method. No sibling tool performs name resolution, so it is well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: 'when a user supplies a human-readable name instead of a dero1... address'. Provides critical input requirements but does not mention when not to call or alternatives, which is acceptable given the narrow scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dero_tela_list_appsARead-onlyInspect
Composite: list/browse the TELA apps discovered on-chain (each with its dURL, name, SCID, and doc count) — answers "what TELA apps exist?" without any external indexer. Powered by an in-process scan of the newest chain contracts.
When to call: when a user wants to explore or search the TELA ecosystem ("what TELA apps are there", "show me TELA games", "is there a TELA app about X"), or to find a SCID when they do not know the exact dURL. For an exact dURL use dero_durl_to_scid; to inspect a specific SCID use tela_inspect.
Input Requirements:
queryis OPTIONAL. Case-insensitive filter matched against dURL and name (e.g. "chess", "vault").limitis OPTIONAL (default 50, max 200).
Output: { query, total_matched, returned, truncated, apps:[{ scid, durl, name, install_height, doc_count }], index_meta, narrative, related_docs }. The first call triggers a ~10s one-time discovery scan (cached afterward). index_meta discloses how much of the chain was scanned so the answer's coverage is transparent.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max apps to return (default 50, max 200). | |
| query | No | Optional case-insensitive filter matched against dURL and name (e.g. "chess", "vault"). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds valuable context: the tool is powered by an in-process scan, first call triggers a ~10s delay (cached afterward), and index_meta discloses scan coverage. Nothing contradicts annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then usage guidelines, input requirements, and output structure. Every sentence adds value without redundancy. Length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description fully explains the output fields (query, total_matched, returned, truncated, apps array with fields, index_meta, narrative, related_docs). It also covers the one-time scan delay and caching behavior. For a two-parameter list tool, this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description confirms that query is optional, case-insensitive, and limit defaults to 50 max 200, matching the schema. It adds no new parameter details beyond the schema, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists/browses TELA apps discovered on-chain, specifying each app's dURL, name, SCID, and doc count. It distinguishes itself from siblings like dero_durl_to_scid and tela_inspect by mentioning exact dURL or SCID lookup alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: 'when a user wants to explore or search the TELA ecosystem' and provides alternatives for exact dURL (dero_durl_to_scid) or specific SCID (tela_inspect). This gives clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_chain_healthARead-onlyInspect
Composite: run a four-step chain (DERO.Ping → DERO.GetInfo → DERO.GetHeight → DERO.GetTxPool) and return a single narrative health report with chain metadata, mempool snapshot, machine-readable signals, and curated docs citations.
When to call: as the first step in any chain-state investigation when the user asks "is the node healthy", "is it synced", or "what is the current state of the chain". PREFER this over chaining the four primitives yourself — the composite handles partial-failure modes and lag-depth classification consistently, and the response already cites the right docs page.
Input Requirements:
include_tx_poolis OPTIONAL (default true). Set false to skip the mempool snapshot when you only need chain-tip status.
Output: { status, narrative, signals[], chain, mempool, related_docs, _diagnostics }. status is one of healthy | lagging | partial | unreachable. chain is null when DERO.GetInfo was unreachable; mempool is null when skipped or the call failed. On total daemon unreachability the tool returns a structured _meta.error with code RPC_UNREACHABLE.
| Name | Required | Description | Default |
|---|---|---|---|
| include_tx_pool | No | Include mempool snapshot in narrative and response. Default true. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses partial-failure modes, output status values (healthy, lagging, partial, unreachable), null conditions for chain and mempool fields, and structured error on total unreachability with code RPC_UNREACHABLE. Adds value beyond readOnlyHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections for purpose, when to call, input requirements, and output description. Each sentence serves a purpose, no repetition. Efficiently conveys complex behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description sufficiently details output structure (status, narrative, signals, chain, mempool, related_docs, _diagnostics) and edge cases. Covers all necessary behavioral aspects for a composite tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for single boolean parameter. Description adds context: optional, default true, and explains when to set false (skip mempool snapshot for chain-tip only). Baseline 3 plus extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it is a composite tool running a four-step chain (DERO.Ping → DERO.GetInfo → DERO.GetHeight → DERO.GetTxPool) and returning a narrative health report. Distinguishes itself from sibling primitive tools by being a higher-level composite.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies when to call: as first step in chain-state investigation for health/sync/state queries. Provides clear preference over chaining primitives due to consistent partial-failure handling and lag-depth classification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_deploy_costARead-onlyInspect
Composite: send a DVM-BASIC contract source to the daemon's gas estimator, then return the raw estimate alongside a plain-text breakdown (what each gas number means), the parsed contract surface, and curated DVM deploy docs as citations.
When to call: BEFORE asking a wallet to broadcast a deploy transaction, OR when explaining the cost of a contract to a user. PREFER this over chaining dero_get_gas_estimate yourself: this composite already explains gascompute vs gasstorage in plain language, parses the SC source to show what functions the user is about to deploy (reusing extractScSurface from explain_smart_contract), and protects against fabricating a breakdown when the daemon reports 0/0 with a non-OK status.
Input Requirements:
scis REQUIRED. The full DVM-BASIC contract source — must contain at least oneFunction ... End Functionblock. A function body alone will fail with INVALID_INPUT.signeris OPTIONAL. A dero1.../deto1... address that will sign the eventual deploy tx. The daemon uses it for fee context; omitting it still returns a meaningful estimate.include_breakdownis OPTIONAL (default true). Set false when you only need the raw numbers (e.g. piping into a fee table).
Output: { estimate: { gascompute, gasstorage, status }, breakdown: { compute_note, storage_note, total_units } | null, signer_used, include_breakdown, sc_surface: { functions, stringkeys, uint64keys, raw_code_length, function_count }, related_docs }. breakdown is null when include_breakdown=false OR when the daemon returned 0/0 with a non-OK status (never fabricated). On DVM compile failure the composite returns a structured _meta.error with code INVALID_INPUT and the daemon's exact compile message in _meta.error.raw.
| Name | Required | Description | Default |
|---|---|---|---|
| sc | Yes | DVM-BASIC contract source to deploy. MUST be the full contract (Function ... End Function blocks), not a function body alone. | |
| signer | No | Optional dero1.../deto1... signer for the eventual deploy tx. | |
| include_breakdown | No | Default true. Set false to return raw estimate numbers only. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: it protects against fabricating a breakdown when the daemon reports 0/0 with non-OK status, and returns structured errors on DVM compile failure. This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for when to call, input requirements, and output format. It is concise for the amount of information conveyed, though slightly lengthy. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of this composite tool, the description covers all necessary aspects: input requirements, edge cases (breakdown null conditions, error handling), and a detailed output schema. No output schema exists, so the description fully compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning: 'sc' must be the full contract with Function blocks; 'signer' is optional and used for fee context; 'include_breakdown' defaults true. These explanations help the agent use parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a composite tool that sends a DVM-BASIC contract source to the gas estimator, returning a raw estimate, plain-text breakdown, parsed contract surface, and curated docs. It distinguishes itself from the sibling tool 'dero_get_gas_estimate' by explicitly advising to prefer this composite over chaining that call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance: 'When to call: BEFORE asking a wallet to broadcast a deploy transaction, OR when explaining the cost of a contract to a user.' It also provides a clear alternative ('PREFER this over chaining dero_get_gas_estimate yourself') and mentions when not to expect a breakdown (non-OK status with 0/0).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_smart_contractARead-onlyInspect
Composite: fetch a DERO smart contract (code + variables + balances) and return its function surface, a classification of the contract pattern (tela_index | tela_doc | token | registry | minimal | generic), a plain-language narrative, and curated DVM docs citations re-ordered so the most relevant page is first. TELA contracts (apps/files) are detected first and cite the TELA spec; for a deep TELA parse use tela_inspect.
When to call: when the user wants to UNDERSTAND a smart contract — its functions, state shape, or which DVM concept to read about. PREFER this over chaining dero_get_sc with a docs lookup yourself: this composite already parses the DVM-BASIC source for function declarations, sorts stringkeys/uint64keys deterministically, and picks the right docs page from a heuristic so the agent does not have to learn DVM-BASIC syntax to summarize a contract.
Input Requirements:
scidis REQUIRED. Must be 64 hex chars (the smart contract id). Use0000…0001for the on-chain name registry as a known-good example.topoheightis OPTIONAL. Provide to inspect the contract at a specific topo height; omit for latest tip.
Output: { scid, topoheight, kind, surface: { functions[], stringkeys[], uint64keys[], balances }, narrative, raw_code_length, has_code, related_docs }. kind is one of tela_index | tela_doc | token | registry | minimal | generic. surface.functions items are { name, args, returns }. has_code is false when the SCID is unknown or has no on-chain code; functions is then [] and the narrative explains the gap. raw_code_length is always present so the agent knows when to fall back to dero_get_sc for the full source.
| Name | Required | Description | Default |
|---|---|---|---|
| scid | Yes | 64-char hex Smart Contract ID | |
| topoheight | No | Optional topo height; omit for latest tip |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses composite nature: fetches code+variables+balances, parses source, classifies, generates narrative, reorders docs. Notes edge cases: has_code false for unknown SCID, raw_code_length present for fallback. No contradiction with readOnlyHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured: starts with composite nature, then output, then when to call, then input requirements, then output details. Some sentences could be tightened but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema but description details output fields and types, including surface.functions items, has_code behavior, raw_code_length. Covers edge cases, though could be slightly more explicit about return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and description adds context: scid required with hex length, example given; topoheight optional for specific height. Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a composite that fetches a DERO smart contract and returns function surface, classification, narrative, and docs citations. It distinguishes from siblings like dero_get_sc and tela_inspect with specific verbs and details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call: when user wants to understand a smart contract. Prefers over chaining dero_get_sc with docs lookup. Provides a known-good example (0000...0001) and explains agent does not need to learn DVM-BASIC syntax.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recommend_docs_pathARead-onlyInspect
Composite: take a natural-language intent, fan out parallel scoped searches across the bundled docs for all four DERO products (derod, tela, hologram, deropay), boost any product_hint matches by 1.5×, and return a ranked recommendation list with per-result rationale plus ready-to-cite related_docs.
When to call: at the START of any "where do I read about X?" or "which docs cover Y?" investigation, BEFORE calling dero_docs_search directly. PREFER this over guessing the right product: this composite already runs all four products in parallel, dedupes overlap, surfaces the top heading per result as rationale, and gives you the top-2 citations pre-built. Pass product_hint when the user has already said e.g. "TELA" or "DeroPay" so that product's matches float to the top.
Input Requirements:
intentis REQUIRED. Free-text description of what the user is trying to do (min 8 chars). Drop verbs and use product nouns like "deploy a TELA app" or "verify a DeroPay webhook signature" for best results.product_hintis OPTIONAL. One ofderod | tela | hologram | deropay. Multiplies hint-product scores by 1.5×.limit_per_productis OPTIONAL (default 2, max 5). Cap per-product hits before merging.
Output: { intent, product_hint, limit_per_product, recommended: [{ product, slug, title, canonical_url, score, boosted_score, rationale }], by_product: { derod | tela | hologram | deropay: { count, top_slug, top_score } }, related_docs: DeroCitation[] }. related_docs is the top-2 picks pre-built as citations the agent can drop straight into a response. On zero matches across every product the composite returns a structured _meta.error with code NO_DOCS_MATCH and a hint to rephrase or drop the product_hint.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | Natural-language description of what the user wants to do (e.g. "deploy a TELA app", "trace a transaction by hash", "verify a webhook signature"). | |
| product_hint | No | Optional bias toward one product (derod | tela | hologram | deropay) when known. | |
| limit_per_product | No | Cap per-product search results before merging. Default 2. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations show readOnlyHint=true; description details the fan-out, boosting, deduplication, output structure, and error handling. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and usage. While lengthy, every part adds value, including input requirements and output format. Could be slightly trimmed but highly informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description fully defines the output structure including related_docs and error handling. Covers behavioral details, edge cases (zero matches), and input constraints. Very complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds valuable context: how to phrase intent, effect of product_hint (1.5x boost), and default/max for limit_per_product. Exceeds baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a composite tool that takes natural-language intent, fans out parallel searches across four DERO products, boosts product_hint matches, and returns ranked recommendations with rationale and citations. It distinguishes itself from dero_docs_search by instructing to call this first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-call guidance: at the start of documentation investigations, before dero_docs_search. Also advises to prefer this over guessing the product, and gives input best practices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tela_get_doc_contentARead-onlyInspect
Composite: fetch the actual file content stored in a TELA-DOC-1 contract. A DOC's file (HTML/CSS/JS/...) lives inside a DVM-BASIC comment block in the contract code — NOT in a stored variable — so this tool fetches DERO.GetSC, confirms the SCID is a DOC, and extracts the file bytes. Gzip-compressed files (a .gz filename, the TELA-CLI default) are transparently base64-decoded + decompressed to plaintext. Large files paginate via offset.
When to call: when a user wants to READ or inspect the actual code/markup a TELA app file holds (e.g. "show me the HTML of this TELA DOC", "what does this app's app.js contain"). Get DOC SCIDs from tela_inspect on an INDEX first. PREFER this over dero_get_sc: that returns the raw DVM contract wrapper; this extracts just the embedded file content and reports docType, size, and signature presence.
Input Requirements:
scidis REQUIRED. Must be 64 hex chars and reference a TELA-DOC-1 contract (an INDEX or non-TELA SCID returns INVALID_INPUT with guidance).offsetis OPTIONAL. Byte offset into the extracted content; passnext_offsetto read the next chunk of a large file.topoheightis OPTIONAL. Omit for the latest committed state.
Output: { scid, topoheight, filename, doc_type, sub_dir, content_embedded, content, content_offset, content_length, content_truncated, next_offset, compressed, decompressed, stored_filename, signature, signature_note, note, narrative, related_docs }. content is the plaintext file (a 60000-char chunk; paginate via next_offset), or null when content is not embedded (DocShard/STATIC/external). compressed is true for .gz files; decompressed is true when this tool gunzipped them (filename then strips .gz; stored_filename keeps the on-chain name). The contract's author signature presence is reported but NOT cryptographically verified.
| Name | Required | Description | Default |
|---|---|---|---|
| scid | Yes | 64-char hex Smart Contract ID of a TELA-DOC-1 file contract | |
| offset | No | Byte offset into the extracted file content; use next_offset to paginate large files | |
| topoheight | No | Optional topo height; omit for latest committed state |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds substantial behavioral context: extraction from comment block, gzip decompression, pagination via offset, and notes that author signature presence is reported but not verified. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core function. It uses bullet points for input requirements and output fields, making it easy to parse. Every sentence adds value, and the length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description thoroughly explains all output fields and their meanings, including handling of compressed files, pagination, and edge cases like non-embedded content. It provides complete guidance for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds significant meaning: for scid, it explains the 64-hex requirement and behavior for invalid inputs; for offset, it clarifies pagination with next_offset; for topoheight, it advises omission for latest state. This exceeds the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches actual file content from TELA-DOC-1 contracts, extracting from DVM-BASIC comment blocks. It uses specific verbs like 'fetch' and 'extract', and distinguishes from sibling tools like dero_get_sc (raw contract wrapper) and tela_inspect (gets SCIDs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to call' guidance and recommends preferring this tool over dero_get_sc. It also advises getting SCIDs from tela_inspect first. However, it does not explicitly state when not to call, though it implies via the input requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tela_inspectARead-onlyInspect
Composite: fetch a TELA contract by SCID (DERO.GetSC code + variables) and parse it as either a TELA-INDEX-1 app manifest or a TELA-DOC-1 file contract, auto-detecting which standard it is from the stored keys. TELA is DERO's on-chain web-app platform: an INDEX is the app manifest (like package.json) and DOCs are the individual files (HTML/CSS/JS) stored on chain.
When to call: as the FIRST step whenever a user references a TELA SCID, a .tela dURL app, or asks "what is this TELA contract/app", "what files does this TELA app have", or "is this a TELA INDEX or DOC". PREFER this over dero_get_sc + manual parsing or explain_smart_contract: explain_smart_contract treats TELA contracts as generic DVM and its surface CAPS stored keys at 50, which silently drops DOCn entries on large manifests — tela_inspect reads the raw stringkeys directly so it enumerates ALL DOC references, and it decodes the TELA header/mods/commit schema the generic tool does not understand.
Input Requirements:
scidis REQUIRED. Must be 64 hex chars (the TELA contract id).topoheightis OPTIONAL. Provide to inspect at a specific topo height; omit for the latest committed state.
Output: a discriminated union on kind. tela_index → { scid, topoheight, kind, index: { name, description, icon, durl, mods[], docs:[{position, key, scid, is_entrypoint, malformed}], doc_count, commit, version_history[], current_commit_hash, owner, updateable:'unknown', updateable_note, parse_notes[] }, narrative, related_docs }. tela_doc → { ..., doc: { filename, doc_type, sub_dir, durl, signature, content_embedded, code_size_bytes, immutable }, narrative, related_docs }. not_tela → { ..., kind:'not_tela', reason, observed:{ stringkey_sample[], stringkeys_total, has_code, markers[] }, narrative } — returned (NOT an error) when the SCID is unknown or lacks TELA markers. Updateability cannot be derived from chain state (ringsize is not in GetSC) so it is honestly reported as 'unknown'.
| Name | Required | Description | Default |
|---|---|---|---|
| scid | Yes | 64-char hex Smart Contract ID of a TELA-INDEX-1 or TELA-DOC-1 contract | |
| topoheight | No | Optional topo height; omit for the latest committed state |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, and the description adds significant behavioral context: it reads raw stringkeys directly, returns a discriminated union with three possible kinds (tela_index, tela_doc, not_tela), and explains what happens when the SCID is unknown (not an error). It also truthfully reports updateability as 'unknown' since it cannot derive it from chain state. No contradictions with annotations. This highly transparent disclosure goes well beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose but well-structured: it begins with a high-level 'Composite:' summary, then explains when to call and input requirements. It uses clear section breaks and bullet-style lists. While it could be slightly trimmed (e.g., the output details are lengthy), every sentence serves a purpose and is logically organized. The front-loading of the core purpose aids quick understanding. Score 4, as it is not perfectly concise but still effectively structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (composite, auto-detects, multiple output types) and has no output schema, yet the description fully details the returned structure for each kind (tela_index, tela_doc, not_tela). It also covers edge cases (e.g., unknown SCID returns not_tela, not an error) and contrasts with sibling tools. Given the tool's complexity and lack of output schema, the description leaves no significant gaps. Score 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for both parameters (scid and topoheight) with 100% coverage, so the baseline is 3. However, the description adds meaningful context: it clarifies that scid must be 64 hex chars (though schema pattern already enforces it) and explains the purpose of topoheight ('inspect at a specific topo height; omit for the latest committed state'). This adds value by connecting parameters to the tool's domain (TELA contract inspection) without redundancy. A score of 4 reflects this modest but useful enrichment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches and parses a TELA contract by SCID, auto-detecting whether it's an INDEX or DOC contract. It uses a specific verb ('fetch and parse') and resource ('TELA contract by SCID'), and distinguishes itself from sibling tools like explain_smart_contract and dero_get_sc by highlighting its ability to enumerate all DOC references and decode TELA-specific headers. This aligns with the highest rating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call: 'as the FIRST step whenever a user references a TELA SCID, a `.tela` dURL app, or asks...'. It provides clear guidance on when not to use alternatives, such as avoid explain_smart_contract because it treats TELA contracts generically and drops DOCn entries. It also lists specific input requirements and optional parameters. This meets the highest standard for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trace_transaction_with_contextARead-onlyInspect
Composite: look up a DERO transaction by hash, classify its confirmation status (confirmed | mempool | unknown) and kind (sc_install | transfer_or_invocation | coinbase | unknown), extract the SC surface inline when the tx is a contract install, and stitch the right DERO tx + DVM docs pages as citations.
When to call: as the FIRST step when investigating any tx by hash — the user asks "what is this tx", "is this confirmed", "what contract did this deploy", or "what does this tx do". PREFER this over chaining dero_get_transaction with dero_get_sc yourself: for SC INSTALL txs the composite already extracts the deployed function surface inline (no second RPC needed because the source is embedded in the tx record), classifies the kind so the agent does not have to inspect the raw shape, and protects against the "empty record" failure mode by surfacing structured TX_NOT_FOUND when the daemon does not know the hash.
Input Requirements:
tx_hashis REQUIRED. Must be 64 hex chars.decodeis OPTIONAL (default true). Pass false to ask the daemon to skip the JSON-decoded view (raw hex still comes back; the field hint that the binary is available).include_sc_contextis OPTIONAL (default true). Set false to skip the inline extractScSurface call for SC install txs (useful when you only need confirmation / ring info).
Output: { tx_hash, confirmation: { status, block_height, valid_block, invalid_blocks, in_pool }, kind, ring: { groups, first_group_size }, reward, signer_visible, native_balance, sc_install: { scid, surface, raw_code_length, has_code } | null, raw_tx_hex_length, narrative, related_docs, _diagnostics }. sc_install is non-null ONLY when the tx is a contract install AND the surface extractor produced something (tx_hash IS the resulting SCID in that case). SC invocation arg decoding is NOT performed — that requires walking the binary tx blob with the DERO tx codec, which is not bundled in this MCP. The composite surfaces raw_tx_hex_length so the agent knows the binary is available via dero_get_transaction. On unknown hash the daemon returns an empty record and the composite returns a structured _meta.error with code TX_NOT_FOUND.
| Name | Required | Description | Default |
|---|---|---|---|
| decode | No | Pass decode_as_json=1 to the daemon. Default true. Decoded JSON view is informational; the raw hex always comes back. | |
| tx_hash | Yes | 64-char hex transaction hash | |
| include_sc_context | No | When true (default), runs the SC-install surface extraction inline when the tx contains contract code. SC invocation arg decoding is NOT performed in either mode; see module docs. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so no contradiction. Description adds behavioral context: it is a composite, handles TX_NOT_FOUND, does not perform SC invocation arg decoding, and surfaces raw_tx_hex_length. This provides significant additional understanding beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and front-loaded purpose. While somewhat lengthy, each sentence provides useful information without redundancy. It is appropriately concise for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description thoroughly explains the output fields (tx_hash, confirmation, kind, ring, etc.), covers limitations (no SC arg decoding), and describes failure modes (TX_NOT_FOUND). This is complete for an agent to understand the tool's behavior and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning: explains the decode parameter's effect, the include_sc_context parameter's function, and the tx_hash format requirement. It also mentions defaults and implications, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a composite tool for looking up a DERO transaction by hash, classifying confirmation status and kind, extracting SC surface for contract installs, and stitching citations. It distinguishes from sibling tools like dero_get_transaction by explicitly stating preference over chaining.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'When to call: as the FIRST step when investigating any tx by hash' and lists specific user queries. It also says 'PREFER this over chaining dero_get_transaction with dero_get_sc yourself' and provides reasons, giving clear guidance on when to use this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Your Connectors
Sign in to create a connector for this server.