US Economic, SEC EDGAR & On-Chain Data (x402)
Server Details
21 paid tools: US macro data, SEC EDGAR filings, on-chain EVM reads. Settled in USDC on Base.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- ktcod/x402-json-repair-mcp
- GitHub Stars
- 0
- Server Listing
- x402-json-repair-mcp
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.8/5 across 21 of 21 tools scored.
Every tool targets a distinct resource and action. The macro_* tools each cover one economic indicator, the edgar_* tools cover different SEC filing types, and the onchain_* tools are split by chain scope (single vs multi), asset type, and operation. Even the two data-cleaning tools are clearly distinct (JSON repair vs table parsing). No two tools appear to do the same thing.
Names follow a mostly consistent snake_case pattern with domain prefixes: macro_*, edgar_*, onchain_*. The exceptions are bls_cpi (could be macro_cpi) and the utility tools structured_json_repair and tabular_to_json, which break the prefix pattern but are still descriptive and predictable. Overall, the convention is clear with minor deviations.
21 tools is in the 'heavy' range (16-25). However, the server spans three distinct domains (US economic data, SEC EDGAR, on-chain data), and each tool serves a unique purpose within its domain. While it feels dense, the breadth is justified by the server's stated multi-domain scope.
The tool surface covers the major needs in each domain: key macro indicators, common EDGAR filings and searches, and core on-chain reads. Minor gaps exist (e.g., no PPI, no historical on-chain balances, no company CIK lookup), but agents can work around these with existing tools or by combining them.
Available Tools
21 toolsbls_cpiUS CPI InflationARead-onlyIdempotentInspect
Latest U.S. CPI inflation from the Bureau of Labor Statistics, with the rates already computed.
BLS publishes index levels, not inflation rates. This tool does the arithmetic: headline and core (all items less food and energy) CPI, each with year-over-year and month-over-month percent change. Year-over-year uses not-seasonally-adjusted data and month-over-month uses seasonally adjusted, matching how these figures are conventionally reported.
When to use: you need the current inflation rate, a real-versus-nominal adjustment, or CPI context for a macro decision.
When NOT to use: you need PCE (the Fed's preferred gauge), regional or category-level CPI detail, or a long historical series.
Args: none.
Returns structuredContent: { "asOf": "2026-07", "periodName": "July 2026", "headline": { "index": 333.918, "yoyPercent": 2.9, "momPercent": 0.2 }, "core": { "index": 337.133, "yoyPercent": 3.1, "momPercent": 0.3 }, "source": "https://www.bls.gov/cpi/" }
| 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 and idempotentHint, and the description adds valuable methodological context: BLS publishes index levels, not rates; the tool computes YoY from NSA data and MoM from SA data. This explains behavior beyond the structured annotations 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-organized with clear sections ('When to use', 'When NOT to use', 'Args', 'Returns structuredContent'). Every sentence adds value, and the sample output makes the structure concrete without 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?
Despite lacking an output schema, the description provides a full structuredContent example with field names and sample values, covering asOf, periodName, headline, and core. It explains the data source and the computation method, making it complete for a simple 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?
The tool has zero parameters, so the description appropriately states 'Args: none.' With no parameters to document, the baseline of 4 is met. The description could have added even more context about parameterlessness, but it's already explicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb and resource: 'Latest U.S. CPI inflation from the Bureau of Labor Statistics, with the rates already computed.' It specifies exact outputs (headline and core CPI, YoY and MoM) and naturally distinguishes from siblings like macro_pce by mentioning what it does not cover.
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 includes 'When to use' (need current inflation rate, real-vs-nominal adjustment, CPI context) and 'When NOT to use' (PCE, regional/category-level detail, long historical series). Names the alternative (PCE) and clarifies the tool's scope relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_13f_holdingsSEC 13F Institutional HoldingsARead-onlyIdempotentInspect
Institutional stock holdings for a fund manager, from its latest SEC Form 13F.
13F filings split the actual holdings into a separate "information table" XML document that the filing index does not point at directly; this locates it, parses every position, and rolls up lots reported separately (different share classes, put/call splits) into one row per issuer.
When to use: seeing what a fund or institution holds and how much, tracking "smart money" positioning, portfolio research.
When NOT to use: real-time positions (13F is filed up to 45 days after quarter end, so this is always historical), short positions (13F does not require disclosing shorts), or non-U.S. filers.
Args:
ticker (string, required): the FILER's ticker (if it has one) or its SEC CIK, e.g. "1067983" for Berkshire Hathaway.
limit (integer, optional, default 25): maximum holdings to return, largest by value first (1-200).
Returns structuredContent: { "cik": "0001067983", "filer": "BERKSHIRE HATHAWAY INC", "periodOfReport": "2026-06-30", "filedAt": "2026-08-14", "totalPositions": 45, "totalValueUsd": 293000000000, "holdings": [ { "issuer": "ALLY FINL INC", "cusip": "02005N100", "valueUsd": 900335661000, "shares": 19593812, "lots": 3 } ], "source": "https://www.sec.gov/edgar" }
Reports the most recently FILED 13F-HR. Values are whole USD, taken directly from the filing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum holdings to return, largest first. Default 25. | |
| ticker | Yes | The FILER's ticker or SEC CIK, e.g. "1067983" for Berkshire Hathaway. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description goes far beyond this by disclosing the 13F information table XML discovery, rollup of lots/share classes/put-call splits, the 'most recently filed' semantics, and the historical lag. It also explicitly notes that values are taken directly from the filing. This rich behavioral detail helps the agent understand exactly what happens under the hood.
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 moderately long but every block earns its place: purpose, technical complication (XML table), use cases, exclusions, args, and a full structuredContent example. It is well-organized with headers and front-loaded with the core purpose. No redundant or filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates fully by providing a complete structuredContent example with field names, types, and sample values. It also covers prerequisites (ticker or CIK), constraints (limit range, historical data), and the source URL. For a tool of this complexity, the description is fully self-contained and leaves no critical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'ticker' and 'limit' are fully described in the schema, including default and range for limit. The description largely repeats this information (e.g., 'ticker (string, required): the FILER's ticker or its SEC CIK') without adding new meaning beyond the schema. Baseline 3 is appropriate since the schema carries the semantic burden adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Institutional stock holdings for a fund manager, from its latest SEC Form 13F.' It clearly distinguishes this tool from siblings by explaining scope (latest 13F), what it returns (holdings with values, shares, lots), and explicit non-use cases (real-time, shorts, non-U.S. filers). This makes the tool's purpose unmistakable.
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 use' (fund holdings, smart money tracking, portfolio research) and 'When NOT to use' (real-time, shorts, non-U.S. filers) with reasoning (45-day filing lag, no short disclosure). However, it does not name any alternative sibling tools, stopping short of the full 'alternatives' criterion for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_filings_feedSEC Filings FeedARead-onlyIdempotentInspect
Recent SEC filings for a company, newest first, with 8-K item codes translated to plain English.
A general-purpose filings feed: any form type, or a specific set (8-K for material events, 10-K/10-Q for periodic reports, S-1 for new-issue prospectuses, SC 13D/13G for activist and passive stakes). 8-K filings include their item numbers (e.g. "5.02") decoded into a label ("Departure/appointment of directors or officers") rather than leaving you to look up the code.
When to use: monitoring a company's material-event stream, building a filings watchlist, or finding a specific filing type.
When NOT to use: you need the parsed FINANCIAL content of a filing (use edgar_financials) or insider trades (use edgar_insider_transactions).
Args:
ticker (string, required): a ticker such as "AAPL", or a bare CIK such as "320193".
forms (string[], optional): filter to specific form types, e.g. ["8-K"] or ["10-K","10-Q"]. Omit for all forms.
limit (integer, optional, default 20): maximum filings to return (1-100).
Returns structuredContent: { "cik": "0000320193", "entity": "Apple Inc.", "ticker": "AAPL", "count": 1, "filings": [{ "form": "8-K", "filedAt": "2026-08-01", "reportDate": "2026-07-31", "items": [{ "code": "2.02", "label": "Results of operations and financial condition" }], "documentUrl": "https://www.sec.gov/Archives/..." }], "source": "https://www.sec.gov/edgar" }
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | Filter to these form types, e.g. ["8-K"]. Omit for all forms. | |
| limit | No | Maximum filings to return, newest first. Default 20. | |
| ticker | Yes | Ticker symbol (e.g. "AAPL") or a bare SEC CIK (e.g. "320193"). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/destructive=false, and the description adds substantial behavioral detail: newest-first ordering, 8-K item code decoding to plain English, ability to filter by form types, and the structured response shape with a concrete example. 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?
Well-structured with a clear summary, usage guidance, structured arg list, and return example. The length is justified by the amount of behavioral and parameter context included; no redundant sentences.
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 includes a detailed return example showing the exact nested structure (cik, entity, filings array, items with code/label, documentUrl). Combined with sibling differentiation and parameter details, it provides all necessary context for an agent to select and invoke 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 coverage is 100%, but the description enriches parameter understanding by adding usage examples ('AAPL' or bare CIK '320193'), clarifying that forms can be a list like ['8-K'], and stating the default and range for limit. This goes beyond the schema 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?
Description opens with 'Recent SEC filings for a company, newest first, with 8-K item codes translated to plain English' – a specific verb+resource+scope. It explicitly distinguishes from siblings by listing form types and pointing to edgar_financials and edgar_insider_transactions as 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?
Contains explicit 'When to use' and 'When NOT to use' sections, naming alternative tools (edgar_financials for parsed financial content, edgar_insider_transactions for insider trades). This provides clear context for when this tool is appropriate versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_financialsSEC Company Financials (XBRL)ARead-onlyIdempotentInspect
Key financials for a U.S. public company, pulled from SEC XBRL company facts.
Returns revenue, net income, diluted EPS, total assets, total liabilities, shareholders' equity and cash, each with the most recent ANNUAL and QUARTERLY figure, the period covered, and the form it came from.
Handles two things that trip up naive XBRL queries: filers migrated from the "Revenues" tag to "RevenueFromContractWithCustomerExcludingAssessedTax" under ASC 606, so each concept tries several tags in order; and the SEC repeats facts across filings with differing period lengths, so observations are classified as annual or quarterly by their actual duration rather than by trusting the fiscal-period label.
When to use: fundamentals for valuation or screening, checking latest reported revenue or EPS, pulling balance-sheet lines.
When NOT to use: you need full statements line by line, segment detail, non-GAAP measures, or analyst estimates.
Args:
ticker (string, required): a ticker such as "AAPL", or a bare CIK such as "320193".
Returns structuredContent: { "cik": "0000320193", "entity": "Apple Inc.", "ticker": "AAPL", "concepts": { "revenue": { "label": "Revenue", "tag": "RevenueFromContractWithCustomerExcludingAssessedTax", "annual": { "end": "2025-09-27", "start": "2024-09-29", "value": 416000000000, "unit": "USD", "fiscalYear": 2025, "fiscalPeriod": "FY", "form": "10-K" }, "quarterly": { "end": "2026-06-27", "value": 94000000000, "unit": "USD", "form": "10-Q" } }, "netIncome": {}, "epsDiluted": {}, "assets": {} }, "source": "https://www.sec.gov/edgar" }
A concept the filer does not report comes back with tag null and both periods null, rather than a fabricated zero.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Ticker symbol (e.g. "AAPL") or a bare SEC CIK (e.g. "320193"). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and idempotent behavior. The description goes further, explaining tag-fallback logic for ASC 606, classification by actual duration rather than fiscal-period labels, and returning null instead of fabricated zeros. No contradiction 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 long but well-structured, starting with the core purpose, then return details, technical nuances, and usage guidance. The extra length is justified by the complexity of XBRL handling and a concrete return example, though it is not as concise as simpler tool descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description provides a detailed structuredContent example covering all concepts and period objects, plus behavior for missing concepts. Combined with strong annotations and a single-parameter schema, the agent has everything needed to invoke the tool and interpret 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?
The input schema already provides a full description of the ticker parameter with examples of both ticker and CIK formats, and the description merely restates this. With 100% schema coverage, the baseline of 3 applies; the description adds no new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns key financials from SEC XBRL company facts, listing specific metrics (revenue, net income, EPS, etc.). It distinguishes itself from sibling SEC tools by focusing on financial figures versus filings, holdings, or insider 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?
Explicit 'When to use' and 'When NOT to use' sections provide clear guidance for valuation/screening and exclusions like segment detail or analyst estimates. This gives the agent actionable direction for selecting this tool against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_full_text_searchSEC Full-Text Filing SearchARead-onlyIdempotentInspect
Full-text search across all SEC EDGAR filings since 2001 for a keyword or phrase.
Wraps EDGAR's own full-text search index, so it covers every filer and form type, not just a single company. Useful for finding who is disclosing a particular risk, technology, litigation, or event across the entire market.
When to use: cross-company research ("who is disclosing AI-related risk factors"), finding filings that mention a specific term, litigation or regulatory tracking.
When NOT to use: you already know the company (use edgar_filings_feed, which is company-scoped and cheaper), or you need results from before 2001 (EDGAR full-text search does not cover that far back).
Args:
query (string, required): search text. Wrap an exact phrase in double quotes, e.g. ""material weakness"".
forms (string[], optional): restrict to form types, e.g. ["10-K"].
dateFrom (string, optional): ISO start date (YYYY-MM-DD).
dateTo (string, optional): ISO end date (YYYY-MM-DD).
limit (integer, optional, default 10): maximum hits to return (1-50).
Returns structuredContent: { "query": "material weakness", "totalMatches": 10000, "totalIsApproximate": true, "count": 2, "hits": [ { "id": "0001193125-26-123456:doc.htm", "entity": "Example Corp.", "form": "10-K", "filedAt": "2026-03-01", "cik": "0000320193" } ], "source": "https://www.sec.gov/edgar" }
"totalMatches" is a lower bound and "totalIsApproximate" is true once EDGAR's own count exceeds its display cap (10,000) — narrow with forms/dateFrom/dateTo for a precise count.
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | Restrict to form types, e.g. ["10-K"]. | |
| limit | No | Max hits to return. Default 10. | |
| query | Yes | Search text. Quote an exact phrase, e.g. "material weakness". | |
| dateTo | No | ISO end date (YYYY-MM-DD). | |
| dateFrom | No | ISO start date (YYYY-MM-DD). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior, and the description adds substantial context: it wraps EDGAR's own index, covers filings since 2001, and explains that totalMatches is a lower bound with totalIsApproximate true once EDGAR's count exceeds 10,000. This goes well beyond the structured 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 effectively structured with a clear definition, usage sections, parameter list, and return example. Every sentence is informative; the included structuredContent example is useful and not redundant. It is detailed yet remains focused.
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 fully specifies the return shape with a concrete example, explains the approximate total behavior, and includes the source URL. It covers coverage limits, parameter usage, and result interpretation, making it self-sufficient for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds practical usage details such as quoting exact phrases, limiting to form types with examples, and specifying the 1–50 range for limit. While some repetition exists, the consolidated Args section and range clarification provide marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and scope: "Full-text search across all SEC EDGAR filings since 2001 for a keyword or phrase." It clearly distinguishes this tool from siblings by noting it covers every filer and form type, and explicitly contrasts with edgar_filings_feed.
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?
Dedicated 'When to use' and 'When NOT to use' sections provide explicit guidance. It names the alternative tool (edgar_filings_feed) and gives concrete scenarios like 'cross-company research' and 'litigation or regulatory tracking', plus a specific exclusion (pre-2001 results).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edgar_insider_transactionsSEC Insider Transactions (Form 4)ARead-onlyIdempotentInspect
Insider buying and selling for a U.S. public company, parsed from SEC Form 4 filings.
Form 4 is published as raw ownership XML, one document per filing, with the machine-readable file hidden behind an XSL-rendered URL. This resolves the ticker to a CIK, finds the most recent filings, fetches each XML document, and returns clean transactions: who traded, their role, the date, the SEC transaction code with its plain-English meaning, share count, price, computed dollar value, and shares held afterwards.
When to use: tracking insider sentiment, checking whether executives are buying or selling, auditing recent officer and director activity.
When NOT to use: you need institutional holdings (that is Form 13F), or derivative/option detail (only non-derivative transactions are returned), or non-U.S. issuers.
Args:
ticker (string, required): a ticker such as "AAPL", or a bare CIK such as "320193".
limit (integer, optional, default 5): how many recent filings to parse (1-20).
forms (string[], optional, default ["4"]): which ownership forms to include ("3", "4", "5").
Returns structuredContent: { "cik": "0000320193", "issuer": "Apple Inc.", "ticker": "AAPL", "count": 1, "filings": [{ "filedAt": "2026-08-13", "owner": "Newstead Jennifer", "ownerTitle": "SVP, GC and Secretary", "isOfficer": true, "isDirector": false, "transactions": [{ "date": "2026-08-11", "code": "S", "codeMeaning": "Open-market or private sale", "acquiredDisposed": "D", "shares": 1439, "pricePerShare": 307.75, "value": 442852.25, "sharesOwnedAfter": 40107 }], "documentUrl": "https://www.sec.gov/Archives/..." }], "source": "https://www.sec.gov/edgar" }
An individual filing that cannot be parsed is skipped rather than failing the call. If nothing at all is parseable the call errors and is not billed.
| Name | Required | Description | Default |
|---|---|---|---|
| forms | No | Which ownership forms to include. Defaults to ["4"]. | |
| limit | No | How many recent ownership filings to parse (1-20). Default 5. | |
| ticker | Yes | Ticker symbol (e.g. "AAPL") or a bare SEC CIK (e.g. "320193"). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behaviors beyond the read-only/idempotent annotations: individual unparseable filings are skipped, total parse failure errors and is not billed, and the underlying XSL-rendered URL quirk is explained. This gives the agent confidence in edge-case handling.
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 and no filler. The JSON example is lengthy but necessary given there is no output schema, and every sentence serves a 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?
Despite lacking an output schema, the description includes a complete JSON response example, covers error behavior, exclusions, and the data source. It thoroughly equips 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?
The input schema already provides full descriptions for all three parameters (ticker, limit, forms) with default values and constraints. The description's Args section essentially repeats this information without adding new semantic nuance.
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 parses SEC Form 4 filings to return insider transactions for a U.S. public company. It explicitly differentiates from sibling tools like edgar_13f_holdings by noting that institutional holdings are NOT the intended use case.
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 dedicated 'When to use' and 'When NOT to use' sections, naming Form 13F as the alternative for institutional holdings. This explicitly guides the agent on when to select this tool versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_energyUS Energy Markets (Crude & Natural Gas)ARead-onlyIdempotentInspect
Latest U.S. energy market data from the Energy Information Administration: WTI crude price, crude oil inventories, and natural gas storage.
Combines three EIA series that usually require separate lookups: the WTI Cushing spot price, weekly U.S. crude oil ending stocks (with week-over-week percent change), and weekly natural gas underground storage (with week-over-week percent change).
When to use: energy-sector context, inflation pass-through analysis (energy prices feed CPI/PCE), trading around the weekly EIA inventory releases.
When NOT to use: you need regional/PADD-level breakdowns, refined product prices (gasoline, diesel), or non-U.S. energy data.
Args: none.
Returns structuredContent: { "asOf": "2026-08-07", "wtiSpotUsdPerBbl": 84.77, "crudeStocksThousandBbl": 420000, "crudeStocksWowPercent": -1.2, "naturalGasStorageBcf": 3100, "naturalGasStorageWowPercent": 0.8, "source": "https://www.eia.gov/petroleum/" }
| 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, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds valuable behavioral context by explaining it combines three EIA series into one lookup and includes week-over-week percent changes, plus the data source. 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 with clear sections for overview, usage, exclusions, and return format. Every sentence adds value, and the example output is front-loaded enough for quick understanding without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description provides a complete structuredContent example, showing the exact fields and units. It covers data source, frequency, and scope, making the tool's behavior fully understandable without needing additional lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the description explicitly states 'Args: none,' which is appropriate. With no schema to explain, the description correctly notes the absence of arguments, making parameter semantics self-evident.
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 that the tool retrieves U.S. energy market data (WTI crude price, crude oil inventories, natural gas storage) from the EIA. It explicitly lists the three combined series, distinguishing it from siblings like macro_gdp and macro_jobs by naming specific energy metrics.
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 an explicit 'When to use' section naming energy-sector context, inflation pass-through analysis, and trading around EIA releases. It also includes a 'When NOT to use' section excluding regional breakdowns, refined products, and non-U.S. data, giving clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_gdpUS Real GDP GrowthARead-onlyIdempotentInspect
Latest U.S. real GDP growth rate, from BEA's National Income and Product Accounts.
Returns the annualized quarter-over-quarter growth rate for the most recent quarter (the headline "how is the economy growing" number), plus the prior two quarters for trend context. BEA publishes this table as a percent-change series already, so no growth-rate math is needed here.
When to use: reading the pace of economic growth, recession-risk context (two consecutive negative quarters), or macro backdrop for a market decision.
When NOT to use: you need GDP in dollar levels, expenditure-component detail (consumption, investment, government, net exports), or real-time/nowcast estimates (this is BEA's official, lagged release).
Args: none.
Returns structuredContent: { "asOf": "2026Q2", "growthAnnualizedPercent": 1.5, "priorQuarters": [ { "quarter": "2026Q1", "growthAnnualizedPercent": 2.1 }, { "quarter": "2025Q4", "growthAnnualizedPercent": 0.5 } ], "source": "https://www.bea.gov/data/gdp/gross-domestic-product" }
| 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, openWorldHint, idempotentHint, and non-destructive. The description adds valuable context: it is BEA's official lagged percent-change series, requires no math, and includes a source URL. 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?
Well-structured into paragraphs for purpose, usage, exclusions, and return value. Each sentence earns its place, and the example return object is compact yet informative. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description provides a full structuredContent example with all field names and sample values, plus source attribution. For a zero-parameter read tool, this is complete and self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the description confirms 'Args: none.' With no parameters to document, the baseline of 4 applies, and the description appropriately notes the absence of arguments.
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 returns the latest U.S. real GDP growth rate as annualized quarter-over-quarter, plus prior quarters for trend context. It distinguishes itself from sibling macro tools by explicitly excluding dollar levels and expenditure-component 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?
Provides explicit 'When to use' and 'When NOT to use' sections with concrete use cases (growth pace, recession-risk context) and exclusions (dollar levels, components, nowcasts). This gives the agent clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_housingUS Housing Starts & PermitsARead-onlyIdempotentInspect
Latest U.S. new residential construction: housing starts and building permits, seasonally-adjusted annualized rate.
Housing starts (ground broken) and permits (approved but not necessarily started, a leading indicator) are the two headline figures from the Census Bureau's New Residential Construction survey, reported at a seasonally-adjusted annualized rate in thousands of units.
When to use: gauging housing-market momentum, a leading indicator for construction activity (permits lead starts), macro context for rate-sensitive sectors.
When NOT to use: you need single-family vs multi-family breakdown, regional detail, or completions data.
Args: none.
Returns structuredContent: { "asOf": "2026-06", "startsThousands": 1427, "permitsThousands": 1380, "startsMomPercent": 19.0, "permitsMomPercent": 2.1, "source": "https://www.census.gov/construction/nrc/index.html" }
Figures are in thousands of units at a seasonally-adjusted annual rate (SAAR), the standard convention for this release.
| 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, openWorldHint, idempotentHint, and destructiveHint. The description adds valuable context beyond annotations: data source (Census Bureau), units (thousands of units at SAAR), and the structuredContent return shape with field names. It doesn't contradict annotations, though it omits deeper caveats like data revisions or seasonal adjustment nuances.
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 clearly separated sections: purpose, when to use, when not to use, args, return format, and units. Every sentence contributes meaningful information without redundancy or fluff. It is appropriately sized 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 has no parameters and no output schema, the description fully documents the return payload fields (asOf, startsThousands, permitsThousands, startsMomPercent, permitsMomPercent, source), units, source URL, and interpretive context. It leaves no critical gaps for an AI agent to invoke and use the result 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 tool has zero parameters, and the description explicitly states 'Args: none.' The input schema confirms an empty object, so there is no additional parameter information needed. The baseline for zero parameters is 4, and the description fully satisfies 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 identifies the tool's purpose: providing the latest U.S. housing starts and building permits at a seasonally-adjusted annualized rate. It distinguishes itself from sibling macro tools by focusing specifically on residential construction and even clarifies the leading-indicator relationship between permits and starts.
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 explicit 'When to use' and 'When NOT to use' sections with concrete examples (gauging housing-market momentum, leading indicator for construction activity) and exclusions (single-family vs multi-family, regional detail, completions). This provides clear decision guidance for selecting 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.
macro_jobsUS Jobs ReportARead-onlyIdempotentInspect
Latest U.S. labour-market data from the Bureau of Labor Statistics, with the headline changes computed.
Returns the unemployment rate, labour force participation rate, total nonfarm payrolls, the month-over-month change in payrolls (the "jobs added" number that leads the Employment Situation report), average hourly earnings, and year-over-year wage growth. All series are seasonally adjusted.
BLS publishes levels; the month-over-month and year-over-year changes are computed here.
When to use: reading the state of the labour market, wage-inflation context, or Fed-policy reasoning.
When NOT to use: you need state or metro level detail, industry breakdowns, or JOLTS openings and quits.
Args: none.
Returns structuredContent: { "asOf": "2026-07", "periodName": "July 2026", "unemploymentRate": 4.1, "participationRate": 62.4, "nonfarmPayrolls": 158858, "payrollsChange": 73, "avgHourlyEarnings": 37.62, "earningsYoyPercent": 3.8, "source": "https://www.bls.gov/ces/" }
Payrolls are in thousands of jobs, so payrollsChange 73 means +73,000 jobs on the month.
| 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 read-only, idempotent, non-destructive. The description adds meaningful behavioral context: seasonally adjusted series, computed month-over-month and year-over-year changes from BLS levels, and units explanation for payrolls. The example output clarifies the return shape. No contradiction 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?
Front-loaded with a one-line purpose, followed by return details, usage guidance, and an example. Every section serves a clear role; no filler or redundancy. The example JSON and units note add practical value without 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?
Despite no output schema, the description fully documents return values via a concrete JSON example and explains payroll units. It covers usage context, exclusions, and data source, making it self-sufficient for a no-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, and baseline is 4. The description explicitly states 'Args: none,' which is sufficient. No parameter explanations 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 clearly states it provides latest U.S. labour-market data from BLS with computed headline changes, and enumerates the specific metrics returned. It distinguishes itself from siblings via the when-NOT-to-use section explicitly naming state/metro detail, industry breakdowns, and JOLTS.
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 'When to use' and 'When NOT to use' sections provide clear context for labour-market assessment against alternatives. It names exclusions (state/metro, industry, JOLTS) and implies alternatives like macro_gdp or bls_cpi for other macro indicators.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_pceUS PCE Inflation (Fed's Preferred Gauge)ARead-onlyIdempotentInspect
The Fed's preferred inflation gauge: Personal Consumption Expenditures (PCE) price index, headline and core.
The Federal Reserve targets PCE inflation, not CPI, when setting policy. Returns the headline index and "PCE excluding food and energy" (the actual core measure the Fed watches), each with year-over-year and month-over-month percent change computed from BEA's published index levels.
When to use: Fed-policy reasoning, comparing the Fed's actual inflation target against CPI, macro research that specifically needs PCE rather than CPI.
When NOT to use: you want CPI (use bls_cpi, which is timelier and what headlines usually report) or category-level PCE detail.
Args: none.
Returns structuredContent: { "asOf": "2026-06", "headline": { "index": 129.5, "yoyPercent": 2.6, "momPercent": 0.3 }, "core": { "index": 131.2, "yoyPercent": 2.8, "momPercent": 0.2 }, "source": "https://www.bea.gov/data/personal-consumption-expenditures-price-index" }
| 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, idempotentHint, and destructiveHint false. The description adds meaningful context: defines core as 'PCE excluding food and energy', explains the Fed's preference for PCE over CPI, and shows the exact return structure in the JSON example. 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-organized with a clear lead sentence, contextual explanation, direction on usage, and a compact JSON example. Every sentence adds value, and the structure front-loads the essential definition.
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 parameterless tool with no output schema, the description is fully sufficient. It covers what is returned (headline and core with indices and percent changes), the source URL, and the exact structuredContent format. Sibling differentiation is also addressed. No gaps remain.
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?
With zero parameters, the baseline is 4. The description explicitly states 'Args: none', confirming no inputs are needed. There is no additional parameter information to provide.
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 identifies the tool as returning PCE price index data (headline and core) with YoY and MoM changes, and explicitly distinguishes it from CPI via the 'When NOT to use' section pointing to bls_cpi. The resource and scope are specific and 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?
Provides explicit 'When to use' and 'When NOT to use' guidance, naming bls_cpi as the alternative for CPI. This gives clear decision criteria for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_release_calendarUS Economic Release CalendarARead-onlyIdempotentInspect
Upcoming U.S. economic data releases, with dates and times, from the official BLS news-release schedule.
Answers "what macro data drops next, and when" without scraping a web page. Covers the BLS release set that moves markets: CPI, PPI, the Employment Situation (nonfarm payrolls and unemployment), JOLTS, Employment Cost Index, real earnings and productivity.
When to use: planning around data risk, checking whether a print lands before a decision, or building a watchlist of upcoming events.
When NOT to use: you need the released VALUES (use bls_cpi for CPI), Fed/FOMC meeting dates, or non-U.S. statistical calendars.
Args:
limit (integer, optional, default 10): maximum releases to return (1-100), soonest first.
filter (string, optional): case-insensitive substring match on the release title, e.g. "CPI".
Returns structuredContent: { "asOf": "2026-08-14", "count": 1, "releases": [ { "date": "2026-09-10", "datetime": "2026-09-10T12:30:00Z", "title": "Consumer Price Index", "source": "BLS" } ], "source": "https://www.bls.gov/schedule/" }
Only releases on or after today are returned, soonest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of upcoming releases to return, soonest first. Default 10. | |
| filter | No | Optional case-insensitive substring filter on the title, e.g. "CPI". |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds behavioral context beyond annotations: it sources from BLS schedule, returns only releases on/after today, sorts sooner-first, and provides an output shape example. Slight gap: no mention of rate limits or potential staleness, but the additional behavior is clear.
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 a clear lead sentence, explicit use cases, parameter details, and a structuredContent example. Each section earns its place; the content is informative 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?
Even without an output schema, the description provides a complete structuredContent example, covers all parameter behavior, explains the when/why, and lists explicit non-use cases. Combined with rich annotations, the tool is fully specified for an agent to select and invoke 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 coverage is 100% and both parameters have descriptions. The description adds extra semantics by explaining the default limit (10), the case-insensitive substring behavior for filter, and giving concrete examples like 'CPI'. This exceeds the baseline 3 without being verbose.
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 ('Upcoming... releases') and resource ('BLS news-release schedule'), clearly stating it provides dates and times for future economic data. It distinguishes from siblings by explicitly noting it does not provide release values (like bls_cpi) or Fed/FOMC dates.
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 has explicit 'When to use' and 'When NOT to use' sections, naming alternatives (bls_cpi for CPI) and exclusions (Fed/FOMC, non-U.S. calendars). This fully guides selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
macro_retail_salesUS Retail SalesARead-onlyIdempotentInspect
Latest U.S. retail sales, seasonally adjusted, excluding motor vehicles and parts — the "ex-autos" figure most commonly cited as a consumer-spending signal.
Returns the seasonally-adjusted monthly sales total in millions of dollars, with month-over-month and year-over-year percent change computed from the Census Bureau's Advance Monthly Retail Trade Survey.
When to use: gauging consumer spending strength, a component of GDP nowcasting, retail-sector demand signal.
When NOT to use: you need category-level detail (e.g. just electronics, or just restaurants), the auto-inclusive headline total, or real-time/weekly data (this is a monthly government release).
Args: none.
Returns structuredContent: { "asOf": "2026-06", "salesMillions": 766192, "momPercent": 0.9, "yoyPercent": 3.4, "source": "https://www.census.gov/retail/index.html" }
| 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 read-only, idempotent, non-destructive behavior, and the description adds contextual transparency by specifying the data is seasonally adjusted, from the Census Bureau's Advance Monthly Retail Trade Survey, and a monthly government release. It does not contradict annotations and provides useful processing details (MoM and YoY calculations).
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-organized and concise: first sentence defines the metric, second explains the return, then usage guidance, then args, and a sample output. Every sentence serves a purpose, no wasted words, and it is front-loaded with the most critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-parameter tool, the description is fully complete. It explains what is returned (sales total, MoM, YoY, source) and provides an example of the structured content, even without an output schema. It also covers usage context and limitations, making it entirely sufficient for an agent to invoke 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 tool has zero parameters, and the description explicitly states 'Args: none.' This is unambiguous and clearly communicates that no input is required. The baseline for 0 params is 4, but the explicit statement earns a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'Latest U.S. retail sales, seasonally adjusted, excluding motor vehicles and parts' with a specific scope (ex-autos) and intent (consumer-spending signal). This distinguishes it from other macro tools and establishes the exact resource and 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?
Includes explicit 'When to use' and 'When NOT to use' sections, listing appropriate use cases (consumer spending, GDP nowcasting, retail demand) and exclusions (category-level detail, auto-inclusive headline, real-time/weekly data). This provides clear guidance for tool selection versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onchain_cross_chain_balancesCross-chain Token BalanceARead-onlyIdempotentInspect
The same token's balance for one address across multiple EVM chains, in a single call.
USDC (and similar assets) has a DIFFERENT contract address on every chain; checking a wallet's total position means resolving each chain's canonical address and querying it separately. This does that and sums the total, so a multi-chain treasury view does not require N separate calls.
Supported chains: base, ethereum, optimism, arbitrum, polygon. Supported tokens: USDC (more may be added over time).
When to use: totaling a stablecoin position spread across chains, treasury reporting for a multi-chain operation, checking where a wallet's funds actually sit.
When NOT to use: you only care about one chain (use onchain_token_balances, which is cheaper), or a token not in the supported set.
Args:
address (string, required): the wallet address to check.
token (string, optional, default "USDC"): which token to check across chains.
chains (string[], optional): which chains to include. Defaults to all five supported chains.
Returns structuredContent: { "address": "0x...", "token": { "symbol": "USDC", "decimals": 6 }, "totalBalance": "1234.56", "chains": [ { "chain": "base", "chainId": 8453, "raw": "1000000000", "balance": "1000", "failed": false }, { "chain": "ethereum", "chainId": 1, "raw": "234560000", "balance": "234.56", "failed": false } ] }
A chain that could not be read reports failed: true with null balances rather than a misleading 0; if every chain fails the call errors and is not billed.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Which token to check. Defaults to "USDC". | USDC |
| chains | No | Which chains to include. Defaults to all five supported chains. | |
| address | Yes | Wallet address to check (0x + 40 hex). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important failure semantics: 'A chain that could not be read reports failed: true with null balances rather than a misleading 0; if every chain fails the call errors and is not billed.' It also explains the underlying complexity of different contract addresses and the summation behavior, giving the agent a clear mental model of execution.
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: overview, supported chains/tokens, use/non-use cases, arguments, and an explicit return example. Every sentence contributes functional information, and the return example is concise and illustrative. It is appropriately sized for a tool with this 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?
Despite lacking an output schema, the description fully compensates by showing a concrete return structure with example data, explaining the meaning of 'failed' chains, and specifying defaults. It also addresses billing behavior, making the tool's side effects and edge cases clear. This is complete for an agent to invoke 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 input schema already covers all parameters with 100% description coverage, so the baseline is 3. The description adds contextual meaning by explaining why the token parameter matters (different contract addresses per chain) and that chains defaults to all five supported chains, which aids selection. However, the per-parameter details in the description closely mirror the schema, so it doesn't go beyond 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 opens with a specific and complete statement of purpose: 'The same token's balance for one address across multiple EVM chains, in a single call.' This clearly identifies the verb (check balance), resource (token across chains), and scope (multi-chain), and distinguishes it from the sibling onchain_token_balances by explaining that it aggregates multiple chains and sums balances.
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 an explicit 'When to use' and 'When NOT to use' section, naming the alternative tool (onchain_token_balances) and clarifying the trade-off (cheaper for single-chain queries). It also lists supported chains and tokens, giving concrete usage criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onchain_gasMulti-chain Gas PriceARead-onlyIdempotentInspect
Current gas price across multiple EVM chains in a single call.
Reads eth_gasPrice on every requested chain in parallel and returns gwei, so you do not have to query each chain's RPC separately and convert units yourself.
Supported chains: base, ethereum, optimism, arbitrum, polygon.
When to use: choosing the cheapest chain to transact on right now, cost estimation before submitting a transaction, monitoring for a low-gas window.
When NOT to use: you need an EIP-1559 fee breakdown (base fee vs priority fee) rather than a single legacy gas price, or historical gas data.
Args:
chains (string[], optional): which chains to check. Defaults to all five supported chains.
Returns structuredContent: { "chains": [ { "chain": "base", "chainId": 8453, "gasPriceGwei": 0.006 }, { "chain": "ethereum", "chainId": 1, "gasPriceGwei": 0.0986 }, { "chain": "polygon", "chainId": 137, "gasPriceGwei": 278.97 } ], "source": "Live RPC eth_gasPrice, each chain's public network" }
A chain whose RPC could not be reached returns gasPriceGwei null rather than a stale or fabricated value; if every requested chain fails the call errors and is not billed.
| Name | Required | Description | Default |
|---|---|---|---|
| chains | No | Which chains to check. Defaults to all five supported chains. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent), the description adds critical behavioral details: parallel RPC reads, unit conversion to gwei, null handling for unreachable chains, and the policy that the call is not billed if all chains fail. This substantially enriches the agent's understanding.
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-organized with clear sections (supported chains, when to use, args, returns). It is appropriately detailed—every sentence adds operational value, from the parallel RPC behavior to the failure semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains the return format via an example, including a nested 'chains' array and 'source' field. It also covers error behavior and billing, making the tool's behavior clear for an agent.
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 already fully documents the 'chains' parameter (enum + description), so baseline is 3. The description adds the default behavior ('Defaults to all five supported chains') and clarifies the aggregated nature of the call, providing extra 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 returns current gas prices across multiple EVM chains in a single call, with a specific verb ('Reads eth_gasPrice') and resource ('multiple EVM chains'). It distinguishes itself from sibling tools by emphasizing the multi-chain aggregation and unit conversion.
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 'When to use' and 'When NOT to use' sections give concrete use cases (cheapest chain selection, cost estimation, low-gas monitoring) and exclusions (EIP-1559 breakdown, historical data). This provides clear guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onchain_oracle_priceChainlink Oracle PriceARead-onlyIdempotentInspect
Read any Chainlink price feed directly on-chain — a named pair or a raw feed address.
Calls latestRoundData on the feed contract itself, so there is no price-API vendor, no rate limit, and no key. Includes the feed's last-updated timestamp and its age in seconds, so you can judge staleness yourself rather than trusting an unlabeled number.
Known named pairs on Base: ETH/USD, BTC/USD, USDC/USD. Any other feed address on any supported chain also works.
When to use: getting a specific asset's price without depending on a centralized price API, verifying a feed is fresh before using it, cross-checking a price from another source.
When NOT to use: you need a token that has no Chainlink feed (use onchain_portfolio's covered set, or a DEX quote instead), or historical/point-in-time prices.
Args:
pair (string, required): a named pair (e.g. "ETH/USD") or a raw feed contract address (0x...).
chain (string, optional, default "base"): base | ethereum | optimism | arbitrum | polygon.
Returns structuredContent: { "chain": "base", "feed": "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70", "pair": "ETH/USD", "price": 1877.86, "decimals": 8, "updatedAt": "2026-08-14T12:00:00.000Z", "ageSeconds": 120, "source": "Chainlink on-chain price feed" }
| Name | Required | Description | Default |
|---|---|---|---|
| pair | Yes | A named pair (e.g. "ETH/USD") or a raw Chainlink feed contract address. | |
| chain | No | Which chain the feed lives on. Defaults to base. | base |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description goes further by explaining the tool calls latestRoundData on the feed contract itself, which eliminates API vendor/rate limit/key concerns, and it includes staleness metrics (updatedAt, ageSeconds) so the agent can judge data freshness. 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 long but every section earns its place: intro, mechanism, named pairs, usage guidance, parameters, return structure. It is front-loaded with purpose and structured into scannable paragraphs. There is no filler or redundant restating of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description provides a detailed return example with field names and types, including staleness measures. It also covers the supported chains and the distinction between named pairs and raw addresses. Limitations (no historical prices) are stated. This is complete 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?
The input schema descriptions cover both parameters (pair and chain) at 100% coverage, so the baseline is 3. The description adds examples ('ETH/USD', 0x...) and notes that any feed address on supported chains works, but the schema already conveys the core semantics. No additional parameter behavior is introduced beyond what the schema fields express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource combination: 'Read any Chainlink price feed directly on-chain'. It clearly differentiates itself from sibling tools like onchain_portfolio and onchain_gas by targeting Chainlink oracle prices specifically, and gives the exact mechanism (latestRoundData on the feed contract).
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 has explicit 'When to use' and 'When NOT to use' sections. It names alternatives (onchain_portfolio or DEX quote when no Chainlink feed exists) and explicitly excludes historical/point-in-time prices. This is exactly the kind of clear guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
onchain_portfolioOn-chain Portfolio (USD-valued)ARead-onlyIdempotentInspect
USD-valued portfolio for a wallet on Base, priced from Chainlink on-chain oracles.
Reads the wallet's native ETH plus major ERC-20 balances, reads each asset's Chainlink USD aggregator directly on-chain, and returns holdings with per-asset prices and dollar values, sorted largest first, stamped with the block height.
Prices come from Chainlink contracts rather than a price API, so there is no vendor key, no rate limit, and no third-party terms attached to the result.
Covered assets: ETH (native), WETH, USDC, cbBTC. Zero-balance assets are listed in "emptyAssets" rather than cluttering holdings.
When to use: valuing a wallet, treasury reporting, checking what an address actually holds in dollar terms.
When NOT to use: you need an exhaustive scan of every token a wallet has ever received (this checks a curated major-asset set, not an indexer), LP or staked positions, NFTs, or chains other than Base.
Args:
address (string, required): the wallet address to value.
Returns structuredContent: { "address": "0x...", "chain": "base", "chainId": 8453, "blockNumber": 49976942, "holdings": [ { "symbol": "ETH", "kind": "native", "address": null, "raw": "1500000000000000000", "balance": "1.5", "priceUsd": 3120.44, "valueUsd": 4680.66 } ], "totalValueUsd": 4680.66, "emptyAssets": ["cbBTC"], "priceSource": "Chainlink on-chain price feeds (Base)" }
If every balance read fails the call errors and is not billed; a genuinely empty wallet returns an empty holdings list with totalValueUsd 0.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Wallet address to value (0x + 40 hex), on Base. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses the on-chain price source (Chainlink, no API key/rate limits), asset coverage, sorting order, block-height stamping, zero-balance handling via emptyAssets, and the billing guarantee on total failure. This is rich added context with 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 structured logically with clear sections (overview, asset coverage, price source, when-to, args, output example) and front-loaded with the core purpose. While longer than minimal, every section contributes meaningful detail; the output example is especially valuable since there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates fully by providing a structuredContent example, explaining the meaning of emptyAssets, specifying error behavior when all reads fail, and documenting the exact asset list and price source. It gives an agent everything needed to correctly invoke and interpret the 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 input schema already fully describes the single address parameter, including format ('0x + 40 hex') and chain ('on Base'). The description's Args section simply restates 'the wallet address to value' with no additional semantic detail, so it adds no 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 opens with a clear statement of purpose: 'USD-valued portfolio for a wallet on Base, priced from Chainlink on-chain oracles.' It specifies the exact resources (wallet, ETH, major ERC-20 balances, Chainlink USD aggregators) and distinguishes itself from sibling tools by limiting scope to curated assets and the Base chain.
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 explicit 'When to use' and 'When NOT to use' sections, listing use cases like wallet valuation and treasury reporting, and excluding exhaustive token scans, LP positions, NFTs, and other chains. It provides clear criteria for selecting 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.
onchain_token_balancesOn-chain Token Balances (bulk)ARead-onlyIdempotentInspect
Read an ERC-20 token balance for up to 500 wallet addresses in a SINGLE call.
Doing this yourself means issuing hundreds of eth_call requests, batching them, handling per-provider rate limits and partial failures, then scaling raw integers by token decimals. This does all of that and returns clean, ready-to-use numbers plus the block height the snapshot was taken at.
Supported chains: base (default), ethereum, optimism, arbitrum, polygon. Defaults to canonical USDC on the selected chain when no token is given.
When to use: portfolio or treasury roll-ups, airdrop and eligibility checks, holder analysis, reconciling a list of wallets.
When NOT to use: you need native ETH balances (this reads ERC-20 contracts) or balances at a historical block.
Args:
addresses (string[], required): 1-500 EVM addresses. Duplicates removed, order preserved.
chain (string, optional, default "base"): base | ethereum | optimism | arbitrum | polygon.
token (string, optional): ERC-20 contract address. Defaults to USDC on the chosen chain.
Returns structuredContent: { "chain": "base", "chainId": 8453, "blockNumber": 34567890, "token": { "address": "0x8335...", "symbol": "USDC", "decimals": 6 }, "requested": 3, "queried": 3, "failed": 0, "totalBalance": "1234.56", "holders": [ { "address": "0x...", "raw": "1234560000", "balance": "1234.56" } ] }
A read that fails at the provider returns null for that address rather than a misleading 0, and "failed" counts them. If every read fails the call errors and is not billed.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Which EVM chain to query. Defaults to base. | base |
| token | No | ERC-20 contract address. Defaults to canonical USDC on the selected chain. | |
| addresses | Yes | 1-500 EVM wallet addresses (0x + 40 hex). Duplicates are removed. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true and idempotentHint=true annotations, the description discloses concrete behavioral details: it handles rate limits and partial failures, returns null for failed reads rather than misleading zeros, counts failures, errors if every read fails, and reports the block height of the snapshot. This is exactly the kind of context agents need to interpret results correctly.
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 first sentence is a front-loaded, high-signal summary. The rest is organized into clear sections (motivation, supported chains, when to use/not use, args, return example) with no redundant padding. Every sentence earns its place, and the length is justified by 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 no output schema, the description carries full responsibility for explaining return values; it provides a complete JSON example with all fields, including edge-case behavior (null for individual failures, 'failed' count, error condition for total failure). It also covers defaults, supported chains, and limits, making it fully sufficient for an agent to invoke and interpret this 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?
The input schema already covers 100% of parameters with descriptions, so the bar is at 3. The description adds extra semantic nuance: 'Duplicates removed, order preserved' for addresses, the exact default token behavior (canonical USDC), and a structured output example that shows how token decimals are scaled to produce clean balances. This extra context earns 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 opens with 'Read an ERC-20 token balance for up to 500 wallet addresses in a SINGLE call', which clearly states the verb (read), the resource (ERC-20 token balance), and a key distinguishing scope (bulk, up to 500 addresses). It also distinguishes from sibling tools like onchain_portfolio or onchain_cross_chain_balances by focusing on ERC-20 balances for a list of holders on a single chain.
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 use' (portfolio roll-ups, airdrop checks, holder analysis) and 'When NOT to use' (native ETH balances, historical blocks), giving the agent clear selection criteria. It also contrasts with manual eth_call batching, implying this is the efficient bulk alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
structured_json_repairStructured JSON RepairARead-onlyIdempotentInspect
Repair messy or invalid JSON (the kind LLMs and tools often emit) into clean, valid JSON, and optionally validate/coerce it against a JSON Schema. Pure deterministic compute — no network or model calls.
What it fixes: trailing commas, single-quoted strings, unquoted keys, Python literals (None/True/False), NaN/Infinity, Markdown code-fence wrappers, and truncated/garbled tails.
When to use: you received text that should be JSON but JSON.parse fails, or you have JSON that must conform to a specific schema and want types coerced (e.g. "36" -> 36, "true" -> true).
When NOT to use: the input is already known-valid JSON and no schema check is needed.
Args:
input (string, required): the raw/malformed JSON text.
schema (object, optional): a JSON Schema (draft 2020-12) to validate and coerce against.
coerce (boolean, optional, default true): coerce primitive types to satisfy the schema before validating.
Returns structuredContent: { "ok": boolean, // true if valid JSON (and schema-valid when a schema was given) "data": any, // the repaired/validated JSON value; null if unfixable "changed": boolean, // true if any repair or coercion modified the input "errors": string[], // actionable messages when ok is false "repairs": string[] // description of each fix applied }
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Raw or malformed JSON text to repair. Examples: "{name: 'Ada', age: '36',}", a ```json fenced block, or a truncated '{"items":[1,2,3'. | |
| coerce | No | When true (default), coerce primitives to satisfy the schema before validating (e.g. "36" -> 36). | |
| schema | No | Optional JSON Schema (draft 2020-12) object to validate and coerce the repaired JSON against. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | True if the result is valid JSON (and schema-valid when a schema was provided). |
| data | No | The repaired/validated JSON value (object, array, or primitive). null when repair failed. |
| errors | Yes | Actionable error messages when ok is false (empty when ok is true). |
| changed | Yes | True if any repair or coercion changed the input. |
| repairs | Yes | Human-readable description of each repair or coercion applied. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral context: pure deterministic compute with no network/model calls, the specific repairs performed, and the complete return structure including errors and repairs. This goes well beyond the annotations and is fully consistent.
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: main purpose, list of fixes, usage conditions, arguments, and return schema. Every section adds necessary information with no filler, and the front-loaded purpose statement is immediately actionable.
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 three parameters, full schema coverage, and strong annotations, the description is remarkably complete. It explains the return value in detail, the boundaries of what it can fix, and the deterministic nature of the operation. There are no apparent gaps for an agent to select and invoke this 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%, so the baseline is 3. The description reinforces the parameters with concrete coercion examples ('36' -> 36, 'true' -> true) and clarifies the schema draft version. While it largely restates the schema, the examples add practical meaning for the coerce parameter, earning a slight bonus.
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 ('repair') and resource ('messy or invalid JSON') and clearly states the optional schema validation/coercion. It distinguishes itself from sibling tools like tabular_to_json by focusing on repair rather than conversion, and explicitly enumerates the types of malformations it addresses.
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 use' and 'When NOT to use' sections with concrete conditions (JSON.parse fails, schema coercion needed, already-valid JSON not needing checks). This exceeds the 'clear context' bar and includes exclusions, fully guiding an agent on when to select 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.
tabular_to_jsonTabular to JSONARead-onlyIdempotentInspect
Convert messy tabular text into clean, typed JSON rows. Auto-detects CSV, TSV, or a Markdown table and returns one JSON object per row plus an inferred column/type summary. Pure deterministic compute — no network or model calls.
What it handles: delimiter sniffing (comma/semicolon/tab/pipe), quoted fields with embedded commas and newlines, BOM, ragged rows (padded/truncated), Markdown separator rows and escaped pipes, header auto-detection, and per-column type inference (integer/number/boolean/null/string).
When to use: you have CSV/TSV/Markdown-table text (often emitted by tools or LLMs) and want structured, typed rows — optionally validated/coerced against a JSON Schema.
When NOT to use: the data is already clean JSON, or it is HTML/xlsx/binary (not supported).
Args:
input (string, required): raw tabular text.
format ("auto"|"csv"|"tsv"|"markdown", default "auto"): force a format or auto-detect.
hasHeader ("auto"|"true"|"false", default "auto"): whether the first row is a header.
inferTypes (boolean, default true): coerce cells to number/integer/boolean/null; else keep strings.
schema (object, optional): JSON Schema (draft 2020-12) to validate/coerce each row object against.
Returns structuredContent: { "ok": boolean, // false if the input cannot be parsed as a table "format": "csv"|"tsv"|"markdown", "columns": [{ "name": string, "type": string }], "rows": [{ ... }], // one object per row, keyed by column name "rowCount": number, "changed": boolean, // true if any normalization/coercion happened "errors": string[], // actionable messages when ok is false "repairs": string[] // description of each normalization applied }
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Raw tabular text: a CSV/TSV block or a Markdown table. | |
| format | No | Force a parser or auto-detect (default 'auto'). | auto |
| schema | No | Optional JSON Schema (draft 2020-12) to validate/coerce each row object against. | |
| hasHeader | No | Whether the first row is a header. 'auto' uses a heuristic. | auto |
| inferTypes | No | When true (default), infer cell types (number/integer/boolean/null); else keep strings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | True if the input parsed as a table (and every row is schema-valid when a schema was given). |
| rows | Yes | One JSON object per data row, keyed by column name. |
| errors | Yes | Actionable error messages when ok is false (empty when ok is true). |
| format | Yes | The detected/used format. |
| changed | Yes | True if any normalization or coercion changed the input. |
| columns | Yes | Inferred column names and types. |
| repairs | Yes | Human-readable description of each normalization applied. |
| rowCount | Yes | Number of data rows returned. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral context: 'Pure deterministic compute — no network or model calls' and details about handling BOM, ragged rows, quoted fields, and type inference. It also describes the return envelope (ok, format, columns, rows, rowCount, changed, errors, repairs) 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?
The description is well-structured with sections: summary, What it handles, When to use, When NOT to use, Args, and Returns. It is appropriately detailed for a tool with 5 parameters and a structured output, with the main purpose stated in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description is thorough. It covers input and output formats, edge cases (quoted commas, BOM, ragged rows), parameter behaviors, and the exact structure of the returned object. There is no gap that would leave an agent uncertain about invocation or 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%, so baseline is 3. The description lists each argument but largely restates the schema descriptions (e.g., format default, inferTypes behavior). It adds no significant semantic nuance beyond what the schema already provides, though it does embed the Args list in a readable format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Convert messy tabular text into clean, typed JSON rows,' providing a specific verb, resource, and output. It clearly distinguishes itself from siblings by detailing supported formats (CSV/TSV/Markdown) and explicitly stating it is not for pure JSON or binary inputs.
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 explicit 'When to use' and 'When NOT to use' sections, naming alternatives like clean JSON and unsupported formats (HTML/xlsx/binary). This provides clear context for choosing this tool over other siblings such as structured_json_repair.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_yield_curveUS Treasury Yield CurveARead-onlyIdempotentInspect
Current and recent U.S. Treasury par yield curve rates, with the spreads traders actually watch already computed.
Returns every published tenor (1 month through 30 years) for the latest business day, plus the 2s10s spread, the 3m10y spread, and an inversion flag. Source is the U.S. Treasury's official daily par yield curve (public domain, no attribution required).
When to use: you need risk-free rates for discounting, a read on the curve's shape, or recession-signal context (curve inversion).
When NOT to use: you need intraday quotes (this publishes once per business day) or non-U.S. sovereign curves.
Args:
days (integer, optional, default 1): how many recent business days to return, newest first (1-30).
Returns structuredContent: { "asOf": "2026-08-14", "latest": { "date": "2026-08-14", "tenors": { "1M": 3.79, "3M": 3.86, "2Y": 4.17, "10Y": 4.68, "30Y": 5.25 }, "spread2s10s": 0.51, "spread3m10y": 0.82, "inverted": false }, "history": [ ...same shape, newest first... ], "source": "https://home.treasury.gov/..." }
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many recent business days of the curve to return, newest first. Default 1. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (read-only, etc.), the description discloses update frequency (once per business day), data source, and full output structure. It explains the inversion flag and history ordering, providing rich 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?
The description is well-structured and front-loaded with the core purpose. The example output is arguably necessary given no output schema, and every section 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?
With no output schema, the description compensates fully by showing a concrete structuredContent example, covering the latest and history. It also clarifies use cases and limitations, making it complete for a single-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the Args section merely repeats the schema's description of 'days' including the 1-30 range and default. No new meaning is added, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the tool provides U.S. Treasury par yield curve rates with computed spreads. It distinguishes itself from siblings by specifying the exact data (tenors, 2s10s, 3m10y, inversion flag) and the official source.
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 'When to use' and 'When NOT to use' sections give concrete context: use for discounting/curve shape/recession signals, not for intraday quotes or non-U.S. curves. This is strong guidance even without naming sibling tools.
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!
Related MCP Servers
AlicenseAqualityBmaintenancePre-trade DeFi intelligence for AI agents. 20 paid x402 endpoints, USDC on Base.23561MIT- Flicense-qualityDmaintenance56 pay-per-call MCP endpoints for AI agents. Market signals, macro economics, crypto/DeFi, geopolitical intelligence, SEC filings, GitHub velocity, sanctions screening. USDC on Base Mainnet via x402.
- Alicense-qualityCmaintenanceEnables AI agents to access crypto prices, DeFi yields, Polymarket data, Base chain info, and security scans with pay-per-call via USDC on Base mainnet.MIT

usenami-mcpofficial
AlicenseAqualityFmaintenancePerp-first funding rate & RWA spread data for AI agents. 30+ CEX/DEX venues, 6 tools (4 x402-paywalled, 2 free), bring-your-own-wallet via Base mainnet.61MIT
Your Connectors
Sign in to create a connector for this server.