Chunk MCP Server
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Chunk MCP Serverwhat's the BTC/USD price?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Chunk MCP Server
Production-ready MCP server exposing Chunk MedianFeeds tools over stdio.
Network: Chunk testnet (default RPC:
https://rpc.chunknet.org)Contract: MedianFeeds (default):
0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD
Requirements
Node.js 18+ (ESM modules)
Quickstart
Install
cd mcp-servernpm install
Build
npm run build
Run (stdio transport)
npm start
Configuration
Environment variables
CHUNK_RPC— JSON-RPC endpoint (default:https://rpc.chunknet.org)CHUNK_MEDIAN_ADDR— MedianFeeds contract address (default:0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD)METRICS_CACHE_TTL_MS— metrics cache TTL in milliseconds (default: 30000)
Production .env (overrides optional)
CHUNK_RPC=https://rpc.chunknet.org
CHUNK_MEDIAN_ADDR=0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD
METRICS_CACHE_TTL_MS=30000Notes: You can omit .env entirely — these are the built-in defaults.
Tools
list_metrics— List metric definitions from MedianFeedsArgs:
{ chain?, rpcUrl?, contractAddress?, currency?, tagIncludes?, nameContains?, limit?, offset? }
quote_metrics— Get last quotes for given metric namesArgs:
{ names: string[], chain?, rpcUrl?, contractAddress?, format?: 'raw'|'int'|'decimal'|'all', decimals?: number }
get_signed_root— Get current signed Merkle tree root (epoch)Args:
{ chain?, rpcUrl?, contractAddress? }
get_metrics_count— Total metrics counthas_metric— Check if a metric exists by nameget_metrics_map— Mappingname -> id(index-based)quote_by_ids— Quote metrics by numeric idsArgs:
{ ids: number[], chain?, rpcUrl?, contractAddress?, format?, decimals? }
quote_metrics_at_block— Quote metrics at specific block numberArgs:
{ names: string[], blockNumber: number, chain?, rpcUrl?, contractAddress?, format?, decimals? }
quote_metrics_at_epoch_end— Quote metrics at the end of an epochArgs:
{ names: string[], epochDuration?: number, epochId?: number, chain?, rpcUrl?, contractAddress?, format?, decimals? }
quote_metrics_at_timestamp— Quote metrics at specific UNIX timestamp (seconds)Args:
{ names: string[], timestamp: number, chain?, rpcUrl?, contractAddress?, format?, decimals? }
get_health— RPC health info{ chainId, blockNumber }check_staleness— Check if metrics are stale w.r.tmaxAgeSecondscheck_thresholds— Threshold checks for rules of form{ name, op: 'lt'|'lte'|'gt'|'gte'|'eq'|'neq', value: string|number }
Formatting
Raw values are returned as on-chain 2**112-scaled integers.
Use
format: 'decimal'anddecimalsto get human-friendly strings with rounding.
Resources
chunk://median/{chain}/metrics— JSON array of metrics for a chain (chunksupported)chunk://median/{chain}/metric/{name}— JSON object with the latest quote for a metric
Subscriptions
The server registers
resources.subscribecapability.On epoch changes,
resources/updatednotifications are sent for subscribed URIs.
Client Example (Node.js)
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
const transport = new StdioClientTransport({
command: 'node',
args: ['dist/server.js'],
env: process.env,
});
const client = new Client({ name: 'chunk-mcp', version: '0.1.0' });
await client.connect(transport);
const list = await client.callTool({ name: 'list_metrics', arguments: { limit: 5 } });
const names = list.structuredContent.metrics.map(m => m.name).slice(0, 2);
const quotes = await client.callTool({ name: 'quote_metrics', arguments: { names, format: 'decimal', decimals: 6 } });
console.log(quotes.structuredContent.quotes);
await client.close();Claude Desktop (MCP) configuration (example)
Configure a stdio MCP server:
{
"mcpServers": {
"chunk-mcp": {
"command": "node",
"args": ["dist/server.js"],
"env": {
"CHUNK_RPC": "https://rpc.chunknet.org",
"CHUNK_MEDIAN_ADDR": "0x78D02A47fA898ffF4B37A9B414Eace5eed3e7fAD"
}
}
}
}Operational Notes
Timeouts and RPC limits depend on your provider.
Handle network errors and transient failures with retries on the client side.
For production, pin a stable RPC endpoint and contract address.
Project Structure
src/server.js— source (ESM)dist/server.js— bundled build (afternpm run build)No tests are included in this directory by design.
Available Tools
14 toolscheck_stalenessC
Check if metrics are stale given maxAgeSeconds
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| names | Yes | ||
| rpcUrl | No | ||
| maxAgeSeconds | Yes | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It implies a read-only operation ('check') but does not mention whether it requires network access, what conditions cause errors, or the structure of the result. This is a minimal disclosure that leaves significant behavioral characteristics undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information. It is front-loaded with the action and key input, adhering to the principle of every word earning its place. There is no unnecessary fluff or repetition.
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 complexity (5 parameters, no output schema, no annotations), this one-line description is insufficient. It does not explain the return value, expected behavior, or how parameters interact. While it provides a basic purpose, it falls short of being a complete guide for an agent to invoke 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 0%, so the description must compensate by explaining parameter roles. It only mentions 'maxAgeSeconds', providing its meaning as the age threshold. Other parameters like 'names', 'chain', 'rpcUrl', and 'contractAddress' are not explained, leaving the user uncertain about their purpose and relationships.
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: checking if metrics are stale given maxAgeSeconds. It uses the specific verb 'check' with the resource 'metrics' and the key parameter 'maxAgeSeconds', distinguishing it from siblings like 'check_thresholds' which deals with thresholds. However, it doesn't elaborate on what 'stale' means or what the output looks like, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention exclusions, prerequisites, or complementary tools such as 'check_thresholds' or 'get_health'. It simply states the action without contextualizing its appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_thresholdsC
Check metric thresholds against current values
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| rules | Yes | ||
| format | No | ||
| rpcUrl | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits, but it only states that thresholds are checked against current values. It does not mention side effects, read-only nature, permissions, error conditions, or return format, leaving significant behavioral ambiguity.
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 a single concise sentence with no fluff, but it is under-specified for a tool with 5 parameters and no schema descriptions. It is not as vacuous as 'Process', but it does not provide enough detail to be useful.
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 complexity (5 parameters, no output schema, no annotations), the description is completely inadequate. It fails to explain the structure of threshold rules, the meaning of format, the role of RPC URL and contract address, or the expected return value, making correct invocation impossible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate. No parameter is explained—neither 'rules' (the threshold list) nor 'format', 'chain', 'rpcUrl', or 'contractAddress'. The tool description adds no semantic meaning beyond what the bare schema shows.
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 "Check metric thresholds against current values" clearly identifies the action (checking thresholds) and the resource (metric thresholds), and it distinguishes itself from sibling tools such as quote_metrics or check_staleness. However, it could be more specific about the input rules structure and the nature of the output.
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 no guidance on when to use this tool versus alternatives like quote_metrics or get_health. It does not mention any context, prerequisites, or situations where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_healthB
Get basic RPC health (chainId, latest block)
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| rpcUrl | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation through the verb 'Get', but it does not disclose potential side effects, required permissions, or behavior when the RPC is unreachable. With no annotations provided, the description carries the burden but only partially addresses it by indicating the type of data returned.
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 a single, focused sentence that includes the core action and output, with no redundant or filler content. It is appropriately concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, or parameter descriptions, the description is too sparse to fully guide usage. It does not explain what 'basic RPC health' entails beyond the examples, nor does it cover the purpose of the parameters, leaving the tool under-specified for an AI agent to invoke confidently.
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 defines 'chain' and 'rpcUrl' with zero description coverage, and the tool description does not clarify their meaning or relationship. The agent cannot determine what values to supply or whether rpcUrl is required for a specific chain. This is a significant gap for a two-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'basic RPC health', and specifies the output (chainId, latest block). This distinguishes it from sibling tools like check_staleness or quote_metrics, which address different concerns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as check_staleness or get_metrics_count. The description only implies a simple health check, but no explicit context or exclusions are provided, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metrics_countD
Get total metrics count
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| rpcUrl | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only says 'Get', implying a read operation. It does not explain whether the count is affected by the parameters, whether it requires specific inputs, or what the return value represents, offering no behavioral context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (four words), but it sacrifices all informativeness. It is under-specified rather than efficiently front-loaded, failing to convey anything beyond the tool's name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters and no output schema, the description is far too minimal. It does not explain what 'total metrics count' means, which metrics are included, how the parameters affect the result, or what the output format will be.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any of the three parameters (chain, rpcUrl, contractAddress). The agent must rely solely on parameter names and types, which do not convey how they influence the metric count.
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 'Get total metrics count' essentially restates the tool name 'get_metrics_count' with the word 'total' added. It provides no new information about what the tool specifically does or how it differs from sibling tools like list_metrics or get_metrics_map.
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 offers no guidance on when to use this tool versus alternatives such as list_metrics, has_metric, or quote_metrics. There is no mention of context, prerequisites, or exclusions, leaving the agent without selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metrics_mapC
Get mapping name -> id (index-based)
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| rpcUrl | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It mentions 'index-based' but does not clarify what that means for the output, any ordering guarantees, or whether the mapping is static for a given contract. No side effects or quirks are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no redundant words. It is front-loaded with the action and resource, achieving maximum clarity per word.
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 many sibling tools and no annotations or output schema, the description is too sparse. It doesn't explain what the mapping represents, how index-based works, or how this tool fits into the broader workflow. The low complexity of the tool is matched by minimal context, but the lack of any usage hints leaves the description incomplete.
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 has zero description coverage for its three parameters (chain, rpcUrl, contractAddress), and the description does not mention any of them. The description fails to compensate for the lack of schema documentation, leaving the agent without hints about how parameters affect the returned mapping.
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 returns a mapping from metric names to IDs, using the verb 'Get' and the resource 'mapping name -> id'. It is specific enough to differentiate from tools like get_metrics_count or has_metric, though it overlaps with ids_for_names without distinguishing itself from that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as ids_for_names or list_metrics. The description only states what it does, not the context in which it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signed_rootC
Get current signed Merkle tree root (epoch) from MedianFeeds
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| rpcUrl | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states that the tool gets a root, implying a read-only operation, but does not describe return format, error behavior, required inputs, or any side effects. The mention of 'epoch' adds slight context but leaves much to be inferred.
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 a single, efficient sentence with no padding. It packs the key information (action, resource, source, and time scope) into a compact form. It could be improved with a little more structure, but as written it is concise 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?
With no output schema, no annotations, and minimal parameter info, the description is insufficiently complete. It gives no indication of what the returned root looks like, how to interpret the epoch, or how the optional parameters affect the call. This is especially problematic for a tool that may require context about the MedianFeeds protocol.
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 has three parameters (chain, rpcUrl, contractAddress) with zero schema description coverage (0%). The description does not mention any of these parameters or how they influence the request. The agent receives no help understanding what values to pass, defaults, or optionality, making this a significant gap.
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 exact operation: 'Get current signed Merkle tree root (epoch) from MedianFeeds'. It specifies the verb (get), the resource (signed Merkle tree root), and the scope (current epoch from MedianFeeds). This distinguishes it from sibling tools like get_health or quote_metrics, which serve different purposes.
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 no guidance on when to use this tool versus alternatives. It does not mention context, prerequisites, exclusions, or relationships to sibling tools. The agent is left to infer usage solely from the tool name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
has_metricC
Check if metric exists by name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| chain | No | ||
| rpcUrl | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that the tool checks existence by name but does not disclose return format, behavior when the metric is absent, whether it performs network calls, error handling, or any side effects. This is a significant gap for a tool interacting with blockchain primitives.
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 a single concise sentence that immediately conveys the primary action. It is efficient and front-loaded. However, it is arguably too terse to capture necessary context, so it does not fully earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, no output schema, and no annotations. The description only addresses the core existence check by name, omitting the role of chain/rpcUrl/contractAddress, return type, and usage context. For a tool that likely queries a blockchain oracle, this is incomplete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only adds meaning for the 'name' parameter ('by name'). The purpose of 'chain', 'rpcUrl', and 'contractAddress' remains unexplained, leaving the agent without sufficient context to fill these parameters correctly. The description does not compensate for the schema's lack of parameter descriptions.
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: 'Check if metric exists by name' – a specific verb ('Check') and resource ('metric existence') with an explicit criterion (by name). This distinguishes it from sibling tools like list_metrics, ids_for_names, or get_metrics_count, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or scenarios where another tool would be more appropriate. The description is purely a function statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ids_for_namesC
Resolve on-chain metric ids for the given names
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| names | Yes | ||
| rpcUrl | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure, but it only states the action without mentioning return format, error behavior, required chain/contract parameters, or whether it is a read-only lookup. This leaves agents guessing about side effects or prerequisites.
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 a single sentence with clear subject-verb-object structure, front-loaded with the core verb and resource. Every word contributes to the purpose, making it highly concise.
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 4 parameters, no output schema, and 14 siblings, this description is severely under-specified. It lacks return value information, parameter context, and sibling differentiation, making it inadequate for reliable tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'given names', which aligns with the required `names` parameter, but it provides no explanation for `chain`, `rpcUrl`, or `contractAddress`, leaving their roles unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Resolve') and resource ('on-chain metric ids'), and it clearly distinguishes the tool from siblings like list_metrics or quote_metrics by specifying that it resolves IDs from given names. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_metrics_map or quote_by_ids. The description only states what it does, not the context in which it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_metricsC
List available metric definitions from a MedianFeeds contract
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| limit | No | ||
| offset | No | ||
| rpcUrl | No | ||
| currency | No | ||
| tagIncludes | No | ||
| nameContains | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It only says 'List', implying a read-only operation, but does not disclose behavior such as pagination, ordering, or what happens with empty results. There is no mention of required permissions or network calls.
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 a single sentence, front-loaded with the verb 'List', and contains no fluff. It is efficient but perhaps too terse 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?
With 8 parameters, no schema descriptions, no annotations, and no output schema, the description is insufficient. It does not mention the return format, how filters interact, or the meaning of MedianFeeds contract, leaving significant 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?
The schema has 0% description coverage for its 8 parameters, and the description does not explain any of them. Terms like chain, limit, offset, tagIncludes, and nameContains are left undefined, so the agent cannot infer correct parameter values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and the resource (metric definitions from a MedianFeeds contract), which distinguishes it from sibling tools like quote_metrics and get_metrics_count that serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as quote_metrics or has_metric. The description merely states what it does, leaving the agent to infer usage from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_by_idsC
Quote metrics by numeric ids
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | ||
| chain | No | ||
| format | No | ||
| rpcUrl | No | ||
| decimals | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description essentially restates the tool's name with no behavioral details. It discloses nothing about side effects, network calls, return format, error cases, or required permissions. Since there are no annotations, the description carries the full burden and fails entirely.
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 very short, but it is under-specified rather than concise. It omits critical information and provides no structural guidance, making it ineffective despite its brevity.
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 six parameters, no output schema, and no annotations, this description is grossly incomplete. It does not explain what 'quote' means, what the parameters do, what the return value is, or how the tool fits into the broader system.
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?
Only the 'ids' parameter is vaguely described as 'numeric ids'. The remaining five parameters (chain, format, rpcUrl, decimals, contractAddress) are not explained at all, and the schema description coverage is 0%, so the description fails to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'quote' and identifies the resource as 'metrics', with the qualifier 'by numeric ids'. This distinguishes it from siblings like quote_metrics, though it doesn't clarify what 'quote' returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus similar siblings like quote_metrics or quote_metrics_at_block. No usage context, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_metricsC
Get last quotes for given metric names
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| names | Yes | ||
| format | No | ||
| rpcUrl | No | ||
| decimals | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It implies a read-only operation but does not explain semantics like 'last' (e.g., latest available), error handling, or any side effects. Minimal behavioral context is provided.
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 a single, concise sentence with no unnecessary words. It is front-loaded with the core action, but it lacks additional structure or elaboration that might help an agent, though it earns its length.
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 has six parameters, no output schema, and no annotations, this brief description is completely inadequate. It does not explain return values, parameter prerequisites, or how it differs from the many sibling time-based quote tools, leaving agents underinformed.
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 mentions 'metric names,' which aligns with the required 'names' parameter, but provides no details on the other five parameters (chain, rpcUrl, format, decimals, contractAddress). Schema coverage is 0%, and the description does little to compensate, leaving most parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches the latest quotes for specified metric names, using the verb 'Get' and a specific resource. It distinguishes from sibling tools like quote_metrics_at_block and quote_by_ids by targeting 'last quotes' and 'metric names'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool over the time-specific variants (quote_metrics_at_block, etc.) or quote_by_ids. It simply states the action without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_metrics_at_blockC
Quote metrics at specific block number
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| names | Yes | ||
| format | No | ||
| rpcUrl | No | ||
| decimals | No | ||
| blockNumber | Yes | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states a single action without mentioning side effects, permissions, safety, return structure, or failure modes. 'Quote' hints at a read operation, but it's not explicitly stated as non-destructive or safe, and no additional behavioral context is given.
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 a single concise sentence with no filler words, effectively front-loading the core purpose. It earns its place by stating the exact operation and scope. However, it is so brief that it borders on under-specification, though the content that exists is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, no output schema, and no annotations, this description is vastly incomplete. It fails to explain the meaning of most parameters, the expected return value, or how this tool fits into the broader set of sibling tools. The description is a bare minimum that would leave an agent guessing about correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it provides no parameter details. It mentions 'block number' which aligns with the blockNumber parameter, but adds nothing beyond the schema's parameter name. It doesn't explain the purpose of names, chain, format, decimals, rpcUrl, or contractAddress, leaving the agent without necessary semantic guidance.
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 'quote' and resource 'metrics', with a specific qualifier 'at specific block number'. This distinguishes it from siblings like quote_metrics_at_timestamp and quote_metrics, which target other time references. However, it doesn't fully elaborate on what 'quote' entails (e.g., return format), so it's clear but not exhaustive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving metrics at a particular block, which provides some context. However, it offers no explicit guidance on when to choose this over alternatives like quote_metrics_at_epoch_end or quote_metrics_at_timestamp, nor does it state any exclusions or prerequisites. The usage is implied but not explicitly framed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_metrics_at_epoch_endC
Quote metrics at the end of an epoch (current by default)
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| names | Yes | ||
| format | No | ||
| rpcUrl | No | ||
| epochId | No | ||
| decimals | No | ||
| epochDuration | No | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavior disclosure. It only states the action and default, without mentioning side effects, read-only nature, error conditions, required authentication, or output structure. This is minimal and leaves key behavioral aspects unspecified.
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 a single concise sentence with no unnecessary words, and the key qualifier 'current by default' is front-loaded. It is appropriately sized, though it forfeits details that could be included without much bloat.
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 complexity (8 parameters, no output schema, no annotations), this description is incomplete. It does not explain parameter usage, return format, meaning of 'quote', or how epoch boundaries are determined, leaving a significant information gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 8 parameters with 0% description coverage, yet the description does not explain any of them (e.g., names, chain, format, epochId). The description entirely fails to compensate for the schema coverage gap, providing no meaning beyond the parameter 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 'Quote metrics at the end of an epoch' clearly identifies the action (quote) and the resource (metrics) with a specific temporal scope (epoch). It also notes 'current by default', clarifying the default behavior. However, it does not explicitly differentiate itself from sibling tools like quote_metrics_at_block or quote_metrics_at_timestamp, though the epoch reference implies this distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for when an epoch-end quote is needed, and 'current by default' indicates the default context. No explicit guidance is given for when to prefer this tool over others, nor any exclusions or alternatives, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_metrics_at_timestampC
Quote metrics at specific UNIX timestamp (seconds)
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | ||
| names | Yes | ||
| format | No | ||
| rpcUrl | No | ||
| decimals | No | ||
| timestamp | Yes | ||
| contractAddress | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states that it quotes metrics at a timestamp, but fails to mention return format, error handling, interpolation behavior, or safety profile. This is minimal at best.
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 extremely concise—a single sentence with no wasted words. However, it lacks any structured breakdown of parameters or usage, which might be expected for a tool with seven parameters.
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 seven parameters, zero schema description coverage, no output schema, and no annotations, the description is severely incomplete. It provides almost no context for the agent to invoke the tool correctly, making it inadequate for real-world use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only adds meaning for the 'timestamp' parameter by clarifying it is in seconds. All other parameters (names, chain, format, decimals, etc.) are left undocumented, leaving the agent to infer their purpose from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource pair: 'Quote metrics' at a 'specific UNIX timestamp'. It differentiates from sibling tools like quote_metrics_at_block and quote_metrics_at_epoch_end by explicitly mentioning timestamp, but it doesn't elaborate on what 'quote' entails beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as quote_metrics_at_block or quote_metrics_at_epoch_end. The description simply states what it does without any contextual cues or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The quote_metrics, quote_by_ids, quote_metrics_at_block, quote_metrics_at_epoch_end, and quote_metrics_at_timestamp tools all return quotes and are easily confused. Additionally, ids_for_names and get_metrics_map both resolve names to IDs, creating ambiguity in tool selection.
Most tools follow a consistent verb_noun pattern (get_*, check_*, list_*, quote_*), but ids_for_names deviates with a noun-preposition-noun structure. The mix of get and check for health-related actions is a minor inconsistency.
14 tools is within the typical well-scoped range but slightly heavy for the domain. The multiple time-based quote variants could be consolidated, but the count is still reasonable for a comprehensive metrics oracle.
The server covers health checks, metric listing, quoting (current and historical), ID mapping, and existence checks. However, there is no direct get_metric_by_id tool, and the time-based quote tools are somewhat redundant with each other, leaving minor coverage gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MEOK ABCI Bridge MCP — read-only Tendermint / Cosmos blockchain query for agents. Built-in registry
Chainlink tools over MCP: CCIP cross-chain, data feeds, data streams, VRF, proof of reserve.
Access New Relic observability data through MCP - query metrics, logs, traces, entities, and more
Query metrics, targets, entities, and team data in your Steep workspace via MCP.
Related MCP Servers
AlicenseAqualityDmaintenanceMCP server exposing read-only market data tools for crypto prices, funding rates, and prediction markets via Dataline API.814MIT- AlicenseCqualityCmaintenanceEnables querying real-time and historical financial market data for stocks, options, forex, and crypto, including quotes, trades, technical indicators, and reference data through a set of MCP tools.713MIT
- FlicenseNot gradedqualityDmaintenanceIntegrates multiple XRPL data sources including LOS, Validator History Service, XRPL JSON-RPC, and XRPLMeta to provide comprehensive querying of XRPL network data, accounts, transactions, tokens, validators, and more via MCP tools.
- AlicenseNot gradedqualityCmaintenanceProvides tools to query OKX cryptocurrency exchange data including instruments, tickers, candles, funding rates, and mark prices via MCP.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chunknet/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server