fabtally-chain-mcp
Allows checking the health of Chainlink price feeds, including last update age, latest answer, round monotonicity, stale flag, and optional deviation versus a reference.
Click on "Deploy 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., "@fabtally-chain-mcpWhat's the current gas price on Ethereum?"
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.
FabTally Chain — MCP server
On-chain monitoring reads an AI agent or dev polls per-call. Fronts the Chain HTTP API at https://chain.fabtally.com. Holds no private key.
Tools (all paid; a call with no payment returns the decoded x402 402 challenge)
Tool | Price | What it does |
| $0.001 | Resolve an ENS |
| $0.001 | Current gas for a chain via public RPC — base fee + suggested priority + max fee (gwei) at the latest block; optional at/below-threshold boolean. Args: |
| $0.003 | Next token vesting/unlock event(s) from DefiLlama's public emissions data — date, amount, % of max supply. Cleanly says so when there's no public schedule. Args: |
| $0.003 | Chainlink price-feed health — last-update age, latest answer, round monotonicity, stale flag vs heartbeat, optional deviation vs a reference. Args: |
Every tool also accepts an optional x_payment (base64 x402 payload) that is
forwarded as the X-PAYMENT header to settle the call and return the real result.
Humans can instead prepay by card and use an X-FabTally-Key credit key against
the HTTP API.
Related MCP server: Dataline MCP Server
Transports
stdio (portable):
npx fabtally-chain-mcp(bin:fabtally-chain-mcp)streamable-http (hosted):
https://chain.fabtally.com/mcp
Config: FABTALLY_CHAIN_BASE (default https://chain.fabtally.com).
Read-only, keyless, stateless, descriptive market-data/utility reads. Operated by Sunstone Soft (fabtally.com). Not financial advice, not a signal, not a prediction. The stateful "alert me when …" delivery is a separate product (the FabTally Alerts Telegram bot).
Available Tools
4 toolsens_expiryENS / Basename expiry lookup (paid $0.001)AInspect
PAID $0.001 (x402, USDC on Base). Resolve an ENS .eth or Basename .base.eth name's registration expiry ON-CHAIN (public RPC). Returns expiry date, days-left, whether it's in the 90-day grace period, the release date it becomes registrable again, and the current owner. Read-only, descriptive. Args: name. Without payment returns the x402 challenge; pass x_payment to settle.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full ENS name ending in .eth (e.g. vitalik.eth) or .base.eth (e.g. jesse.base.eth). | |
| x_payment | No | x402 payment payload (base64) for this PAID read. If supplied it is forwarded as the X-PAYMENT header to settle the call and return the real result instead of a 402 challenge. Omit to get the price challenge first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the paid nature, the on-chain read via public RPC, the read-only characteristic, and the exact return fields (expiry date, days-left, grace period, release date, owner). It also explains the 402 challenge behavior. However, it does not mention error scenarios (e.g., invalid name) or rate limits, leaving some behavioral gaps.
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 front-loaded, immediately stating the paid nature and the tool's function. Each sentence serves a purpose: payment info, what it resolves, what it returns, read-only status, and the argument/payment flow. 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?
Even without an output schema, the description lists the key returned data (expiry date, days-left, grace period, release date, owner) and explains the payment/challenge mechanism. It is reasonably complete for a lookup tool of moderate complexity, though it omits potential error conditions or formatting details. Siblings being unrelated means differentiation is not urgent.
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 already provides 100% coverage with detailed descriptions for both parameters (name and x_payment). The description adds minimal extra meaning beyond restating the argument names and the payment flow, which the schema also explains. Thus, the schema carries the heavy lifting, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves ENS .eth or Basename .base.eth registration expiry on-chain. It uses specific verbs ('Resolve', 'lookup') and names the resource ('registration expiry'), distinguishing it from sibling tools like gas, token_unlocks, and oracle_health, which address different domains.
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 clear context for usage: it is a paid read ($0.001 via x402), and explains the two-step flow (omit x_payment to get a challenge, supply it to settle and get the result). It does not explicitly discuss when not to use it or name alternative tools, but the context is sufficient given the unrelated siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gasCurrent gas for a chain (paid $0.001)AInspect
PAID $0.001 (x402, USDC on Base). Current gas for a chain via public RPC: base fee + suggested priority + suggested max fee (gwei) at the latest block. If below_gwei is set, also returns whether the base fee is at/below your threshold right now. Read-only. Args: chain (ethereum|base|arbitrum|polygon|bsc|optimism), below_gwei (optional). Without payment returns the x402 challenge; pass x_payment to settle.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain to read gas for. | |
| x_payment | No | x402 payment payload (base64) for this PAID read. If supplied it is forwarded as the X-PAYMENT header to settle the call and return the real result instead of a 402 challenge. Omit to get the price challenge first. | |
| below_gwei | No | Optional threshold: return a boolean of whether base fee is at/below this many gwei now. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does an excellent job. It discloses the paid nature, the read-only trait, and the key behavior of returning a challenge without payment. It also specifies what data is returned (base fee, suggested priority, suggested max fee) and the conditional boolean when below_gwei is set. There is no mention of rate limits or error cases, but the critical behaviors are transparent enough for an agent to know what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the crucial paid indicator. However, it includes a redundant 'Args: chain (...), below_gwei (optional)' line that repeats the schema, and it omits x_payment from that enumeration (though it is mentioned later). This slight redundancy and minor inconsistency prevent a perfect score, but the overall length and structure are 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?
Given there is no output schema, the description adequately explains the return values: gas fee components and the optional threshold boolean. It also clarifies the payment challenge behavior. It does not specify the exact output format (e.g., JSON structure), but the core outputs are described. The tool is relatively simple, and the description is sufficiently complete for an agent to invoke it 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?
The schema description coverage is 100%, so the baseline is 3. The description adds some value by explaining the x_payment flow and the challenge/settle mechanism, but it does not add much beyond the schema: chain enum values are already listed, below_gwei's threshold behavior is already in the schema, and the 'Args' line is redundant. The parameter semantics are fully captured by the schema, so no upgrade beyond baseline.
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 what the tool does: 'Current gas for a chain via public RPC: base fee + suggested priority + suggested max fee (gwei) at the latest block.' This is a specific verb+resource combination that also differentiates from siblings like ens_expiry, token_unlocks, and oracle_health, which serve entirely different purposes. The tool's name 'gas' is fully explained.
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 clear context: it explains the payment requirement ('PAID $0.001 (x402, USDC on Base)') and how to settle with x_payment, plus the fallback behavior ('Without payment returns the x402 challenge; pass x_payment to settle'). It does not name explicit alternative tools, but the sibling list makes the absence of competition clear, and the usage context is well-defined by the payment flow and read-only nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
oracle_healthChainlink price-feed health (paid $0.003)AInspect
PAID $0.003 (x402, USDC on Base). Chainlink price-feed health via public RPC: last-update age, latest answer (scaled by decimals), round monotonicity (is the answer current?), a stale flag vs the heartbeat, optional deviation vs a reference price, and per-factor flags. Read-only, descriptive. Args: feed_address, chain, heartbeat_seconds (optional), reference (optional). Without payment returns the x402 challenge; pass x_payment.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Chain the feed is deployed on. | |
| reference | No | A reference price to compute deviation % against (optional). | |
| x_payment | No | x402 payment payload (base64) for this PAID read. If supplied it is forwarded as the X-PAYMENT header to settle the call and return the real result instead of a 402 challenge. Omit to get the price challenge first. | |
| feed_address | Yes | Chainlink aggregator/proxy address (0x…40-hex), e.g. ETH/USD 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419. | |
| heartbeat_seconds | No | The feed's heartbeat in seconds for a precise stale check (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the read-only nature, the payment requirement via x402 (including a challenge flow), and the key behavioral aspects such as using public RPC and computing a stale flag. It does not mention error handling, rate limits, or exact return structure, but it covers the most important behaviors.
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 detailed but well-organized, front-loading the cost and immediately enumerating the checks. It is somewhat long but information-dense. The listing of arguments repeats schema information, which could be trimmed, but the overall structure is readable and 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 read-only health check with no output schema, the description covers core behaviors, payment flow, and optional parameters. However, it does not specify the output format (e.g., JSON shape) or behavior on invalid inputs (e.g., bad feed address or chain), which an agent might need for robust invocation. Given the tool's complexity, the description is fairly complete but leaves some 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 coverage is 100%, so the schema already documents all five parameters in detail. The description adds limited extra semantics, primarily explaining the x_payment flow (omitting vs passing it) and noting optional parameters. This supplements the schema slightly but does not significantly enhance meaning beyond it.
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 purpose: assessing Chainlink price-feed health via public RPC, with a specific list of checks performed (last-update age, latest answer, round monotonicity, stale flag, deviation). It distinguishes from sibling tools by focusing on price feed health, and the read-only nature is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (checking price feed health) and explains the payment flow (omit x_payment for challenge, pass it for result), but it does not provide explicit guidance on when to use this tool versus alternatives or when not to use it. It lacks comparative context for sibling tools like gas or token_unlocks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
token_unlocksNext token vesting/unlock event(s) (paid $0.003)AInspect
PAID $0.003 (x402, USDC on Base). Next token vesting/unlock event(s) from DefiLlama's PUBLIC emissions dataset: upcoming unlock date(s), token amount, and % of max supply, with a human description. Cleanly says so when a token has no public unlock schedule. Read-only, descriptive — NOT a price signal. Args: token (symbol, protocol name, or contract address), chain (optional, for address lookup). Without payment returns the x402 challenge; pass x_payment to settle.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Chain of the contract address (only used when token is an address). | |
| token | Yes | Token symbol (e.g. ARB), protocol name (e.g. arbitrum), or contract address. | |
| x_payment | No | x402 payment payload (base64) for this PAID read. If supplied it is forwarded as the X-PAYMENT header to settle the call and return the real result instead of a 402 challenge. Omit to get the price challenge first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure. It specifies the payment requirement ($0.003, x402, USDC on Base), the read-only nature, the data source (DefiLlama public emissions), the 402 challenge flow, and the behavior for tokens without a public schedule. This is comprehensive and goes well beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (about 100 words), front-loaded with the critical payment flag, then states the core function, data content, disclaimers, and argument details. Every sentence carries useful information without redundancy, making it easy to parse and act on.
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 no output schema, but the description enumerates the returned information (dates, amount, % supply, human description) and the no-public-schedule edge case. It also explains the payment protocol and argument behavior. This is complete for a read-only descriptive tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates what the schema already documents (token symbol/protocol/address, chain for address lookup, x_payment purpose). It adds no meaningful semantic information beyond the schema, so a score of 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 the tool's function: 'Next token vesting/unlock event(s)' with specifics about unlocking date, token amount, and % of max supply. It also distinguishes itself from siblings (ens_expiry, gas, oracle_health) by focusing on token unlocks and explicitly notes it is 'NOT a price signal.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use it (when you need upcoming unlock events) and when not to (it is not a price signal). It also explains the argument formats and the payment flow, though it does not explicitly name alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
ens_expiry - First observed
gas - First observed
oracle_health - First observed
token_unlocks
TDQS
Scored across 4 tools
Each tool targets a completely distinct data domain: ENS registrations, gas fees, token unlocks, and oracle health. There is no overlap in purpose or arguments, so an agent can unambiguously select the right tool.
All tool names are lowercase snake_case and clearly descriptive (ens_expiry, gas, token_unlocks, oracle_health). They are consistent in style, though they are noun phrases rather than a verb_noun pattern, so the naming is predictable but not strictly uniform.
With 4 tools, the server is well-scoped for a focused blockchain data query service. Each tool is distinct and earns its place, and the count falls comfortably within the recommended range.
The tool surface covers a reasonable set of read-only blockchain data queries, but some common endpoints like block details or transaction status are missing. However, the included tools are each self-contained, and the gaps are not likely to cause significant failures for the intended use case.
Maintenance
Related MCP Connectors
Hosted MCP server for live Bittensor chain reads and self-custodial on-chain writes.
Abstraxn: public Web3 MCP server for read-only chain data and pay-per-call relays.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA lightweight, fast MCP server that provides onchain capabilities for the LLMs and Agents.39253MIT

Dataline MCP Serverofficial
AlicenseAqualityDmaintenanceMCP server exposing read-only market data tools for crypto prices, funding rates, and prediction markets via Dataline API.89MIT- FlicenseAqualityDmaintenancePay-per-call MCP server for on-chain blockchain data including wallet profiles, token metrics, protocol TVL, and gas prices.5-
- AlicenseAqualityCmaintenanceA read-only MCP server that queries multichain EVM on-chain data through Blockscout REST API, providing tools for address info, transactions, logs, and more.1611MIT