omni-service-node
Server Details
AI-to-AI petrol station. 56 pay-per-call endpoints covering market signals, crypto/DeFi, geopolitics, earnings, insider trades, SEC filings, sanctions screening, ArXiv research, whale tracking, and more. Micropayments in USDC on Base Mainnet via x402 protocol.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
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 3.4/5 across 56 of 56 tools scored. Lowest: 2.5/5.
Multiple tools have unclear boundaries, particularly among company intelligence (getCompanyProfile, getB2bIntel, getCompetitorIntel) and crypto data tools (getOnchainData, getDefiYields, getCryptoDerivatives). The runBundle* tools significantly overlap with their constituent atomic tools, causing confusion about whether to use granular or aggregated endpoints.
Tools follow a consistent camelCase verbNoun pattern throughout (getX, checkX, runBundleX, screenX). While the convention is predictable, the excessive use of the 'get' prefix for 40+ tools without hierarchical namespacing makes navigation monotonous.
With 56 tools, this represents an extreme mismatch per the rubric (50+ tools). Many endpoints should be consolidated with parameters (e.g., getAiTokens, getBittensor, and getVirtualsProtocol as one tool with a sector parameter) rather than separate endpoints, indicating poor API design.
Extremely comprehensive coverage spanning AI (compliance, patents, research), traditional finance (SEC filings, insider trades, analyst ratings, macro data), crypto (on-chain, DeFi, derivatives, NFTs), and geopolitical intelligence. No obvious domain gaps exist despite the excessive granularity.
Available Tools
56 toolscheck_ai_complianceARead-onlyIdempotentInspect
Classify an AI system under EU AI Act 2024/1689 and return its risk tier, legal obligations, and compliance deadlines.
Use this tool when:
An agent needs to assess whether an AI system is legally permitted in the EU
A company is building or deploying AI and needs to understand its regulatory obligations
You need to identify prohibited AI practices (real-time biometric surveillance, social scoring, etc.)
You need to know applicable CISA alerts and cybersecurity requirements for AI systems
Returns: risk_tier (prohibited/high-risk/limited-risk/minimal-risk), applicable_articles, legal_obligations, compliance_deadline, CISA_alerts, and recommended_actions.
Example call: checkAiCompliance({ company: "Acme Corp", system: "Facial Recognition Attendance System", description: "Real-time facial recognition used to track employee attendance in a factory" })
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| system | No | Name or type of the AI system being assessed (e.g. 'Facial Recognition System', 'Credit Scoring Model', 'Autonomous Drone'). Be specific. | |
| company | No | Name of the company deploying or building the AI system (e.g. 'Acme Corp'). Used to contextualise the compliance assessment. | |
| description | No | Plain-language description of what the AI system does, who uses it, and in what context (e.g. 'Scans CVs and ranks job applicants for HR managers'). More detail = more accurate classification. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnlyHint/idempotentHint, the description adds crucial behavioral context: the $0.005 USDC cost per call and the specific return structure (risk_tier, applicable_articles, etc.) which compensates for the missing output schema. Could additionally note caching behavior or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excellent structure with zero waste: single-sentence purpose statement, bulleted usage conditions, explicit return value listing, concrete example, and cost disclosure. Information is front-loaded and every sentence serves a distinct function.
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?
Comprehensive for a compliance tool: covers legal framework (EU AI Act 2024/1689), return fields, cost, and usage scenarios. Minor gap: does not explicitly note that all 3 parameters are optional (0 required), though the example demonstrates practical usage patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter. The description adds value through a concrete example call showing realistic parameter values ('Acme Corp', 'Facial Recognition Attendance System'), helping the agent understand expected input granularity beyond the schema's type definitions.
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 ('Classify') and clear resource scope ('AI system under EU AI Act 2024/1689'), explicitly distinguishing it from sibling tools like get_ai_news or get_ai_patents which handle information retrieval rather than legal compliance classification.
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 'Use this tool when:' guidance with four distinct scenarios (legal permission assessment, regulatory obligations, prohibited practices identification, and CISA alerts), offering clear boundaries for when to invoke this versus other research or intelligence tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_newsARead-onlyIdempotentInspect
Fetch real-time news and intelligence from HackerNews, Reddit (r/MachineLearning, r/LocalLLaMA, r/CryptoCurrency), and NewsAPI. Returns scored articles ranked by relevance and virality, plus trending keywords.
Use this tool when:
An agent needs to stay current on breaking AI, crypto, or macro news
A research agent is scanning for market-moving headlines
You need to detect emerging narratives before they become mainstream
A content agent needs source material for summaries or analysis
Returns: articles (title, source, score, url, published_at), trending_keywords, sentiment_summary, breaking_alerts.
Example: getAiNews({ category: "ai", hours: 4, limit: 10 }) → top 10 AI stories from the past 4 hours with virality scores. Example: getAiNews({ category: "crypto", hours: 1, limit: 5 }) → breaking crypto news in the last hour.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Lookback window in hours. Use 1-4 for breaking news, 24 for daily digest, 72-168 for weekly trend analysis. Range: 1-168. | |
| limit | No | Maximum number of articles to return, ranked by relevance score. Use 5-10 for quick summaries, 30-100 for comprehensive research. Range: 1-100. | |
| category | No | News category to fetch: 'ai' (AI/ML/LLM news), 'crypto' (blockchain/DeFi/token news), 'macro' (economics/markets/geopolitics), 'all' (everything combined). | ai |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnly/idempotent status, the description adds critical cost disclosure ($0.005 USDC), ranking methodology (relevance and virality scores), and detailed return structure (sentiment_summary, breaking_alerts). Does not mention rate limits or caching behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (action, usage conditions, returns, examples, cost). Each sentence earns its place. Minor verbosity in the 'Use this tool when' bullets could be condensed, but overall efficient for the information density provided.
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?
Excellent coverage given no output schema exists. Documents return fields (title, source, score, url, published_at, trending_keywords), data provenance (specific subreddits), and cost model. For a 3-parameter read-only tool, this provides complete operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions, but the description adds valuable usage examples showing parameter combinations (e.g., 1-4 hours for breaking news, 24 for daily digest). These examples provide semantic context for parameter interplay that schema alone doesn't convey.
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 specific action ('Fetch real-time news and intelligence') and precise sources (HackerNews, specific subreddits, NewsAPI). It clearly distinguishes from academic siblings like get_arxiv_research by emphasizing 'real-time' and 'virality' versus research papers.
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 'Use this tool when:' section with four distinct scenarios covering research agents, content agents, and market monitoring. Provides clear temporal guidance ('breaking news' vs 'weekly trend analysis') through parameter examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_patentsARead-onlyIdempotentInspect
Search USPTO patent database for AI-related filings: applicant companies, patent titles, abstract summaries, filing dates, and technology classification. Reveals who is building what in neural networks, autonomous agents, and LLMs.
Use this tool when:
A research agent is building a competitive intelligence map of AI patent activity
An investor agent wants to assess a company's AI IP portfolio strength
You need to track which companies are filing the most AI patents (leading indicator of R&D)
A legal/compliance agent is conducting freedom-to-operate analysis for AI systems
Returns per patent: patent_number, title, assignee_company, filing_date, abstract_summary, technology_class, citation_count, similar_patents, competitive_threat_score.
Example: getAiPatents({ query: "autonomous agent planning", companies: "google,microsoft" }) → Google: 14 patents on agent planning this quarter.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to search for new patent applications and grants. Use 30 for recent filings, 90 for quarterly, 365 for annual landscape analysis. Range: 1-365. | |
| query | No | Patent search keywords covering the technical domain (e.g. 'autonomous agents LLM', 'neural network inference optimisation', 'multimodal AI system', 'transformer architecture'). More specific = more relevant results. | artificial intelligence agentic |
| companies | No | Comma-separated company/assignee names to filter patents for (e.g. 'google,microsoft,amazon,apple'). Leave empty to search across all companies and identify the most active patent filers. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnly/idempotent hints, the description adds critical behavioral context missing from structured data: the $5 USDC cost per call and the complete return value structure (since no output schema exists). It documents specific return fields like 'competitive_threat_score' and 'similar_patents' that agents need to know about.
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?
Efficiently structured with front-loaded purpose statement, followed by value proposition, bulleted usage scenarios, return value documentation, example, and cost. Every sentence earns its place; no redundancy with schema or annotations. Appropriate length for the complexity (paid API with rich return data).
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?
Comprehensive for a tool without output schema: documents all return fields, discloses pricing, specifies data source (USPTO), and provides usage scenarios. Minor gap: could mention data freshness/lag time for patent filings, but adequately complete given the parameter richness and annotations provided.
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 100% schema description coverage, the baseline is 3, but the description elevates this by providing a concrete usage example (getAiPatents({ query: '...', companies: 'google,microsoft' })) that demonstrates parameter interaction and syntax (comma-separated values without spaces), adding practical semantic value beyond the schema definitions.
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 ('Search') and resource ('USPTO patent database'), clearly defining scope as AI-related filings. It distinguishes from siblings like get_ai_news or get_competitor_intel by specifying patent-specific data points (titles, abstracts, classification codes) and the USPTO 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?
Provides an explicit 'Use this tool when:' section with four distinct scenarios (research intelligence, investor assessment, R&D tracking, legal freedom-to-operate), clearly differentiating it from check_ai_compliance or general news tools. Each scenario maps to a specific agent type and use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_tokensARead-onlyIdempotentInspect
Fetch performance data for AI/ML sector crypto tokens: NEAR, FET (Fetch.ai), AGIX (SingularityNET), RNDR (Render), WLD (Worldcoin), TAO (Bittensor), and the full AI token sector.
Use this tool when:
An agent is investing in the AI token narrative and needs sector performance
You want to compare AI token performance vs BTC/ETH benchmark
A research agent is building a thesis on the AI crypto sector
An agent needs to identify which AI tokens are outperforming or underperforming
Returns per token: name, ticker, price_usd, market_cap, 24h_change_pct, 7d_change_pct, 30d_change_pct, sector_rank, vs_btc_performance, narrative_tags.
Example: getAiTokens({ limit: 10 }) → TAO +45% (7d), RNDR +28%, FET +18% — AI sector outperforming BTC this week.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of AI-sector tokens to return, ranked by market cap. Use 10 for top-tier only, 30 for mid-caps included, 100 for the full AI token universe. Range: 1-100. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly/destructive/idempotent hints, but description adds critical cost disclosure ('$0.005 USDC per call') not found in structured metadata. Also documents return schema fields (sector_rank, vs_btc_performance, narrative_tags) and provides realistic output example. Lacks rate limiting or caching details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear visual hierarchy: action statement, usage bullets, return fields, example, and cost. Front-loaded with the core purpose. Minor verbosity in the example section, but every sentence serves a distinct purpose (scoping, usage, returns, pricing).
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 a formal output schema, the description comprehensively documents all return fields (10 distinct metrics per token) and provides a concrete usage example showing expected data format. Combined with annotations and single well-documented parameter, the description provides complete context for 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 has 100% description coverage for the 'limit' parameter including usage guidance ('Use 10 for top-tier only...'). Description includes the parameter in the usage example but does not add semantic meaning beyond what the schema already provides, which is appropriate given the comprehensive schema coverage.
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 specific verb 'Fetch' and precise resource 'performance data for AI/ML sector crypto tokens'. Explicitly lists covered tokens (NEAR, FET, AGIX, RNDR, WLD, TAO) and distinguishes from sibling tools like get_bittensor (single token) or get_crypto_derivatives (general crypto) by focusing on the AI sector narrative.
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 'Use this tool when:' section with four distinct scenarios covering investment, benchmarking, research thesis building, and relative performance analysis. Implicitly excludes non-AI crypto analysis by specifying 'AI token narrative' and 'AI crypto sector' throughout.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analyst_ratingsARead-onlyIdempotentInspect
Fetch Wall Street analyst upgrades and downgrades: firm name, rating change, new price target, and implied upside/downside from current price.
Use this tool when:
A trading agent wants to know if a stock has recently been upgraded or downgraded
You need analyst price targets to assess consensus valuation
A research agent is tracking sentiment changes at major investment banks
An agent wants to identify contrarian signals (mass downgrades = potential bottoms)
Returns: ticker, company, analyst_firm, old_rating, new_rating, old_target, new_target, implied_upside_pct, date, analyst_name.
Example: getAnalystRatings({ symbol: "NVDA", days: 7 }) → Goldman Sachs upgrades NVDA to BUY, raises PT to $1,100. Example: getAnalystRatings({ days: 3 }) → all upgrades/downgrades across the market in the last 3 days.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to include analyst rating changes. Use 1-3 for recent changes, 7 for weekly review, 30-90 for trend analysis. Range: 1-90. | |
| symbol | No | Stock ticker to filter analyst ratings for (e.g. 'NVDA', 'AAPL', 'MSFT'). Leave empty to return market-wide analyst activity across all covered stocks. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds critical cost disclosure ('$0.005 USDC per call') and enumerates return fields (ticker, analyst_firm, implied_upside_pct, etc.) compensating for missing output schema. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Efficiently structured with clear sections: purpose, usage triggers, return schema, examples, and cost. Every sentence provides unique value; no repetition of schema or annotation content. Front-loaded with specific action verb and resource identification.
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?
Comprehensive despite no output schema: lists all return fields explicitly, provides two usage examples covering both parameter combinations, includes pricing, and defines behavioral scope. Adequate for a 2-parameter read-only financial data tool with 100% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for both 'days' (including range 1-90 and usage guidance) and 'symbol' (empty for market-wide). Description adds concrete examples showing getAnalystRatings({ symbol: 'NVDA', days: 7 }) vs ({ days: 3 }), clarifying the optional filtering semantics visually.
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?
Opens with specific verb 'Fetch' + precise resource 'Wall Street analyst upgrades and downgrades' plus data attributes (firm name, rating change, price target). Clearly distinguishes from siblings like get_earnings or get_insider_trades by focusing specifically on analyst rating actions.
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 'Use this tool when:' section enumerates four distinct scenarios (trading agent seeking upgrades, research tracking sentiment, contrarian signal detection, consensus valuation). Examples demonstrate both filtered (symbol) and unfiltered (market-wide) usage patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_arxiv_researchARead-onlyIdempotentInspect
Search ArXiv for the latest AI/ML academic papers with breakthrough detection, citation velocity, trending topics, and top authors. Covers cs.AI, cs.LG (machine learning), cs.CL (NLP), cs.CV (computer vision), cs.RO (robotics), and cs.MA (multi-agent).
Use this tool when:
A research agent needs to find the latest papers on a specific AI topic
You want to detect breakthrough research before it goes mainstream
An agent is building a literature review or state-of-the-art summary
You need to identify leading researchers and institutions in a field
Returns: papers (title, authors, abstract, arxiv_id, published, citation_velocity), breakthrough_score, trending_topics, top_authors.
Example: getArxivResearch({ query: "mixture of experts scaling", days: 7 }) → latest MoE papers from the past week. Example: getArxivResearch({ category: "agents", days: 3, limit: 5 }) → top 5 agentic AI papers from last 3 days.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to search for papers. Use 1-3 for cutting-edge latest, 7-14 for weekly review, 30 for monthly landscape. Range: 1-30. | |
| limit | No | Maximum number of papers to return, ranked by breakthrough score and recency. Range: 1-100. | |
| query | No | Free-text keyword search within paper titles and abstracts (e.g. 'mixture of experts', 'chain of thought', 'multimodal agents'). Leave empty to get top papers by date. | |
| category | No | ArXiv category: 'ai' (cs.AI), 'ml' (cs.LG), 'nlp' (cs.CL), 'cv' (cs.CV), 'robotics' (cs.RO), 'agents' (multi-agent systems), 'all' (all categories combined). | all |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent safety profile; description adds critical cost disclosure ('$0.005 USDC per call'), return value structure (breakthrough_score, trending_topics), and scope limitations (specific arXiv categories covered). Does not mention rate limits or authentication requirements, but provides substantial behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excellent structure with clear visual hierarchy: capability summary → usage triggers → return values → concrete examples → cost. No filler text; every sentence provides actionable information. Front-loaded with primary function, well-scoped for the complexity (4 parameters, rich domain).
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?
Compensates effectively for missing output schema by documenting return structure (papers metadata, breakthrough_score, top_authors). Covers cost, usage scenarios, parameter examples, and domain scope (cs categories). Complete enough for agent to invoke confidently without additional clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage establishing baseline of 3. Description adds two concrete examples showing parameter interaction patterns (query+days for topic search, category+days+limit for ranked results), which clarify how to combine filters effectively. Examples elevate this above baseline schema documentation.
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 specific verb+resource ('Search ArXiv for the latest AI/ML academic papers') and enumerates unique capabilities (breakthrough detection, citation velocity). Clearly distinguishes from sibling news/patent tools like get_ai_news and get_ai_patents by specifying academic paper focus and cs.AI/cs.LG categories.
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 'Use this tool when:' section with four specific scenarios (literature review, breakthrough detection, researcher identification). Lacks explicit 'when not to use' or named sibling alternatives (e.g., contrasting with get_ai_news for news vs papers), but the contextual guidance is strong and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_b2b_intelARead-onlyIdempotentInspect
Generate Golden Lead packets for B2B sales agents. Cross-references SEC filings, GitHub activity, and job postings to score companies as HOT/WARM/COLD leads with AI pivot signals and recommended outreach angles.
Use this tool when:
A sales agent needs to prioritise outreach to companies most likely to buy AI services
You want to detect which companies are actively transitioning to AI and need vendors
A BD agent is building a prospect list with data-backed prioritisation
You need company intelligence that goes beyond basic firmographic data
Returns per company: lead_score (HOT/WARM/COLD), ai_pivot_signal, recent_sec_mentions_of_ai, github_ai_repos_added, open_ai_roles, funding_stage, recommended_outreach_angle, key_contacts.
Example: getB2bIntel({ companies: ["salesforce", "oracle", "sap"] }) → Salesforce HOT (12 AI roles, $2B AI capex in 10-K), Oracle WARM, SAP COLD.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| companies | No | List of 1-10 company names or domains to generate B2B intelligence for (e.g. ['salesforce', 'oracle', 'sap']). Use exact company names or domain names (e.g. 'salesforce.com'). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly/idempotent), but description adds critical cost disclosure ('$5 USDC per call') not found in structured fields. It also compensates for missing output schema by detailing return fields (lead_score, ai_pivot_signal, etc.) and data sources. Could be 5 if it mentioned rate limits or caching behavior.
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?
Perfectly structured with zero waste: single-sentence purpose statement, bulleted usage conditions, structured return value list, concrete example, and cost warning. Every sentence earns its place and information is front-loaded with the core value proposition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description fully compensates by listing all return fields and providing a concrete output example ('Salesforce HOT (12 AI roles...)'). Cost transparency, multi-source data explanation (SEC/GitHub/jobs), and sibling differentiation make this complete for a complex intelligence-gathering 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% with detailed parameter descriptions including examples ('salesforce', 'salesforce.com'). The description provides a usage example ('getB2bIntel({ companies: [...] })') but does not add semantic meaning beyond what the schema already documents. Baseline 3 appropriate when schema carries full load.
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?
Exceptionally specific: 'Generate Golden Lead packets for B2B sales agents' provides concrete verb + resource, while 'Cross-references SEC filings, GitHub activity, and job postings' defines scope. The HOT/WARM/COLD scoring and 'AI pivot signals' clearly differentiate this from sibling tools like get_company_profile (basic firmographics) or get_sec_filings (raw data only).
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 'Use this tool when:' section lists four specific scenarios (prioritizing outreach, detecting AI transitions, building prospect lists, going beyond firmographics). The contrast with 'basic firmographic data' implicitly guides users toward get_company_profile for simpler needs, providing clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bittensorARead-onlyIdempotentInspect
Get live Bittensor (TAO) network data: subnet activity, validator rewards, emissions per subnet, top miners, and overall network health metrics.
Use this tool when:
An agent is evaluating Bittensor subnet investment opportunities
A research agent needs to understand which subnets are generating the most value
You want to track TAO staking rewards and validator performance
An agent is comparing Bittensor subnets to decide where to stake or mine
Returns per subnet: subnet_id, subnet_name, netuid, daily_emissions_tao, validator_count, miner_count, top_validators, avg_incentive, 30d_performance.
Example: getBittensor({ limit: 10 }) → Subnet 1 (Text Prompting): 420 TAO/day emissions, Subnet 8 (Coding): 380 TAO/day.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of top subnets to return ranked by daily TAO emissions/rewards. Use 10 for the most valuable subnets, 32 for half the network, 64 for all subnets. Range: 1-64. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly, idempotent, non-destructive). The description adds critical cost information ('$0.005 USDC per call') not in annotations, documents return field structure explicitly, and provides a concrete output example. Could improve by mentioning rate limits or caching behavior.
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?
Excellent structure: single-line purpose statement, bulleted usage scenarios, structured return value list, concrete example, and cost note. Every sentence earns its place with no redundancy. Information is front-loaded with the most critical context first.
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 1-parameter read-only tool, the description fully compensates for the missing output schema by explicitly listing all return fields (subnet_id, daily_emissions_tao, etc.) and providing a realistic output example. Combined with 100% schema coverage, no additional documentation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds value by including a practical usage example (getBittensor({ limit: 10 })) that demonstrates the expected calling convention and typical values, going beyond the schema's technical definition.
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 ('Get') and resource ('live Bittensor (TAO) network data'), followed by concrete data types (subnet activity, validator rewards, emissions). It clearly distinguishes from siblings like get_crypto_derivatives or get_defi_yields by specifying Bittensor/TAO subnet-specific 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?
Provides explicit 'Use this tool when:' scenarios covering investment evaluation, research, staking rewards tracking, and mining decisions. However, it lacks explicit 'when not to use' guidance or named alternative tools (e.g., 'use get_crypto_derivatives for general price data').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commoditiesARead-onlyIdempotentInspect
Get spot prices, 24h/7d trend, and supply/demand signals for physical commodities: gold, silver, crude oil, wheat, corn, copper, and natural gas.
Use this tool when:
An agent needs commodity prices for macro analysis or trade decisions
A portfolio agent wants to assess inflationary pressures via commodity trends
A trading agent is looking for correlated assets (e.g. gold as USD hedge)
You need supply/demand context for commodity price movements
Returns per commodity: spot_price, currency, 24h_change_pct, 7d_change_pct, 52w_high, 52w_low, supply_signal (TIGHT/NORMAL/SURPLUS), demand_signal, key_drivers.
Example: getCommodities({ commodities: "gold,silver,oil" }) → Gold $2340/oz (+0.8%), Oil $82.40/bbl (-1.2%).
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| commodities | No | Comma-separated commodity names to fetch. Supported: 'gold', 'silver', 'oil' (WTI crude), 'brent', 'wheat', 'corn', 'copper', 'natgas' (natural gas), 'platinum', 'palladium'. | gold,silver,oil,wheat,copper |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. Description adds valuable behavioral context beyond annotations: discloses exact return fields (spot_price, 52w_high/low, supply_signal enums), data freshness implicitly via 24h/7d trends, and explicit cost ('$0.005 USDC per call'). Does not contradict annotations. Could improve by mentioning rate limits or caching behavior.
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?
Excellent structure with clear visual hierarchy: one-sentence purpose statement, bulleted usage conditions, structured return value documentation, concise example, and cost disclosure. Every sentence earns its place; no fluff or repetition of the tool name. Information is front-loaded with the most critical details first.
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 single-parameter read tool with no output schema, the description comprehensively compensates by enumerating all return fields (spot_price, supply_signal states, etc.), providing usage scenarios, and disclosing pricing. The combination of detailed schema (100% coverage) and rich description makes this complete despite missing formal output schema.
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%, providing detailed documentation of the 'commodities' parameter including supported values and formats. Description provides a usage example (getCommodities({ commodities: 'gold,silver,oil' })) which reinforces the comma-separated format, but this is syntactic rather than semantic enrichment. Baseline 3 is appropriate given schema completeness.
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?
Opens with specific verb ('Get') and comprehensive resource scope ('spot prices, 24h/7d trend, and supply/demand signals for physical commodities'), immediately followed by concrete examples (gold, silver, crude oil, etc.). Clearly distinguishes from siblings like get_energy_prices or get_fx_rates by emphasizing physical commodity spot markets and supply/demand signals.
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 'Use this tool when:' section with four distinct scenarios covering macro analysis, portfolio inflation assessment, trading correlations, and supply/demand context. Names specific agent personas (portfolio agent, trading agent). Lacks explicit 'when not to use' guidance or named alternatives (e.g., when to prefer get_energy_prices over this for oil/natgas), preventing a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_profileARead-onlyIdempotentInspect
Build a full company intelligence dossier by combining SEC filings + GitHub velocity + hiring signals + patent activity + HackerNews sentiment. Returns a HOT/WARM/COLD lead score with recommended action.
Use this tool when:
A sales or BD agent needs a comprehensive one-stop company briefing before outreach
An investor agent is doing rapid due diligence on a prospect
You need a 360-degree view of a company's AI posture and financial health
A research agent is comparing multiple companies and needs standardised profiles
Returns: lead_score, ai_pivot_score, financial_health_summary, ai_github_activity, open_ai_roles, recent_sec_ai_mentions, patent_count, hn_sentiment, recommended_outreach_angle, key_contacts, competitor_landscape.
Example: getCompanyProfile({ company: "notion", github: "makenotion", days: 30 }) → HOT — 8 AI repos, 15 AI roles, positive HN sentiment on AI features.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days for all data sources in the dossier. Use 7 for current snapshot, 30 for monthly, 90 for quarterly view. Range: 1-180. | |
| github | No | GitHub organisation slug for the company (e.g. 'makenotion' for Notion, 'stripe' for Stripe). Leave empty to auto-detect the GitHub org from the company name. | |
| company | Yes | Company name or domain to generate the full intelligence dossier for (e.g. 'notion', 'stripe', 'figma', 'shopify'). Use the common name, not the legal entity name. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnly/idempotent status, the description adds critical behavioral context missing from structured fields: the $5 USDC cost per call (crucial for agent decision-making) and a detailed enumeration of return fields (compensating for the lack of output schema). It also provides an input/output example showing expected behavior.
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?
Excellent information density with clear visual hierarchy: single-sentence purpose statement, bulleted usage conditions, explicit 'Returns' list, concrete example, and cost warning. Every section earns its place without redundancy. Front-loaded with the core value proposition.
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 (aggregating 5+ data sources) and absence of output schema, the description compensates effectively by listing all 11 return fields explicitly. The cost disclosure and usage examples provide necessary operational context. Minor gap: no mention of error handling when data sources are unavailable.
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 100% schema description coverage for all 3 parameters, the schema carries the semantic burden. The description adds no explicit parameter guidance beyond the example usage, which warrants the baseline score of 3 for high-coverage schemas. The example does demonstrate practical usage of the 'github' and 'days' parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool 'Build[s] a full company intelligence dossier' and enumerates the specific data sources combined (SEC filings, GitHub velocity, hiring signals, patent activity, HackerNews sentiment). It clearly distinguishes itself from single-purpose siblings like get_sec_filings or get_github_velocity by positioning as a composite 'one-stop' briefing tool.
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 an explicit 'Use this tool when:' section with four distinct scenarios (sales/BD outreach, investor due diligence, AI posture assessment, competitive research). This clearly defines the contextual boundaries and differentiates it from narrower intelligence tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_competitor_intelARead-onlyIdempotentInspect
Build a competitive intelligence dossier: product launches, pricing changes, hiring signals, patent filings, and funding activity for a company vs its competitors. Returns a competitive position assessment.
Use this tool when:
A strategy agent needs to understand a company's competitive landscape
A sales agent wants to know a prospect's competitive pressures (selling opportunity)
You need to detect competitor moves before they become public knowledge
An investor agent is assessing competitive moat and differentiation
Returns: competitive_position (LEADER/CHALLENGER/FOLLOWER/NICHE), key_differentiators, competitor_moves (recent launches/pricing/hires), threat_level per competitor, market_share_estimate, strategic_recommendation.
Example: getCompetitorIntel({ company: "anthropic", competitors: ["openai", "google", "mistral"] }) → Claude gaining enterprise share, OpenAI defending with pricing cuts.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | Primary company to build competitive intelligence around (e.g. 'anthropic', 'openai', 'notion', 'stripe'). This is the focal company for the analysis. | |
| competitors | No | List of competitor company names to compare against (e.g. ['openai', 'google', 'mistral']). Leave empty to auto-identify the top 5 competitors from market data. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds critical behavioral context beyond annotations: explicit cost disclosure ('$5 USDC per call'), detailed return structure (LEADER/CHALLENGER/FOLLOWER/NICHE classifications, threat levels), and concrete input/output example. Annotations cover safety profile (readOnly/idempotent), while description adds economic and functional behavior essential for agent decision-making.
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?
Excellent structure with clear information hierarchy: purpose → usage conditions → return values → example → cost. No wasted words; each sentence delivers specific actionable information. Front-loaded with core capability, followed by operational constraints.
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?
Compensates effectively for missing output schema by documenting all return fields (competitive_position, key_differentiators, threat_level, etc.) and providing a realistic example output. Complex intelligence-gathering tool is fully specified for agent use despite no formal output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, but description adds semantic value through the concrete example showing realistic inputs ('anthropic' vs ['openai', 'google', 'mistral']) and expected output format ('Claude gaining enterprise share...'). This contextualizes the string parameters better than schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Build') + resource ('competitive intelligence dossier') + explicit scope (product launches, pricing, hiring, patents, funding). Clearly distinguishes from sibling tools like get_company_profile (static data) or get_funding_rounds (single data type) by emphasizing comparative analysis ('vs its competitors').
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 'Use this tool when:' section lists four distinct agent contexts (strategy, sales, early detection, investor). Each scenario clarifies specific value proposition (e.g., 'selling opportunity' for sales agents), providing clear selection criteria against alternatives like get_b2b_intel or get_company_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_crypto_derivativesARead-onlyIdempotentInspect
Fetch crypto futures and options market data: funding rates (positive = longs paying shorts), open interest trends, recent liquidations, and basis (spot vs futures premium/discount).
Use this tool when:
A crypto trading agent needs to assess sentiment via funding rates (high positive = overleveraged longs = bearish contrarian)
You want to detect potential short/long squeezes via open interest changes
An agent is managing a delta-neutral position and needs accurate funding cost
You need to know which exchanges have the most derivatives activity and liquidity
Returns: funding_rate (8h), annualised_funding_pct, open_interest_usd, oi_change_24h_pct, liquidations_24h_usd (longs/shorts), basis_pct, perpetual_vs_quarterly_premium, dominant_exchange.
Example: getCryptoDerivatives({ symbol: "BTC" }) → BTC funding rate +0.085%/8h (annualised +93%) — longs heavily extended, BEARISH.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Crypto asset ticker to query derivatives data for (e.g. 'BTC', 'ETH', 'SOL', 'DOGE', 'LINK'). Focuses on perpetual futures and quarterly contracts for that asset. | BTC |
| exchange | No | Exchange to filter derivatives data by. Options: 'all', 'binance', 'bybit', 'okx', 'deribit', 'bitmex'. Use 'deribit' for options data, 'all' for aggregated view. | all |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnly/idempotent hints, the description adds critical behavioral context missing from structured fields: the cost per call ('$0.005 USDC'), detailed return field documentation, and crucial interpretation semantics ('positive = longs paying shorts', 'BEARISH' signals). No contradictions with annotations exist.
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?
Excellent structure with clear sections: purpose definition, usage triggers, return specification, concrete example, and cost disclosure. Every sentence provides unique value; the example efficiently demonstrates both parameter usage and result interpretation 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?
Given the absence of an output schema, the description compensates by listing all return fields and providing an interpreted example. However, it lacks explicit data type information or structural nesting details for the return object, which would be necessary for a perfect completeness score without an output schema.
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%, establishing a baseline of 3. The description includes an example call demonstrating symbol usage, but does not add significant semantic meaning, validation rules, or format constraints beyond what the schema already provides for the 'symbol' and 'exchange' parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Fetch') and clearly identifies the resource ('crypto futures and options market data'), listing specific data points (funding rates, open interest, liquidations, basis). It effectively distinguishes from siblings like get_onchain_data or get_defi_yields by focusing specifically on derivatives market mechanics.
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 an explicit 'Use this tool when:' section with four distinct scenarios covering sentiment analysis, squeeze detection, delta-neutral management, and exchange liquidity comparison. These guidelines explicitly map to the derivatives-specific functionality and prevent confusion with broader market data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dao_governanceARead-onlyIdempotentInspect
Fetch DAO governance activity: active proposals, voting power distribution, treasury size and composition, community sentiment, and quorum status.
Use this tool when:
A DeFi agent needs to track governance proposals that could change protocol parameters (affecting yields/fees)
A token holder agent wants to vote or monitor upcoming governance decisions
You need to assess protocol health via governance participation rates
An agent is evaluating a protocol's decentralisation (voting power concentration = risk)
Returns per proposal: protocol, proposal_id, title, description, votes_for, votes_against, quorum_reached, status, end_time, proposer, estimated_impact. Also: treasury_value_usd, top_token_holders_pct.
Example: getDaoGovernance({ protocol: "uniswap", status: "active" }) → Uniswap proposal to add 0.15% fee tier — 78M UNI for, 12M against, quorum reached.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Proposal status filter: 'active' (currently voting — most urgent), 'passed' (approved, pending execution), 'failed' (rejected), 'all' (complete history). Use 'active' to find time-sensitive decisions. | active |
| protocol | No | Protocol name to filter DAO governance data for. Supported: 'uniswap', 'aave', 'compound', 'maker', 'curve', 'lido', 'arbitrum', 'optimism', 'ens'. Leave empty to return active proposals across all major DAOs. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds critical cost information ('$5 USDC per call') not found in structured data, and comprehensively documents the return structure (treasury_value_usd, top_token_holders_pct, per-proposal fields) compensating for the lack of output schema. Does not mention rate limits or caching behavior, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excellent information density with clear visual hierarchy: one-sentence purpose summary, bulleted usage conditions, return value specification, concrete example, and cost notice. Every sentence delivers unique value; no tautology or repetition of the tool name. Front-loaded with the 'Fetch' action verb.
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 2-parameter tool with simple primitives (string, enum) but complex return data, the description is comprehensive. It compensates for the missing output schema by exhaustively listing return fields. Combined with annotations covering safety hints and the explicit cost disclosure, the agent has sufficient information to invoke and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage (both status and protocol parameters fully documented with enum explanations and supported values list). The description adds an executable example (getDaoGovernance({ protocol: 'uniswap', status: 'active' })) that demonstrates parameter interaction and expected input format, providing syntactic context beyond the schema definitions.
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?
Opens with specific verb 'Fetch' and detailed resource scope (DAO governance activity, proposals, treasury, sentiment). The enumerated list of return fields (protocol, proposal_id, votes_for, etc.) precisely defines what data the tool retrieves, clearly distinguishing it from sibling tools like get_defi_yields or get_onchain_data which lack governance-specific proposal tracking.
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 'Use this tool when:' section with four distinct, concrete scenarios (DeFi agent tracking parameter changes, token holder voting, protocol health assessment, decentralization evaluation). These guidelines clearly differentiate when to select this tool versus alternatives like get_token_unlocks or get_whale_tracker.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_defi_yieldsARead-onlyIdempotentInspect
Find the highest-yielding DeFi opportunities across Aave, Compound, Curve, Yearn, Morpho, and 100+ protocols. Returns APY, TVL, risk rating, and protocol audit status.
Use this tool when:
A DeFi agent is allocating capital and wants to find the best risk-adjusted yield
You need to compare yield opportunities across multiple chains and protocols
An agent is rebalancing a yield portfolio and needs current APY data
You want to identify high APY opportunities with associated protocol risk ratings
Returns per opportunity: protocol, asset, chain, apy, tvl_usd, apy_type (LENDING/LP/STAKING/VAULT), risk_rating (LOW/MEDIUM/HIGH), audited, reward_token.
Example: getDefiYields({ chain: "ethereum", minApy: 8 }) → Aave USDC 9.2% (LOW risk, $2.1B TVL), Morpho DAI 11.4% (MEDIUM risk).
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Blockchain to filter yield opportunities by. Options: 'all', 'ethereum', 'arbitrum', 'optimism', 'polygon', 'base', 'avalanche', 'bnb'. Use 'all' to find the best yield regardless of chain. | all |
| minApy | No | Minimum APY percentage threshold to include (e.g. 5 for 5%+, 10 for 10%+, 20 for high-yield only). Setting too high may return fewer results. Range: 0-1000. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm read-only/idempotent nature, freeing description to add critical cost disclosure ('$0.005 USDC per call') and detailed return structure (protocol, asset, risk_rating fields). Includes concrete example showing input/output format. Does not mention pagination or rate limits, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: capability statement, usage triggers, return spec, example, and pricing. Information-dense without redundancy. Minor deduction for slight length, though all sentences serve distinct purposes (cost, returns, usage contexts).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description comprehensively compensates by enumerating all return fields (protocol, asset, chain, apy, tvl_usd, etc.) and providing a realistic example output. Given the complexity (100+ protocols, risk ratings, audit status), coverage is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with complete descriptions for 'chain' and 'minApy'. Description adds value through concrete example invocation (getDefiYields({ chain: "ethereum", minApy: 8 })), illustrating parameter interaction and syntax beyond raw schema definitions.
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?
Opens with specific verb 'Find' and resource 'DeFi opportunities' across explicitly named protocols (Aave, Compound, etc.). Clearly distinguishes from siblings like get_crypto_derivatives or get_stablecoins by focusing specifically on yield/APY aggregation.
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 'Use this tool when:' section with four distinct scenarios covering capital allocation, cross-chain comparison, portfolio rebalancing, and risk-adjusted yield seeking. Provides clear contextual triggers for agent selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earningsARead-onlyIdempotentInspect
Fetch upcoming and recent earnings reports for US public companies: EPS estimates vs actuals, revenue beats/misses, guidance changes, and a BEAT/MISS/IN-LINE signal.
Use this tool when:
A trading agent needs to know which stocks are reporting earnings and when
You want to identify earnings surprises that could cause price gaps
A portfolio agent needs to reduce risk before a major earnings event
An analyst agent is building an earnings calendar for the week
Returns per company: ticker, company_name, report_date, EPS_estimate, EPS_actual, EPS_surprise_pct, revenue_estimate, revenue_actual, signal (BEAT/MISS/IN-LINE), guidance (RAISED/LOWERED/MAINTAINED).
Example: getEarnings({ days: 7, symbols: "NVDA,MSFT,AAPL" }) → NVDA reporting in 3 days, consensus EPS $5.58. Example: getEarnings({ days: 3 }) → all companies reporting in the next 3 days.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window in days around today — fetches both upcoming (future) and recently reported (past) earnings. Use 1-3 for immediate events, 7-14 for weekly planning, up to 90 for quarterly view. Range: 1-90. | |
| symbols | No | Comma-separated stock tickers to filter results (e.g. 'NVDA,MSFT,AAPL,GOOGL'). Leave empty to return all companies reporting in the specified window. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true. Description adds critical cost information ('$0.005 USDC per call') not present in annotations, and documents the complete return value structure (ticker, EPS_surprise_pct, signal, guidance, etc.) to compensate for missing output schema. Does not mention rate limits or caching policies, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Highly structured with clear information hierarchy: one-line summary → bullet-pointed usage scenarios → return field enumeration → examples → cost. Every sentence earns its place; no repetition of schema or annotation data. Front-loaded with the most critical information (what the tool fetches).
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 comprehensively documents all return fields (ticker, company_name, EPS_estimate, EPS_actual, signal, guidance, etc.). Covers geographic scope (US public companies), temporal scope (upcoming and recent), cost structure, and usage contexts. Sufficient for an agent to understand full tool capabilities and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage (days and symbols fully documented). Description adds value through two concrete examples showing function invocation patterns (getEarnings({ days: 7, symbols: 'NVDA,MSFT,AAPL' })) which illustrate typical parameter values and comma-separated ticker formatting beyond the schema's technical description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with specific verb ('Fetch') and resource ('earnings reports for US public companies'), followed by exact data points provided (EPS estimates vs actuals, revenue beats/misses, guidance changes, BEAT/MISS/IN-LINE signal). This clearly distinguishes from siblings like get_economic_calendar (macro events) or get_company_profile (static metadata).
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 'Use this tool when:' section lists four specific agent scenarios (trading agent seeking reporting dates, identifying earnings surprises for price gaps, portfolio risk reduction, analyst building earnings calendar). Each scenario provides clear contextual triggers for selection over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earthquake_monitorARead-onlyIdempotentInspect
Fetch significant recent earthquakes from USGS (United States Geological Survey): magnitude, epicentre location, depth, affected region, and tsunami watch/warning status.
Use this tool when:
A risk agent is monitoring for seismic events that could disrupt infrastructure or supply chains
An insurance or catastrophe risk agent needs real-time earthquake data
You want to assess whether an earthquake could cause a tsunami (Pacific Rim events)
A geopolitical risk agent is correlating natural disasters with economic disruption
Returns per event: magnitude, location, depth_km, coordinates, time_utc, tsunami_warning (YES/NO), affected_region, USGS_url, economic_impact_estimate.
Example: getEarthquakeMonitor({ days: 7, minMagnitude: 6.0 }) → M6.8 in Japan Sea (47km depth), no tsunami warning.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to search for seismic events. Use 1 for today's events, 7 for the past week, 30 for monthly analysis. Range: 1-30. | |
| minMagnitude | No | Minimum Richter magnitude to include. Use 4.0 for all significant events, 5.0 for moderate damage potential, 6.0+ for major earthquakes, 7.0+ for great earthquakes. Range: 2.0-9.0. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/destructive status, so description appropriately focuses on adding cost disclosure ('$0.005 USDC per call'), return value schema (magnitude, depth_km, tsunami_warning), and external dependency (USGS). 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?
Excellent information architecture: single-sentence purpose statement, bulleted usage contexts, structured return value list, concise example, and cost footnote. No wasted words; every sentence serves distinct selection or invocation guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema exists, description comprehensively documents return fields (magnitude, coordinates, tsunami_warning, etc.), includes realistic example, notes economic impact estimates, and specifies USGS data provenance. Fully compensates for missing structured output metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with detailed ranges and usage guidance for 'days' and 'minMagnitude'. Description includes a syntax example but does not add substantial semantic meaning beyond the comprehensive schema documentation, warranting the baseline score for high-coverage schemas.
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 specific verb 'Fetch' + exact resource 'significant recent earthquakes from USGS' + detailed data points (magnitude, epicentre, tsunami status). Clearly distinguishes from sibling get_geopolitical_crisis by specifying USGS seismic data source and physical event parameters.
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 'Use this tool when:' section lists four distinct agent personas/contexts (risk monitoring, insurance, tsunami assessment, geopolitical correlation). Lacks explicit 'when not to use' or named alternatives, but the positive guidance is highly specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_economic_calendarARead-onlyIdempotentInspect
Fetch the high-impact economic events calendar: CPI inflation releases, Non-Farm Payrolls (NFP), FOMC rate decisions, GDP prints, PMI data — with consensus forecasts vs prior values and market impact ratings.
Use this tool when:
A trading agent needs to avoid holding positions through major data releases
A macro agent is building a weekly economic event schedule
You need to know the expected vs prior value for an upcoming release
An agent wants to assess whether upcoming events could move markets significantly
Returns per event: event_name, country, release_datetime_utc, impact (HIGH/MEDIUM/LOW), forecast, previous, actual (if released), market_impact_assets.
Example: getEconomicCalendar({ days: 7, countries: "US,EU" }) → US CPI Tuesday 8:30am EST (forecast 3.2% vs prior 3.4%).
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days ahead (and behind) to include. Use 1-3 for the immediate week, 7-14 for weekly planning, 30 for monthly view. Range: 1-30. | |
| countries | No | Comma-separated ISO country codes to filter events for. Supported: US, EU, GB, JP, CN, AU, CA, CH, DE, FR, IT. Use 'US' alone for Fed-only events. | US,EU,GB,JP |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive safety profile. Description adds critical cost information ('$0.005 USDC per call'), detailed return value specification (8 fields including market_impact_assets), and a concrete invocation example. Adds substantial operational context beyond annotations without contradicting them.
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?
Excellent structure with clear visual hierarchy: single-sentence purpose definition, bulleted usage conditions, structured return value list, inline example, and cost footer. Every sentence delivers distinct value (purpose, usage, returns, example, pricing) with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite absence of output schema, description comprehensively documents return structure (8 fields including conditional 'actual (if released)'), provides realistic example with syntax, and includes cost transparency. For a 2-parameter read-only tool, this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with detailed guidance on parameter semantics (e.g., days range 1-30, country code format). Description provides a usage example but does not add semantic meaning beyond what the schema already documents. Baseline 3 appropriate for high schema coverage.
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 specific verb 'Fetch' and resource 'high-impact economic events calendar', immediately listing concrete examples (CPI, NFP, FOMC, GDP, PMI) that clearly distinguish it from siblings like get_earnings or get_commodities. The scope (consensus forecasts vs prior values, market impact ratings) further differentiates it from get_macro_data.
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 'Use this tool when:' section with four distinct scenarios (trading position avoidance, macro scheduling, forecast comparison, market impact assessment). These guidelines clearly delineate appropriate use cases and implicitly contrast with alternatives like get_earnings (company-specific) or get_macro_data (historical rather than calendar).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_energy_pricesARead-onlyIdempotentInspect
Get global energy commodity prices: WTI crude oil, Brent crude, Henry Hub natural gas, LNG (liquefied natural gas), thermal coal, and regional electricity spot prices.
Use this tool when:
A macro agent needs energy price inputs for inflation modelling
A trading agent is assessing the energy sector or commodity-linked currencies (CAD, NOK, RUB)
You need to know the WTI/Brent spread as a geopolitical risk indicator
A portfolio agent wants to assess energy transition risks via coal vs gas pricing
Returns per commodity: name, price, unit, currency, 24h_change_pct, 7d_change_pct, 1y_change_pct, supply_signal, demand_signal, key_driver.
Example: getEnergyPrices({ commodities: "wti,brent,natgas" }) → WTI $82.40/bbl, Brent $85.10, Brent-WTI spread $2.70, NatGas $2.18/MMBtu.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| commodities | No | Comma-separated energy commodities to fetch. Supported: 'wti' (West Texas Intermediate crude), 'brent' (Brent crude), 'natgas' (Henry Hub natural gas), 'lng' (liquefied natural gas), 'coal' (thermal coal), 'electricity' (European spot). | wti,brent,natgas,lng,coal |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial value beyond annotations: discloses pricing cost ($0.005 USDC/call), documents return structure (8 fields per commodity including supply/demand signals), and provides realistic input/output example. Does not mention rate limits or caching behavior, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear visual hierarchy: one-line summary, bullet-pointed usage contexts, returns documentation, code example, and cost. Every sentence serves agent decision-making; no filler despite detailed content.
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?
Excellent coverage for a single-parameter tool with no output schema. Description fully compensates by detailing all return fields (name, price, unit, currency, multi-timeframe changes, signals, drivers) and operational constraints (cost), leaving no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage (baseline 3). Description adds value via the code example showing comma-separated syntax and casing ('wti,brent,natgas'), reinforcing the expected parameter format beyond the schema's text description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with specific verb ('Get') + resource ('global energy commodity prices') + exhaustive scope list (WTI, Brent, Henry Hub, LNG, coal, electricity). Clearly distinguishes from sibling 'get_commodities' by focusing exclusively on energy markets.
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 'Use this tool when:' section with four detailed scenarios (macro inflation modeling, trading/FX assessment, geopolitical spread analysis, transition risk). Lacks explicit 'when-not' or named alternative tools (e.g., does not direct users to 'get_commodities' for agricultural products), preventing a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fear_indexARead-onlyIdempotentInspect
Get the current VIX (CBOE Volatility Index) alongside the CNN Fear & Greed composite index, with historical context showing whether current fear levels are extreme (contrarian buy) or extreme greed (contrarian sell).
Use this tool when:
A trading agent wants to assess market risk temperature before taking positions
You need a quick single-metric read on whether the market is fearful or complacent
A risk management agent is calibrating position sizes based on volatility regime
An agent wants to detect contrarian opportunities (extreme fear = buy the dip opportunities)
Returns: VIX (current, 30d_avg, 52w_high), fear_greed_index (0-100), fear_greed_label (EXTREME_FEAR/FEAR/NEUTRAL/GREED/EXTREME_GREED), historical_context, signal.
Example: getFearIndex({ format: "summary" }) → VIX 28.4, Fear & Greed 18 (EXTREME FEAR) — historically bullish signal.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: 'summary' returns key metrics only (VIX, index score, label, signal), 'full' adds historical percentile context, 30/90/365-day trends, and interpretation guidance. | summary |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/safety profile, while description adds critical cost disclosure ('$0.005 USDC per call'), return value structure (VIX sub-fields, fear_greed_label enums), and contrarian signal logic. Does not mention rate limits or caching, but cost transparency is valuable 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?
Well-structured with clear sections: purpose → usage guidelines → returns → example → cost. Information-dense with minimal waste. Slightly verbose in usage section (4 bullets) but each serves distinct use case (trading vs risk vs contrarian). Front-loaded core purpose earns high marks.
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 output schema, description comprehensively details return values including field types (0-100 range, enum labels), historical context interpretation, and signal meaning. Cost disclosure and example invocation complete the picture for a single-parameter data retrieval 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 has 100% description coverage for the 'format' parameter. Description includes a usage example ('getFearIndex({ format: "summary" })') which reinforces semantics, but with full schema coverage, no additional compensation is required. Baseline 3 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?
Description opens with specific verb ('Get') and precise resources ('VIX', 'CNN Fear & Greed composite index'), immediately distinguishing this from sibling tools like get_market_sentiment or get_trading_signal. The contrarian interpretation angle (extreme fear = buy) further clarifies its unique value proposition.
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 'Use this tool when:' section with four distinct scenarios covering trading agents, risk management, and contrarian opportunity detection. This provides clear positive guidance for selection without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_funding_roundsARead-onlyIdempotentInspect
Fetch VC and PE funding rounds: deal amount, lead investors, valuation (if disclosed), sector, and stage. AI startup deals are highlighted with tech stack and growth signals.
Use this tool when:
A sales agent wants to target recently funded companies (they have budget to spend)
A research agent is tracking capital flow into specific sectors
An investor agent is monitoring competitive funding activity in a portfolio sector
You want to identify which VCs are most active in AI right now
Returns per deal: company, sector, stage (SEED/A/B/C/GROWTH/PE), amount_usd, valuation_usd, lead_investors, co_investors, date, country, use_of_funds, relevant_to_ai.
Example: getFundingRounds({ sector: "ai", days: 7, minAmountM: 10 }) → Cohere $500M Series E, Perplexity $250M Series B, 4 other AI rounds $10M+.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to include funding announcements. Use 7 for breaking rounds, 30 for monthly, 90 for quarterly deal flow. Range: 1-180. | |
| sector | No | Industry sector to filter funding rounds for. Options: 'ai', 'fintech', 'biotech', 'deeptech', 'crypto', 'climate', 'saas', 'defense', 'all'. Use 'ai' to track AI/ML investment specifically. | ai |
| minAmountM | No | Minimum deal size in millions USD (e.g. 1 for $1M+, 10 for $10M+ Series A+, 100 for $100M+ growth rounds). Higher threshold = fewer but more significant deals. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish read-only/idempotent safety profile. Description adds crucial behavioral context not in annotations: cost model ($5 USDC per call), return value structure (per-deal fields listed), and special handling (AI deals highlighted with tech stack). 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 with clear progression: function → usage scenarios → return values → example → cost. Every section earns its place; the example query effectively illustrates intended use. Slightly dense but appropriately comprehensive for a commercial data tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description compensates by enumerating return fields (company, sector, stage, amount_usd, etc.) and noting AI-specific enhancements. Cost disclosure and 3-parameter scope are fully addressed. Adequate for tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with excellent parameter descriptions (e.g., 'Use 7 for breaking rounds, 30 for monthly'). Description provides a usage example showing realistic parameter combinations, but baseline remains 3 as schema carries the full semantic burden.
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?
Opens with specific verb 'Fetch' and clearly defines the resource (VC and PE funding rounds) and specific data points returned (deal amount, lead investors, valuation, etc.). Effectively distinguishes from siblings like get_ai_news or get_company_profile by focusing specifically on funding rounds and investment data.
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 'Use this tool when:' section with four detailed agent scenarios (sales targeting, capital flow research, competitive monitoring, VC activity tracking). Clear contextual guidance for selection, though lacks explicit 'when not to use' or named alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fx_ratesARead-onlyIdempotentInspect
Get live foreign exchange rates for major pairs, minor pairs, the Dollar Index (DXY), and crypto/USD crosses.
Use this tool when:
A trading agent needs current FX rates before executing a currency trade
A macro agent is assessing USD strength or weakness (DXY trend)
A portfolio agent needs to calculate cross-currency exposure
An agent is hedging currency risk and needs live bid/ask spreads
Returns per pair: pair, rate, bid, ask, spread_pips, 24h_change_pct, 1w_change_pct, trend (STRONG_USD/WEAK_USD/NEUTRAL).
Example: getFxRates({ pairs: "EURUSD,GBPUSD,DXY" }) → EUR/USD 1.0842 (-0.3%), DXY 104.2 (+0.4% — USD strengthening).
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| pairs | No | Comma-separated FX pairs or indices to fetch (e.g. 'EURUSD,GBPUSD,USDJPY,DXY'). Supports all major/minor pairs, DXY index, and crypto crosses like BTCUSD,ETHUSD. | EURUSD,GBPUSD,USDJPY,AUDUSD,DXY |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly, idempotent, non-destructive). Description adds critical behavioral details: cost per call ('$0.005 USDC'), return value schema (7 specific fields per pair), and live data nature. Does not mention rate limits or caching behavior, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Perfectly structured with front-loaded purpose statement, bulleted usage contexts, return schema specification, concrete example, and cost note. Every sentence delivers distinct value with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description compensates by detailing all return fields (pair, rate, bid, ask, spread_pips, changes, trend). Also covers cost and usage contexts. Given the single-parameter input, this provides complete operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, establishing baseline 3. Description includes an example invocation showing format, but does not add semantic meaning beyond the schema's already-comprehensive description of the pairs parameter.
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?
Opens with specific verb ('Get') + resource ('live foreign exchange rates') + clear scope ('major pairs, minor pairs, the Dollar Index (DXY), and crypto/USD crosses'). Effectively distinguishes from siblings like get_commodities or get_crypto_derivatives by specifying FX-specific coverage.
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 'Use this tool when:' section with four distinct, concrete scenarios (trading execution, macro USD assessment, cross-currency exposure calculation, hedging). Lacks explicit 'when-not' exclusions or named alternative tools, which prevents a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_geopolitical_crisisARead-onlyIdempotentInspect
Real-time geopolitical crisis monitoring using GDELT event database, OFAC alerts, and social signal analysis. Returns crisis scores, escalation risk, projected market impact on oil/gold/USD/defence stocks, and Reddit/HackerNews viral intelligence.
Use this tool when:
A macro agent needs to assess geopolitical tail risk before taking large positions
A trading agent wants to know how a crisis event is likely to move oil, gold, and safe-haven currencies
You need an early warning system for escalating conflicts before they move markets
A risk agent is stress-testing a portfolio against geopolitical scenarios
Returns per region: crisis_score (0-100), escalation_risk (LOW/MEDIUM/HIGH/CRITICAL), active_events, market_impact (oil_pct, gold_pct, USD_pct, defence_stocks_pct), OFAC_alerts, social_signal_viral_events, recommended_hedges.
Example: getGeopoliticalCrisis({ regions: "middle-east" }) → Crisis score 78 (HIGH), Iran-Israel: oil +8% projected, gold +4%, USD +2%.
Cost: $25 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| regions | No | Comma-separated geopolitical regions to monitor. Supported: 'middle-east' (Iran/Israel/Gaza), 'ukraine' (Russia/NATO), 'taiwan' (China/US), 'korea' (DPRK), 'global' (all regions). Use 'middle-east,ukraine' for the two highest-risk current flashpoints. | middle-east,ukraine,taiwan |
| includeMarketImpact | No | Set to true (recommended) to include projected market impact estimates on oil, gold, USD, and defence stocks for each crisis scenario. Set to false for raw event data only. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the operation as read-only, idempotent, and non-destructive. The description adds critical behavioral context not present in annotations: explicit cost disclosure ('$25 USDC per call'), data source provenance (GDELT, OFAC, HackerNews), and detailed return structure (since no output schema exists). Minor gap: no mention of rate limits or caching behavior.
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?
Excellent structure with clear visual hierarchy: single-sentence purpose statement, bulleted usage guidelines, compact return value specification, example, and cost line. Every sentence earns its place; no filler text. Information is front-loaded with the most critical context (what it does) before descending into usage scenarios and technical details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the tool's complexity (multiple data sources, quantitative outputs), the description comprehensively documents return values: crisis_score range (0-100), escalation_risk enums (LOW/MEDIUM/HIGH/CRITICAL), specific market impact metrics (oil_pct, gold_pct, etc.), and auxiliary fields (OFAC_alerts, recommended_hedges). The example further clarifies expected output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is appropriately 3. The description includes a helpful usage example (getGeopoliticalCrisis({ regions: 'middle-east' })) that demonstrates parameter syntax, but does not add semantic meaning to the parameters beyond what the schema already provides (e.g., does not explain the trade-offs of includeMarketImpact beyond the schema's 'recommended' note).
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, actionable definition: 'Real-time geopolitical crisis monitoring using GDELT event database, OFAC alerts, and social signal analysis.' It clearly identifies the resource (geopolitical crisis data) and distinguishes itself from siblings like get_macro_data or get_commodities by emphasizing multi-source intelligence (GDELT, OFAC, Reddit) and specific outputs (crisis scores, escalation risk).
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 an explicit 'Use this tool when:' section with four specific scenarios (macro tail risk assessment, trading impact on oil/gold, early warning systems, portfolio stress-testing). This provides clear differentiation from alternatives like get_market_sentiment or get_economic_calendar by specifying agent roles and use cases where geopolitical-specific data is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_github_trendingARead-onlyIdempotentInspect
Fetch trending GitHub repositories by stars today/this week/this month. Filter by programming language and topic. AI/ML repositories and agentic frameworks are highlighted.
Use this tool when:
A research agent is discovering new tools, frameworks, or libraries gaining traction
An agent wants early signals on emerging tech trends before they go mainstream
You need to find the hottest open-source projects in a specific domain
A developer agent is scouting for relevant libraries to recommend or integrate
Returns per repo: name, owner, description, stars, stars_today, language, topics, url, breakthrough_signal (if exceptional growth).
Example: getGithubTrending({ topic: "mcp", period: "weekly" }) → top MCP repos gaining stars this week. Example: getGithubTrending({ language: "python", topic: "agents", period: "daily" }) → hottest Python agent repos today.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | GitHub topic tag to filter repositories by (e.g. 'ai', 'llm', 'agents', 'mcp', 'rag', 'rust', 'blockchain'). Use 'llm' or 'agents' to focus on AI agent tooling. | ai |
| period | No | Trending time window: 'daily' (stars gained today — very fresh), 'weekly' (past 7 days — sustained momentum), 'monthly' (past 30 days — established growth trends). | daily |
| language | No | Programming language to filter repositories by (e.g. 'python', 'typescript', 'rust', 'go', 'c++'). Leave empty to include all languages and find the most broadly trending repos. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering read-only/idempotent safety, the description adds valuable operational context: the cost model ('$0.005 USDC per call'), the return structure ('Returns per repo: name, owner...breakthrough_signal'), and special behavioral traits ('AI/ML repositories and agentic frameworks are highlighted'). It does not contradict the annotations (readOnlyHint=true aligns with 'Fetch'). A 5 would require additional details like rate limits or cache behavior.
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 expertly front-loaded with the core function in the first sentence, followed by logically sequenced sections: usage conditions, return value specification, concrete examples, and cost information. Every sentence serves a distinct purpose with zero redundancy. The structure scales appropriately to the tool's complexity (3 parameters, rich return data, monetary cost) 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 a formal output schema, the description comprehensively documents return fields including the special 'breakthrough_signal' field. Combined with 100% input schema coverage, clear usage contexts, explicit cost disclosure, and behavioral hints, the description provides everything an agent needs to invoke the tool effectively and interpret results. No gaps remain given the tool's moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, establishing a baseline of 3. The description adds invocation examples (e.g., 'getGithubTrending({ topic: "mcp", period: "weekly" })') that illustrate parameter combinations and default usage patterns, but does not significantly augment the semantic meaning beyond what the comprehensive schema descriptions already provide for topic, period, and language parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair ('Fetch trending GitHub repositories') and immediately clarifies the scope ('by stars today/this week/this month') and filtering capabilities ('Filter by programming language and topic'). The mention of 'stars' effectively distinguishes it from sibling tool get_github_velocity, while 'AI/ML repositories and agentic frameworks are highlighted' adds domain-specific context that differentiates it from general GitHub search tools.
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 'Use this tool when:' section provides four explicit positive use cases covering research discovery, trend detection, domain scouting, and developer recommendations. However, it lacks explicit negative guidance or named alternatives (e.g., it doesn't mention when to prefer get_github_velocity for commit activity instead of star-based trending), preventing a perfect score despite the strong contextual guidance provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_github_velocityARead-onlyIdempotentInspect
Analyse a company's GitHub organisation for AI pivot signals: new AI/ML repositories, topic tag changes, star velocity, commit frequency, and contributor growth. Returns an AI adoption score.
Use this tool when:
You need to verify whether a company is genuinely building AI (vs just talking about it)
A sales agent wants to time outreach to match a company's AI development phase
A research agent is assessing a company's technical capabilities and momentum
An investor wants to quantify a company's open-source AI activity as a due diligence signal
Returns: ai_pivot_score (0-100), new_ai_repos, ai_topic_repos, total_stars_gained, commit_velocity, top_contributors, breakthrough_repos (fastest-growing), inferred_ai_focus_areas.
Example: getGithubVelocity({ org: "microsoft", days: 30 }) → score 94, 8 new AI repos, 42k stars this month — HEAVY AI pivot.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| org | Yes | GitHub organisation slug to analyse for AI activity (e.g. 'openai', 'anthropic', 'microsoft', 'google', 'meta'). Must be the exact GitHub org handle. | |
| days | No | Number of days back to measure repository activity and velocity. Use 7 for recent sprint, 30 for monthly, 90 for quarterly trend. Range: 1-365. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly/idempotent), so description appropriately focuses on cost transparency ('$5 USDC per call') and return value structure. Deduct one point only because it omits rate limits or caching behavior, but cost disclosure is exceptionally valuable for agent decision-making.
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?
Perfectly structured with clear visual hierarchy: purpose → usage conditions → return values → example → cost. Every sentence serves distinct function; no redundancy with schema or annotations. Front-loaded with 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?
Compensates exceptionally for missing output schema by exhaustively listing all return fields with types/scales (ai_pivot_score 0-100), providing concrete input/output example, and noting cost. Sufficient for agent to understand full contract without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with detailed examples and usage guidance ('Use 7 for recent sprint, 30 for monthly'). Description provides helpful usage example but does not add semantic meaning beyond what schema already provides, warranting baseline score per rubric for high-coverage schemas.
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?
Excellent specificity with concrete verb ('Analyse'), target resource ('company's GitHub organisation'), and distinct scope ('AI pivot signals' including repos, tags, stars, commits). Clearly distinct from sibling get_github_trending via its AI-focused organizational analysis angle.
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 'Use this tool when:' section enumerates four distinct scenarios (verification, sales timing, research assessment, investor due diligence) that precisely delineate when to select this over alternatives like get_company_profile or check_ai_compliance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hedge_fundsARead-onlyIdempotentInspect
Fetch hedge fund 13F filings from the SEC: top holdings, new positions initiated, positions exited, and sector rotation signals from major funds like Bridgewater, Renaissance, Tiger Global, and Citadel.
Use this tool when:
An investment agent wants to follow institutional smart money positioning
You need to detect which sectors hedge funds are rotating into or out of
A research agent is building a market thesis anchored to institutional flows
An agent wants to identify stocks that multiple top funds are accumulating (conviction signal)
Returns per fund: fund_name, AUM, top_10_holdings, new_positions (this quarter), closed_positions, sector_allocation_changes, most_bought, most_sold, filing_date.
Example: getHedgeFunds({ fund: "Bridgewater", sector: "technology" }) → Bridgewater 13F: added NVDA, exited TSLA, tech now 22% of portfolio.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| fund | No | Hedge fund name to filter 13F filings for (e.g. 'Bridgewater', 'Renaissance', 'Tiger Global', 'Citadel', 'Pershing Square'). Leave empty to aggregate data across the top 20 hedge funds by AUM. | |
| sector | No | Sector to focus position analysis on (e.g. 'technology', 'healthcare', 'energy', 'financials', 'consumer', 'all'). Use 'technology' to track AI-related institutional holdings. | technology |
| quarter | No | Filing quarter to retrieve (e.g. '2024Q4', '2025Q1', '2025Q2', or 'latest' for the most recent available). Note: 13F filings are delayed by 45 days after quarter-end. | latest |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint/idempotentHint, but description adds critical behavioral context: cost disclosure ('$5 USDC per call'), detailed return value structure ('Returns per fund: fund_name, AUM...'), and concrete input/output example. Does not mention rate limits or error states, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excellent structure: single-sentence purpose, bullet-list usage guidelines, return value specification, example, and cost. Every element earns its place; cost disclosure is critical for agent decision-making, example clarifies expected invocation pattern.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description fully compensates by listing all return fields (fund_name, AUM, top_10_holdings, etc.) and providing an example output string. Given 3 optional parameters and complex financial domain, the description provides sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all 3 parameters (fund, sector, quarter). Description provides a usage example showing parameter values, but does not add semantic meaning beyond what schema already documents. Baseline 3 appropriate given high schema coverage.
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 specific verb 'Fetch' + resource '13F filings from the SEC' and enumerates exact data points (top holdings, new positions, sector rotation). Clearly distinguishes from sibling tools like get_sec_filings (general) and get_insider_trades (individual vs institutional) by specifying 'hedge fund' and 'major funds like Bridgewater'.
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 'Use this tool when:' section with four specific scenarios (smart money positioning, sector rotation detection, market thesis building, conviction signal identification). Provides clear contextual boundaries that differentiate it from general market data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_tradesARead-onlyIdempotentInspect
Fetch SEC Form 4 filings showing insider buying and selling at US public companies. Returns a bullish/bearish signal based on the direction and size of insider transactions.
Use this tool when:
A trading agent wants to follow smart money (executives buying their own stock = bullish)
You need to detect unusual insider selling before a potential price decline
A research agent is looking for conviction signals from company leadership
An agent wants to cross-reference insider activity with other fundamental data
Returns: insider_name, title, company, ticker, transaction_type (BUY/SELL), shares, value_usd, date, signal (BULLISH/BEARISH), cumulative_30d_net_buying.
Example: getInsiderTrades({ symbol: "NVDA", days: 30 }) → CEO sold 50k shares ($12M) on Feb 15 — net insider BEARISH. Example: getInsiderTrades({ days: 7 }) → market-wide insider activity this week.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to search for Form 4 insider transactions. Use 7 for recent activity, 30 for monthly trend, 90-180 for longer-term pattern. Range: 1-180. | |
| symbol | No | Stock ticker to filter insider trades for (e.g. 'NVDA', 'AAPL', 'TSLA'). Leave empty to get market-wide insider activity across all US companies. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/idempotent safety hints. Description adds critical behavioral context missing from annotations: cost ('$0.005 USDC per call'), return field structure, and signal calculation logic (bullish/bearish based on direction/size).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, usage conditions, return values, examples, and cost. Information-dense without redundancy. Front-loaded with core function in 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?
No output schema exists, but description compensates effectively by listing all return fields (insider_name, signal, cumulative_30d_net_buying, etc.) and providing concrete input/output examples. Cost disclosure completes the decision-making context for agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for both 'days' (including range 1-180 and usage patterns) and 'symbol' (empty for market-wide). Description provides usage examples showing parameters in action, meeting baseline for high-coverage schemas.
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 specific verb 'Fetch' plus exact resource 'SEC Form 4 filings' and scope 'US public companies', immediately distinguishing it from sibling get_sec_filings (general filings) and other financial data tools.
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 'Use this tool when:' section with four concrete scenarios (trading agents following smart money, detecting unusual selling, research conviction signals, cross-referencing). Clear context but lacks explicit 'when not to use' or named alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ipo_calendarARead-onlyIdempotentInspect
Fetch upcoming and recently priced IPOs with deal size, pricing range, market cap, sector, and underwriter details.
Use this tool when:
A trading agent wants to participate in or monitor upcoming IPOs
A research agent is assessing new public company supply hitting the market
You need to know which sectors are attracting new listings
An agent wants to assess market risk appetite via IPO activity (hot IPO market = RISK_ON)
Returns per IPO: company_name, ticker, exchange, pricing_date, shares_offered, price_range_low/high, expected_market_cap, sector, lead_underwriter, status (UPCOMING/PRICED/WITHDRAWN).
Example: getIpoCalendar({ days: 14 }) → 3 upcoming IPOs next 2 weeks: $2.1B fintech, $800M biotech, $450M SaaS.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window in days (past and future) to include IPO events. Use 7-14 for the immediate pipeline, 30 for monthly view, 90 for quarterly. Range: 1-90. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false; description adds critical behavioral context not in structured fields: per-call cost ($0.005 USDC), exact return field specifications (company_name, ticker, status, etc.), and status enum values (UPCOMING/PRICED/WITHDRAWN). 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?
Excellent structure with clear logical flow: purpose → usage scenarios → return specification → concrete example → cost disclosure. Every section earns its place; the return field list is essential given no output schema exists, and the cost transparency is operationally critical. No redundant or filler text.
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 comprehensively documents all return fields and their semantics. For a single-parameter tool with complete schema coverage, the description successfully compensates for missing structured output documentation and includes operational details (cost) necessary for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'days' parameter fully documented including range (1-90) and usage guidance. Description provides a concrete usage example (getIpoCalendar({ days: 14 })), but does not add semantic meaning beyond what the schema already specifies, warranting the baseline score for high-coverage schemas.
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?
Opens with specific verb 'Fetch' and clearly defines the resource (upcoming/recently priced IPOs) and scope (deal size, pricing range, market cap, sector, underwriter). Distinctly differentiates from siblings like get_earnings, get_sec_filings, or get_company_profile by focusing specifically on new listing pipeline data.
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 'Use this tool when:' section with four specific scenarios covering trading, research, sector analysis, and risk appetite assessment. Lacks explicit 'when not to use' guidance or named alternative tools, but the contextual signals provide clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_pivotsARead-onlyIdempotentInspect
Identify companies actively hiring for agentic AI roles from Greenhouse, Lever, HackerNews Who's Hiring, and Remotive. Job posting spikes are a strong buyer intent signal — companies building AI need AI tools.
Use this tool when:
A sales agent wants to find companies in active AI build mode (highest conversion likelihood)
You need to detect which companies are expanding their AI teams right now
A market research agent is quantifying AI adoption by measuring hiring demand
A VC/investor agent wants to identify companies where AI is a strategic priority
Returns per company: company_name, open_ai_roles_count, role_titles, avg_salary, seniority_mix, hiring_velocity (vs 30d_prior), inferred_ai_focus, recommended_tools_to_pitch.
Example: getJobPivots({ roles: ["AI Engineer", "LLM Engineer"] }) → Stripe: 12 AI roles (up 4x), Shopify: 8, Figma: 6.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| roles | No | List of job title keywords to search for as AI hiring signals (e.g. ['AI Engineer', 'LLM Engineer', 'Prompt Engineer', 'AI Product Manager']). More specific titles = more precise signals. | |
| companies | No | Optional list of specific company names to filter results for (e.g. ['stripe', 'shopify', 'figma']). Leave empty to scan the entire market and return top companies by AI hiring activity. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint/idempotentHint, but description adds critical behavioral context not present in structured fields: explicit data sources (Greenhouse/Lever/etc.), cost disclosure ('$5 USDC per call'), and detailed return value structure (company_name, open_ai_roles_count, etc.) compensating for missing output schema. 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 with clear information hierarchy: purpose → usage contexts → return values → example → cost. While lengthy, every sentence serves a distinct purpose (business context for 'why', return spec for 'what to expect', cost for operational constraints). No redundant or filler content despite the length required to compensate for missing 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?
Exceptionally complete given constraints. Despite no output schema, description comprehensively documents return fields (company_name, open_ai_roles_count, seniority_mix, etc.), provides concrete input/output example, discloses financial cost, and specifies exact data sources. Combined with 100% schema coverage and clear annotations, the agent has all necessary information to invoke 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?
Schema description coverage is 100%, establishing baseline 3. Description includes a helpful code example showing parameter usage (getJobPivots({ roles: [...] })), but does not add substantial semantic meaning beyond the schema's detailed descriptions for 'roles' and 'companies' parameters. Example illustrates syntax but schema already explains the concepts thoroughly.
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 specific verb 'Identify' + resource 'companies actively hiring for agentic AI roles' + explicit data sources 'Greenhouse, Lever, HackerNews Who's Hiring, and Remotive'. Clearly distinguishes from sibling tools like get_company_profile (general company data) and get_b2b_intel (general B2B intelligence) by focusing specifically on hiring signals as buyer intent indicators.
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 'Use this tool when:' section with four specific agent scenarios (sales, market research, VC/investor) that clearly establish appropriate contexts. However, lacks explicit 'when-not' guidance or named alternative tools from the sibling list (e.g., doesn't direct users to get_company_profile for general firmographic data), preventing a perfect score per rubric standards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_macro_dataARead-onlyIdempotentInspect
Fetch macroeconomic fundamentals for major economies: central bank interest rates, CPI inflation, M2 money supply, unemployment, GDP growth, yield curve shape, and G10 FX rates. Returns a rate_environment signal (HAWKISH/DOVISH/NEUTRAL).
Use this tool when:
An agent needs to understand the global interest rate environment before making investment decisions
A macro-aware trading agent wants to align trades with the dominant monetary policy regime
You need to assess inflation trends and their impact on asset classes
A portfolio agent wants to know which economies are expanding or contracting
Returns per country: policy_rate, CPI_yoy, M2_growth, unemployment_rate, GDP_growth_qoq, yield_curve (2y-10y spread), currency_vs_usd, rate_environment_signal.
Example: getMacroData({ countries: "US,EU,JP" }) → US: HAWKISH (rate 5.5%, CPI 3.2%), EU: NEUTRAL, JP: DOVISH.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| countries | No | Comma-separated ISO country/region codes to fetch macro data for. Supported: US, EU, GB, JP, CN, AU, CA, CH, SE, NO. Use 'EU' for Eurozone aggregate data. | US,CN,EU,JP,GB |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly/idempotent/non-destructive). Description adds critical behavioral context: output structure (detailed per-country return fields), cost disclosure ($0.005 USDC per call), and example invocation. Does not cover error handling or caching, but adds significant value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with front-loaded purpose, followed by usage conditions, return value specification, example, and cost. Every sentence provides distinct value (purpose, triggers, outputs, syntax, pricing) with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description fully compensates by listing all return fields (policy_rate, CPI_yoy, M2_growth, etc.). Single parameter with complete schema coverage and clear annotations make this fully specified for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single 'countries' parameter. Description adds an explicit code example (getMacroData({ countries: 'US,EU,JP' })) that clarifies invocation syntax and comma-separated formatting, enhancing the schema definition.
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?
Specific verb 'Fetch' + comprehensive resource list (macroeconomic fundamentals including rates, CPI, M2, etc.). Distinguishes from siblings like get_fx_rates or get_commodities by emphasizing the unique rate_environment signal (HAWKISH/DOVISH/NEUTRAL) and broad fundamental coverage.
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 'Use this tool when:' section with four specific scenarios covering investment decisions, macro trading alignment, inflation assessment, and economic expansion analysis. Provides clear contextual triggers for agent selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_moversARead-onlyIdempotentInspect
Get today's top gaining, top losing, and most actively traded stocks with volume surge signals and percentage moves.
Use this tool when:
A trading agent needs to find momentum plays or mean-reversion setups
You want to identify stocks with unusual volume (potential news catalyst)
A morning brief agent is generating a daily market overview
An agent needs to know which sectors are leading or lagging today
Returns per stock: ticker, company_name, price, change_pct, volume, avg_volume, volume_surge_ratio, sector, catalyst (if detected).
Example: getMarketMovers({ type: "gainers", limit: 5 }) → top 5 gainers today with catalyst summary. Example: getMarketMovers({ type: "active" }) → highest-volume stocks with volume vs 30-day average.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Mover category: 'gainers' (top % price increase today), 'losers' (top % decline), 'active' (highest dollar volume traded), 'all' (all three categories combined). | all |
| limit | No | Number of stocks to return per category (e.g. top 10 gainers, top 10 losers). Range: 1-50. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/destructive hints, so the description adds crucial behavioral context: specific cost disclosure ('$0.005 USDC per call'), detailed return value schema (ticker, volume_surge_ratio, catalyst detection), and calculation methodology (volume vs 30-day average). Deducted one point for lacking rate limits or error condition documentation.
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?
Perfectly structured with clear information hierarchy: one-line summary → usage scenarios → return value documentation → concrete examples → cost. No filler text; every sentence provides actionable information for agent decision-making.
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?
Excellent compensation for missing output schema by explicitly documenting all return fields (ticker, company_name, volume_surge_ratio, catalyst, etc.). Includes cost information critical for API tools. Would benefit from rate limit or caching notes, but adequately complete for a market data retrieval 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% with excellent descriptions for 'type' (including enum semantics) and 'limit'. The description adds value through concrete JSON examples showing valid parameter combinations (e.g., { type: 'gainers', limit: 5 }), which clarifies usage patterns beyond the schema definitions.
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 opening sentence provides a specific verb ('Get') and resource ('top gaining, top losing, and most actively traded stocks'), along with specific data points returned (volume surge signals, percentage moves). It clearly distinguishes from siblings by specifying 'stocks' (excluding crypto/commodities) and focusing on intraday momentum/volume rather than sentiment or fundamentals.
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 an explicit 'Use this tool when:' section with four specific scenarios (trading agents seeking momentum, identifying volume catalysts, morning brief generation, sector leadership analysis). Lacks explicit 'when not to use' guidance or named sibling alternatives, though the stock-specific scope implicitly differentiates it from crypto/commodity tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_sentimentARead-onlyIdempotentInspect
Get the current market risk appetite: Fear & Greed index, global crypto market data, live asset prices, trending tokens, and a RISK_ON/RISK_OFF signal.
Use this tool when:
An agent needs to determine whether market conditions favour risk-on (buy) or risk-off (sell/hedge) positioning
A trading agent wants a high-level market pulse before executing orders
A portfolio agent is deciding whether to increase or reduce exposure
You need to know what tokens/assets are trending and why
Returns: fear_greed_index (0-100, 0=extreme fear), global_market_cap, BTC_dominance, asset_prices, 24h_changes, trending_tokens, overall_signal (RISK_ON/RISK_OFF/NEUTRAL).
Example: getMarketSentiment({ assets: "BTC,ETH,GOLD,SPY" }) during high VIX → returns RISK_OFF signal with fear index of 22.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | Comma-separated list of asset tickers to fetch live prices for (e.g. 'BTC,ETH,GOLD,SOL,SPY'). Supports crypto tickers, stock tickers, and commodities. | BTC,ETH,VIRTUAL,GOLD,SOL |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/safe, but description adds critical cost information ('$0.005 USDC per call') and detailed return structure (fear_greed_index 0-100 scale, specific fields). Includes behavioral example showing RISK_OFF during high VIX. Minor gap: no rate limits or latency mentioned.
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?
Excellent structure with clear section headers (Use this tool when, Returns, Example, Cost). Front-loaded purpose statement. Every sentence delivers distinct value—no repetition of schema or annotation data. Appropriate length for complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but description compensates by exhaustively listing return fields with formats (fear_greed_index 0-100, overall_signal values). Cost disclosure included. Missing: pagination details if many assets requested, or error scenarios. Adequate for 1-parameter read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage ('Comma-separated list of asset tickers...'), establishing baseline 3. Description includes usage example ('getMarketSentiment({ assets: "BTC,ETH,GOLD,SPY" })') reinforcing format, but does not add semantic depth (e.g., max tickers, validation rules) beyond what schema already provides.
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?
Opens with specific verb 'Get' and resource 'market risk appetite', listing exact outputs (Fear & Greed index, RISK_ON/RISK_OFF signal). Clearly distinguishes from sibling tools like get_fear_index (narrower scope) by positioning as comprehensive market pulse.
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 'Use this tool when:' section with four specific scenarios (risk positioning, trading pulse, portfolio exposure, trending tokens). Provides clear decision criteria for when to select this over specialized siblings like get_trading_signal or get_market_movers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_merger_activityARead-onlyIdempotentInspect
Track merger and acquisition (M&A) activity: announced deals, rumoured targets (based on options activity and news signals), deal premiums, regulatory status, and sector consolidation trends.
Use this tool when:
A trading agent wants to identify potential M&A targets for event-driven trades
A research agent is building a sector consolidation thesis
You need to know about pending regulatory approvals for major deals
An agent is assessing whether a company is an acquisition target or acquirer
Returns per deal: acquirer, target, deal_value_usd, premium_pct, sector, status (RUMOURED/ANNOUNCED/PENDING_REGULATORY/CLOSED/WITHDRAWN), regulatory_risk, synergy_rationale.
Example: getMergerActivity({ sector: "ai", days: 30 }) → Google/HubSpot rumoured ($35B), Microsoft/gaming regulatory, 3 AI startups acquired.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to scan for M&A announcements and rumours. Use 7 for recent deals, 30 for monthly deal flow, 90-180 for quarterly trend analysis. Range: 1-180. | |
| sector | No | Industry sector to focus M&A intelligence on. Options: 'tech', 'ai', 'finance', 'healthcare', 'energy', 'telecom', 'media', 'retail', 'all'. Use 'ai' to track AI startup acquisitions. | tech |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/idempotent safety properties, but the description adds critical cost information ($0.005 USDC per call) not present in structured fields. It also discloses return field structure and data sources (options activity, news signals). Could mention caching behavior or rate limits for a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear information hierarchy: purpose → usage conditions → return schema → example → cost. No filler text; every sentence conveys distinct operational context (e.g., 'based on options activity' explains rumour methodology).
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 100% schema coverage and comprehensive annotations, the description compensates for missing output_schema by enumerating all return fields (acquirer, target, deal_value_usd, etc.) and providing a realistic example output. Cost disclosure completes the operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with excellent field descriptions, establishing baseline 3. The description adds value through the concrete invocation example showing camelCase function naming and realistic parameter values ('ai', 30), helping the agent map tool to execution syntax beyond the raw 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 specific verb+resource ('Track merger and acquisition activity') and immediately details the scope (announced deals, rumoured targets, premiums, regulatory status). It clearly distinguishes from sibling tools like get_funding_rounds (VC/private equity) or get_company_profile (general corporate data) by focusing specifically on M&A event tracking.
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 'Use this tool when:' section lists four specific agent scenarios (event-driven trading, sector consolidation thesis, regulatory approval checks, target/acquirer assessment). This provides clear selection criteria versus alternatives like get_b2b_intel or get_competitor_intel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_model_pricesARead-onlyIdempotentInspect
Compare AI model inference pricing across all major providers: input/output cost per 1M tokens, context window, capability tier, and best-value recommendations.
Use this tool when:
An AI agent needs to select the most cost-effective model for a given task
A cost-optimisation agent is comparing providers to reduce inference spend
You need to know the latest pricing after a provider update (prices change frequently)
An agent is building a routing layer and needs price/capability data to make routing decisions
Returns per model: provider, model_name, input_cost_per_1m_tokens, output_cost_per_1m_tokens, context_window_tokens, capability_tier, multimodal, best_for.
Example: getModelPrices({ providers: "openai,anthropic" }) → GPT-4o $5/$15 per 1M, Claude Sonnet $3/$15, Haiku $0.25/$1.25.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| providers | No | Comma-separated AI providers to include. Supported: 'openai', 'anthropic', 'google', 'mistral', 'groq', 'cohere', 'together', 'perplexity', 'xai'. Use 'openai,anthropic' for the two dominant providers. | openai,anthropic,google,mistral,groq |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly, idempotent), so description adds complementary context: temporal volatility ('prices change frequently'), explicit return field enumeration, and crucial operational cost ('$0.005 USDC per call'). Does not contradict annotations. Could mention caching or rate limits for a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excellent structure with front-loaded purpose statement followed by bulleted usage criteria, return value specification, concrete example, and cost disclosure. Every sentence provides distinct value; no redundancy with structured metadata.
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?
Absence of output schema is fully compensated by explicit enumeration of returned fields (provider, model_name, costs, etc.). Temporal context (frequent price changes) and economic context (per-call cost) make this complete for a data retrieval tool with simple inputs.
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 100% schema description coverage for the single 'providers' parameter, the schema already documents comma-separated format and supported values. The description provides a helpful usage example, but this reinforces rather than significantly extends the schema semantics, warranting the baseline score.
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?
Opens with specific verb 'Compare' + clear resource 'AI model inference pricing' + explicit scope 'across all major providers' and specific attributes (input/output cost, context window). Distinguishes from sibling tools like get_ai_news or get_ai_tokens by focusing specifically on pricing economics.
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 'Use this tool when:' section with four specific scenarios: cost-effective model selection, cost optimization, post-update price checks, and routing layer construction. Each bullet provides clear activation criteria distinguishing it from generic data retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nft_marketARead-onlyIdempotentInspect
Monitor the NFT market: floor prices, 24h/7d volume, blue-chip collection sentiment, wash trade detection, and overall market health signal.
Use this tool when:
A crypto agent wants to assess NFT market conditions as a risk-on/risk-off signal
You need floor prices for specific collections before making a purchase decision
An agent is detecting wash trading to identify manipulated volume
A DeFi agent wants to assess NFT-backed lending risks
Returns per collection: name, floor_price_eth/usd, 24h_volume_eth, 7d_change_pct, unique_buyers_24h, wash_trade_pct, listing_ratio, market_signal (BULLISH/BEARISH/NEUTRAL).
Example: getNftMarket({ collections: "cryptopunks,bored-ape-yacht-club" }) → CryptoPunks floor 48 ETH (-3.2%), BAYC 12 ETH (+8.1%).
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| collections | No | Comma-separated OpenSea collection slugs to analyse (e.g. 'cryptopunks', 'bored-ape-yacht-club', 'azuki', 'pudgy-penguins', 'doodles'). Use the exact OpenSea slug. | cryptopunks,bored-ape-yacht-club,azuki |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent hints, so description appropriately focuses on adding cost disclosure ('$0.005 USDC per call') and return value structure (detailed list of returned fields). No contradictions with annotations. Adds valuable context about data freshness (24h/7d metrics) not covered in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose statement, usage scenarios, return documentation, example, and cost. Front-loaded with the core action. Length is appropriate given the lack of output schema—every sentence serves a distinct purpose (scoping, usage guidance, return documentation, pricing).
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?
Excellent compensation for missing output schema by documenting return fields (name, floor_price_eth/usd, wash_trade_pct, etc.) and providing concrete example output. Includes cost information critical for agent decision-making. For a single-parameter tool, provides comprehensive context despite no structured output definition.
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 collections parameter is well-documented in the schema itself (OpenSea slugs, comma-separated format). Description includes usage example showing the parameter format, but this is illustrative rather than adding semantic meaning beyond the schema definition. Baseline 3 appropriate given high schema coverage.
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?
Opens with specific verb 'Monitor' + resource 'NFT market' and enumerates specific data points (floor prices, wash trade detection, market health signal). Distinguishes from siblings like get_crypto_derivatives or get_onchain_data via NFT-specific metrics (floor prices, collection sentiment) that are unique to this tool.
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 'Use this tool when:' section with four detailed scenarios (risk assessment, purchase decisions, wash trading detection, DeFi lending risks). Clear contextual guidance for selection, though lacks explicit 'when not to use' or named alternative tools from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_onchain_dataARead-onlyIdempotentInspect
Fetch live blockchain metrics: Bitcoin mempool congestion and fees, Ethereum gas oracle (slow/standard/fast), DeFi total value locked (TVL) across 500+ protocols, and top yield opportunities ranked by APY.
Use this tool when:
An agent is about to send a transaction and needs current gas/fee estimates
A DeFi agent wants to find the highest-yielding liquidity pools
You need to assess network health or congestion before executing on-chain
A macro agent wants on-chain data as a leading indicator of market activity
Returns: BTC (mempool_size, fee_sat_vb_fast, fee_sat_vb_slow, hashrate, block_time), ETH (gas_gwei_slow/standard/fast, base_fee), DeFi (total_TVL_usd, top_protocols, top_yield_opportunities).
Example: getOnchainData({ chain: "eth" }) → ETH gas: 12 gwei slow, 18 standard, 28 fast. Example: getOnchainData({ chain: "defi" }) → Top yield: Aave USDC 8.2% APY on Ethereum.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Blockchain data to fetch: 'btc' (Bitcoin fees, mempool, hashrate), 'eth' (Ethereum gas oracle, EIP-1559 base fee), 'defi' (DeFi TVL and yields across all chains), 'all' (everything combined). | all |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent), but the description adds crucial behavioral context: explicit cost disclosure ($0.005 USDC per call), detailed return value structure for each chain type compensating for the missing output schema, and 'live' data freshness indicators. Does not mention rate limits or caching behavior, preventing a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Perfectly structured with zero waste: single-sentence capability summary, bulleted usage conditions, explicit return field documentation, concrete examples, and cost disclosure. Despite the richness, it avoids verbosity; every section earns its place and supports agent decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description comprehensively documents return values for all three data categories (BTC, ETH, DeFi) including specific field names. It also includes critical operational context (cost per call) often omitted from tool descriptions. Complete for a multi-modal data fetching tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds value by providing concrete invocation examples (getOnchainData({ chain: 'eth' })) that demonstrate how parameter values map to specific behavioral outputs, clarifying the semantic difference between 'eth', 'btc', and 'defi' selections beyond the schema's enum descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb (Fetch) and comprehensively lists the exact resources covered (BTC mempool/fees, ETH gas oracle, DeFi TVL across 500+ protocols, yield opportunities). It clearly positions this as the broad on-chain metrics aggregator, distinguishing it from more specialized siblings like get_whale_tracker or get_token_unlocks through its explicit scope declaration.
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?
Excellent explicit guidance via 'Use this tool when:' followed by four distinct scenarios covering transaction preparation, DeFi yield hunting, network health assessment, and macro analysis. This provides clear selection criteria that help the agent choose this over alternatives like get_crypto_derivatives or get_defi_yields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_flowARead-onlyIdempotentInspect
Detect unusual options activity — large block trades, sweeps, and dark pool prints that may signal institutional positioning. Identifies volume/open-interest spikes and classifies them as bullish or bearish.
Use this tool when:
A trading agent wants to follow institutional options flow as a leading signal
You need to detect if smart money is buying calls (bullish) or puts (bearish) at scale
An agent is scanning for unusual activity before earnings or major events
You want to identify dark pool sweeps that suggest directional bets
Returns per flow: ticker, expiry, strike, type (CALL/PUT), premium_usd, volume, open_interest, vol_oi_ratio, trade_type (SWEEP/BLOCK), sentiment (BULLISH/BEARISH), time.
Example: getOptionsFlow({ symbol: "SPY", minPremium: 500000 }) → SPY $440 PUT sweep $2.1M premium — BEARISH. Example: getOptionsFlow({ symbol: "NVDA" }) → NVDA $900 CALL block $850k — BULLISH ahead of earnings.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Underlying stock or ETF ticker to scan for unusual options activity (e.g. 'SPY', 'QQQ', 'NVDA', 'TSLA', 'AAPL'). Use 'SPY' or 'QQQ' for broad market signals. | SPY |
| minPremium | No | Minimum total premium paid (in USD) for a trade to qualify as unusual/institutional. Use 100000 ($100k) for active stocks, 500000 ($500k) for high-conviction signals only. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false. The description adds critical behavioral context not in annotations: explicit cost disclosure ('$0.005 USDC per call'), detailed return value structure ('Returns per flow: ticker, expiry...'), and classification logic (bullish/bearish sentiment, sweep vs. block trade types). 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?
Excellent structure with purpose paragraph, bullet-pointed usage guidelines, return value specification, concrete examples, and cost disclosure. Every element earns its place; no redundant text. The examples efficiently demonstrate both input syntax and expected output interpretation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema exists, the description compensates fully by enumerating all returned fields (ticker, expiry, strike, type, premium_usd, etc.). It also discloses API costs and provides usage examples. Complete for a financial data tool with 2 parameters and complex return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds value through concrete examples showing parameter interaction: 'getOptionsFlow({ symbol: "SPY", minPremium: 500000 })' demonstrates the minPremium threshold concept and symbol format, adding semantic meaning beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool detects 'unusual options activity — large block trades, sweeps, and dark pool prints' with specific verbs (Detect, Identifies, classifies). It clearly distinguishes from siblings like get_crypto_derivatives or get_trading_signal by focusing specifically on institutional options flow and smart money positioning.
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 'Use this tool when:' section with four specific scenarios including following institutional flow, detecting smart money direction, and scanning before earnings. While highly detailed on when-to-use, it lacks explicit when-not-to-use guidance or named alternatives (e.g., vs. get_trading_signal).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_private_equityARead-onlyIdempotentInspect
Fetch private equity (PE) and venture capital (VC) deal flow: funding rounds, exits (IPOs and acquisitions), dry powder levels, sector focus shifts, and notable investor activity.
Use this tool when:
A research agent is tracking startup funding trends and investor activity
An agent wants to know which sectors VCs are currently prioritising
You need to assess private market valuations as a leading indicator for public markets
A BD agent is identifying well-funded startups as potential customers or partners
Returns per deal: company, sector, round_type (SEED/A/B/C/GROWTH), amount_usd, lead_investors, valuation_usd, date, country. Also returns: sector_heat_map, top_investors_by_deal_count, dry_powder_estimate.
Example: getPrivateEquity({ sector: "ai", days: 30 }) → 47 AI funding rounds this month, $2.8B total — Series A median $12M.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to include private equity and venture capital deals. Use 7 for recent activity, 30 for monthly trend, 90-180 for quarterly analysis. Range: 1-180. | |
| sector | No | Industry sector to filter PE/VC deals for. Options: 'ai', 'fintech', 'biotech', 'deeptech', 'crypto', 'climate', 'defense', 'all'. Use 'ai' to track AI/ML startup investment. | ai |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm read-only, non-destructive, idempotent behavior. The description adds critical cost information ('$0.005 USDC per call') not present in annotations, and details return structure (per-deal fields and aggregate metrics) compensating for the missing output schema. 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?
Excellent structure with clear sections: purpose statement, usage contexts, return value specification, example, and cost. Every sentence delivers value. The example is succinct and illustrative. No redundancy or filler content.
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?
Comprehensive for a 2-parameter tool with no output schema. The description fully documents return values (both individual deal fields and aggregate analytics), usage contexts, and operational cost. Combined with complete parameter annotations, no gaps remain for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with clear defaults and ranges. The description provides a concrete usage example (getPrivateEquity({ sector: 'ai', days: 30 })) that reinforces parameter interaction, but does not add substantial semantic meaning beyond what the schema already provides. Baseline 3 is appropriate given high schema coverage.
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 ('Fetch') and clearly defines the resource (PE/VC deal flow) plus specific data points covered (funding rounds, exits, dry powder, sector shifts). It distinguishes from sibling 'get_funding_rounds' by emphasizing broader scope beyond just funding rounds.
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 'Use this tool when:' section provides four distinct, concrete scenarios covering research, sector analysis, market indicators, and business development contexts. While highly specific, it lacks explicit 'when not to use' guidance or named alternatives (e.g., does not reference get_funding_rounds for narrower queries).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_real_estate_marketARead-onlyIdempotentInspect
Fetch US real estate market data: median home prices, mortgage rates (30yr fixed, 15yr fixed, ARM), active inventory, days-on-market, affordability index, and regional price trends.
Use this tool when:
A macro agent needs housing data to assess consumer wealth effects and inflation
A REIT investment agent wants to understand regional real estate trends
You need mortgage rate data as a leading indicator for housing demand
An agent is assessing the impact of Fed rate decisions on the housing market
Returns: median_sale_price, 12m_change_pct, mortgage_rate_30yr, mortgage_rate_15yr, active_inventory, months_of_supply, days_on_market, affordability_index, regional_breakdown (top 10 metros).
Example: getRealEstateMarket({ region: "national" }) → US median $425k (+4.2%), 30yr mortgage 7.1%, 3.2 months supply. Example: getRealEstateMarket({ region: "miami" }) → Miami median $620k (+8.1%), inventory down 15%.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | US region or metro area to get real estate data for. Options: 'national', 'new-york', 'los-angeles', 'miami', 'chicago', 'houston', 'dallas', 'phoenix', 'seattle', 'denver', 'austin'. Use 'national' for the overall US market. | national |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, confirming safe read operations. The description adds critical behavioral context not in annotations: the cost ($0.005 USDC per call) and detailed return value documentation (since no output schema exists). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear sections: data overview, usage conditions, return fields, examples, and pricing. Every sentence earns its place; the return value documentation is necessary given the absence of an output schema, and the examples demonstrate realistic usage patterns 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?
Given the lack of an output schema, the description comprehensively documents all return fields (median_sale_price, mortgage_rate_30yr, regional_breakdown, etc.) and provides concrete examples of expected outputs. Combined with cost disclosure and usage guidelines, this provides complete contextual coverage for a single-parameter data retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the 'region' parameter fully documented including all valid options ('national', 'new-york', 'miami', etc.). The description provides usage examples but does not add semantic meaning beyond the comprehensive schema documentation, meeting the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool 'Fetch US real estate market data' and enumerates specific metrics (median home prices, mortgage rates, ARM, inventory, days-on-market, affordability index). This clearly distinguishes it from sibling tools like get_macro_data or get_commodities by specifying housing-specific indicators.
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 'Use this tool when:' section provides four explicit scenarios: macro agents assessing consumer wealth, REIT investment analysis, mortgage rate leading indicators, and Fed rate decision impacts. This directly contrasts with alternatives like get_macro_data by specifying exactly which analytical contexts require housing-specific data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sec_filingsARead-onlyIdempotentInspect
Search real-time SEC filings (8-K, 10-K, 10-Q, S-1) for AI/autonomous operations mentions. Returns filings ranked by AI-relevance score with key extracted passages.
Use this tool when:
A research agent needs to know what public companies are saying about AI in their official filings
An investor agent is identifying companies making material AI investments or disclosures
You need to detect new AI risk factors companies are disclosing to regulators
A compliance agent is monitoring for AI-related regulatory disclosures
Returns per filing: company, ticker, form_type, filed_date, ai_relevance_score (0-100), key_passages, ai_keywords_found, material_disclosure (YES/NO), filing_url.
Example: getSecFilings({ query: "large language model autonomous agents", forms: "10-K", days: 30 }) → MSFT 10-K: score 94, "$13B AI capex" passage flagged.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days back to search for relevant SEC filings. Use 1-7 for breaking disclosures, 30 for monthly review, 90 for quarterly sweep. Range: 1-90. | |
| forms | No | Comma-separated SEC form types to include. Common types: '8-K' (material events, breaking), '10-K' (annual report), '10-Q' (quarterly), 'S-1' (IPO filing), 'DEF 14A' (proxy statement). Use '8-K,10-K' for the most important filings. | 8-K |
| query | No | Keywords to search within SEC filing text (e.g. 'large language model autonomous agents', 'artificial intelligence capital expenditure', 'AI risk'). Supports boolean operators: 'AI AND autonomous AND revenue'. | agentic AI autonomous |
| minScore | No | Minimum AI-relevance score threshold (0-100) to filter results. Use 0 for all matches, 50 for meaningfully AI-focused filings, 80+ for filings where AI is a primary topic. Range: 0-100. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent operations. The description adds critical behavioral context not in annotations: the $5 USDC cost per call (essential for agent resource planning), the AI-relevance scoring mechanism (0-100), and detailed return structure (since no output schema exists). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sectioning (purpose, usage conditions, returns, example, cost). While information-dense, every element serves a necessary function—particularly the cost disclosure and return field documentation required due to the missing output schema. Minor verbosity in the returns list prevents a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description comprehensively enumerates return fields (company, ticker, ai_relevance_score, key_passages, etc.). It covers the domain (SEC forms), the specific AI focus, the cost model, and provides concrete search examples. This is complete for a financial data retrieval tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the structured schema already fully documents all four parameters including usage guidance (e.g., 'Use 1-7 for breaking disclosures'). The description provides a helpful usage example but does not need to compensate for schema gaps, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise action ('Search real-time SEC filings') and specific resource scope ('8-K, 10-K, 10-Q, S-1') focused on 'AI/autonomous operations mentions.' It clearly distinguishes from siblings like get_ai_news (news vs regulatory filings) and get_company_profile (general info vs AI-specific SEC text).
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 'Use this tool when:' section provides four explicit, role-based scenarios (research agent, investor agent, compliance agent) that clearly delineate when to use this versus alternatives like check_ai_compliance or get_ai_patents. It explicitly states the intent (detecting AI risk factors, material investments) rather than leaving it implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semiconductor_supplyARead-onlyIdempotentInspect
Get semiconductor supply chain intelligence: TSMC/Samsung/Intel fab utilisation rates, chip lead times by process node, shortage/oversupply signals, and AI chip availability.
Use this tool when:
A tech sector investor needs to assess semiconductor supply constraints impacting NVDA/AMD/TSMC
A supply chain agent is evaluating chip availability risk for hardware products
You need to understand AI chip (H100/A100) supply vs demand dynamics
A macro agent is assessing tech sector capacity constraints as a growth limiter
Returns per node: process_node, leading_fab, utilisation_pct, lead_time_weeks, supply_signal (SHORTAGE/BALANCED/OVERSUPPLY), primary_customers, capacity_expansion_plans.
Example: getSemiconductorSupply({ nodes: "3nm,5nm" }) → TSMC 3nm: 95% utilisation, 52-week lead time (AI GPU shortage).
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | No | Comma-separated semiconductor process nodes to analyse. Use '3nm,5nm' for cutting-edge AI chips (NVDA H-series, Apple Silicon), '7nm' for mainstream high-performance, '28nm' for mature automotive/IoT nodes. | 3nm,5nm,7nm,28nm |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety profile (readOnly, non-destructive, idempotent) and open-world hint. The description adds critical behavioral context missing from annotations: explicit cost ($0.005 USDC per call), detailed return value structure (listing all fields like utilisation_pct and supply_signal), and a concrete example showing expected output format. This compensates well for the lack of output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Exceptionally well-structured with clear visual hierarchy: resource definition → usage scenarios → return specification → example → cost. Every sentence serves a distinct purpose. Information is front-loaded with the core capability stated immediately. No redundancy or filler content.
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 single-parameter tool with 100% schema coverage but no output schema, the description achieves comprehensive completeness. It manually documents the return structure field-by-field, provides a concrete example output, specifies pricing, and details four distinct usage personas. Nothing essential is missing given the tool's scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with detailed explanations of the 'nodes' parameter syntax and valid values (3nm, 5nm, etc.). With full schema coverage, baseline is 3. The description reinforces this with an example call but does not add substantial semantic meaning beyond what the schema already provides.
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 ('Get') and comprehensively lists the resources covered (TSMC/Samsung/Intel fab rates, lead times, shortage signals, AI chip availability). It clearly distinguishes from siblings like get_commodities by emphasizing fabrication-specific metrics (process nodes, fab utilisation) rather than generic commodity pricing.
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 an explicit 'Use this tool when:' section with four distinct, concrete scenarios (tech investors, supply chain agents, AI chip demand analysis, macro constraints). This offers excellent contextual guidance. Lacks explicit 'when-not' guidance or named sibling alternatives (e.g., 'use get_commodities for general materials'), preventing a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shipping_ratesARead-onlyIdempotentInspect
Get global shipping and freight rates: Baltic Dry Index (BDI) for bulk shipping, Freightos container spot rates for major routes, port congestion indices, and supply chain stress signals.
Use this tool when:
A macro agent wants shipping rates as a leading indicator of global trade volumes
A supply chain risk agent is monitoring for port congestion or freight disruptions
You need to assess inflation pressures from elevated freight costs
An agent is monitoring the impact of geopolitical events (Red Sea, Panama Canal) on shipping routes
Returns: baltic_dry_index, BDI_change_pct, container_rates (per route, per 40ft container), port_congestion_indices, supply_chain_stress_score, key_disruptions.
Example: getShippingRates({ routes: "asia-europe,transpacific" }) → Asia-Europe $4,200/40ft (+18%), BDI 1,840 (-3.2%).
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| routes | No | Comma-separated shipping routes to include. Supported: 'asia-europe', 'transpacific' (Asia-US West Coast), 'transatlantic' (Europe-US), 'asia-australia', 'intra-asia'. Use 'asia-europe' to monitor Red Sea/Suez Canal impacts. | asia-europe,transpacific,transatlantic |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnly/idempotent), but the description adds crucial behavioral context: specific return fields (baltic_dry_index, container_rates, etc.), cost per call ($0.005 USDC), and input/output examples. 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?
Perfectly structured with clear sections (purpose, usage conditions, returns, example, cost). Every sentence earns its place; the bullet points enhance scannability without 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 lacking an output schema, the description comprehensively documents return values, provides realistic examples, discloses operational costs, and maps use cases to the specific data returned. Complete for a single-parameter data retrieval 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?
With 100% schema coverage, the baseline is 3. The description adds value by providing a concrete usage example showing comma-separated route syntax and linking inputs to example output values ('Asia-Europe $4,200/40ft'), enhancing semantic understanding 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 specific verb ('Get') and clearly identifies the resource ('global shipping and freight rates'), enumerating specific indices (BDI, Freightos, port congestion) that distinguish it from sibling tools like get_commodities or get_macro_data.
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 excellent contextual guidance through four specific 'Use this tool when' scenarios covering macro analysis, supply chain risk, inflation assessment, and geopolitical monitoring. Lacks explicit 'when-not' exclusions or named alternative tools, preventing a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_space_weatherARead-onlyIdempotentInspect
Fetch NOAA space weather data: current KP index (geomagnetic storm intensity), solar flux (F10.7), X-ray flare class, and active NOAA alerts for solar radiation storms and geomagnetic disturbances.
Use this tool when:
An agent is assessing risks to satellite communication or GPS navigation accuracy
A risk agent needs to know if HF radio communication is disrupted (affects aviation/shipping)
You want to monitor for G3+ geomagnetic storms that can damage power grid infrastructure
A research agent is correlating space weather events with financial market anomalies
Returns: kp_index (0-9, 5+ = storm), storm_level (G1-G5), solar_flux_f107, xray_class (A/B/C/M/X), active_alerts, aurora_visibility_latitude, satellite_drag_risk.
Example: getSpaceWeather({ alerts: true }) → KP 7.2 (G3 SEVERE storm), X1.2 flare detected — GPS degraded at high latitudes.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| alerts | No | Set to true to include active NOAA geomagnetic storm and solar radiation alerts in the response (recommended). Set to false for data-only without alert notifications. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only/idempotent, but description adds critical cost disclosure ('$0.005 USDC per call') and compensates for missing output schema by documenting all return fields (kp_index 0-9 scale, storm_level G1-G5, etc.) plus concrete example output. 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?
Perfectly structured with clear sections: Purpose → Usage Conditions → Return Values → Example → Cost. Every sentence earns its place; even the return value documentation is compact yet complete. Excellent information density without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking output schema, description is fully complete due to exhaustive return field documentation (7 fields explained with ranges/enumerations) and realistic example. Single parameter thoroughly covered. Appropriate for tool complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage of the single 'alerts' parameter, establishing baseline 3. Description adds value by contextualizing what alerts contain ('solar radiation storms and geomagnetic disturbances') and providing executable example syntax getSpaceWeather({ alerts: true }).
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?
Opens with specific verb 'Fetch' and clear resource 'NOAA space weather data'. Enumerates specific data points (KP index, solar flux, X-ray flare class) that clearly distinguish it from sibling tools like get_earthquake_monitor or get_commodities. Zero ambiguity about function.
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 'Use this tool when:' section with four distinct scenarios (satellite/GPS risk, HF radio disruption, power grid monitoring, financial market correlation). Provides concrete thresholds (G3+ storms) and affected domains (aviation/shipping) that enable precise agent selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stablecoinsARead-onlyIdempotentInspect
Monitor stablecoin health: peg deviation from $1.00, supply changes (minting/burning), market cap, backing composition, and depeg risk score.
Use this tool when:
A DeFi agent needs to verify a stablecoin is holding its peg before using it in a protocol
You want to detect early warning signs of a stablecoin collapse (e.g. UST-style depeg)
A risk agent is assessing counterparty risk in stablecoin-denominated positions
An agent is comparing stablecoin options for yield farming and needs health data
Returns per token: symbol, current_price, peg_deviation_pct, market_cap_usd, 24h_supply_change_pct, backing_type (FIAT/CRYPTO/ALGORITHMIC), depeg_risk_score (0-100, 100=imminent), audit_status.
Example: getStablecoins({ tokens: "USDT,USDC,DAI" }) → USDT $1.001 (+0.1%), USDC $0.9998 (-0.02%), depeg_risk: LOW.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| tokens | No | Comma-separated stablecoin symbols to monitor. Supported: 'USDT', 'USDC', 'DAI', 'FRAX', 'TUSD', 'BUSD', 'PYUSD', 'CRVUSD', 'LUSD'. Use 'USDT,USDC' for the most critical pair. | USDT,USDC,DAI,FRAX |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds critical behavioral context not in annotations: the cost ('$0.005 USDC per call') and comprehensive return value documentation (symbol, current_price, peg_deviation_pct, etc.) since no output schema exists. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excellent structure: one-sentence purpose summary, bullet-pointed usage guidelines, structured return value list, concrete example, and cost note. Every sentence serves a distinct function; information is front-loaded and scannable with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description comprehensively documents all return fields with data types and scales (e.g., 'depeg_risk_score (0-100, 100=imminent)'). It also includes cost information and usage examples, making it complete for a single-parameter data retrieval 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?
With 100% schema description coverage, the baseline is 3. The description adds value by providing a concrete example call (getStablecoins({ tokens: 'USDT,USDC,DAI' })) that clarifies the expected input format and usage pattern beyond the schema's technical description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Monitor') and comprehensively lists the resource (stablecoin health) including specific metrics tracked (peg deviation, supply changes, market cap, backing composition, depeg risk score). It clearly distinguishes from siblings like get_defi_yields or get_crypto_derivatives by focusing on health/peg stability rather than yields or derivatives data.
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 'Use this tool when:' section lists four distinct, concrete scenarios (DeFi peg verification, collapse detection, counterparty risk assessment, yield farming comparison). This provides clear guidance on when to select this tool over alternatives like get_defi_yields or get_onchain_data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_token_unlocksARead-onlyIdempotentInspect
Track upcoming token vesting unlock events that could create selling pressure on crypto assets. Returns unlock schedule, percentage of circulating supply, and estimated market impact.
Use this tool when:
A crypto trading agent wants to avoid holding tokens with imminent large unlocks
You need to identify potential sell-pressure events before they hit the market
An agent is assessing whether a token's price weakness is unlock-related
A portfolio agent is timing entries around unlock-driven dips
Returns per event: token_name, ticker, unlock_date, unlock_amount, pct_of_circulating_supply, estimated_value_usd, unlock_type (TEAM/INVESTOR/ECOSYSTEM), impact_signal (HIGH/MEDIUM/LOW).
Example: getTokenUnlocks({ days: 14 }) → ARB unlock in 3 days: 1.1B tokens (8% supply, $750M) — HIGH pressure signal.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days ahead to scan for token unlock events. Use 7 for the immediate week, 30 for monthly planning, 90-180 for long-term scheduling. Range: 1-180. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant value beyond annotations: discloses pricing ('$0.005 USDC per call'), details return structure (token_name, unlock_type, impact_signal fields), and provides concrete input/output example. Since no output schema exists, the return value documentation is critical behavioral context not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear visual hierarchy: purpose statement → usage bullets → return specification → example → cost. Every section earns its place; no redundant filler. Front-loaded with core value proposition ('selling pressure').
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?
Comprehensive for a single-parameter tool lacking output schema. Description compensates fully by enumerating all return fields and providing realistic example output. Covers cost, use cases, and data semantics. Annotations cover safety profile (readOnly/idempotent), leaving description free to focus on business logic.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for the 'days' parameter including usage guidance ('Use 7 for immediate week...'). Description references the parameter only in the example call, adding minimal semantic value beyond the schema's comprehensive documentation. Baseline 3 appropriate given schema carries full load.
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?
Opens with specific verb ('Track') and resource ('token vesting unlock events'), immediately clarifying scope within crypto asset analysis. Distinguishes clearly from sibling tools like get_whale_tracker or get_onchain_data by focusing specifically on vesting schedules and selling pressure events.
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 'Use this tool when:' section lists four specific scenarios (avoiding unlocks, identifying pre-market sell pressure, diagnosing price weakness, timing entries). Provides clear contextual boundaries distinguishing it from general market data tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trading_signalARead-onlyIdempotentInspect
Generate a BUY, SELL, or HOLD signal for a trading instrument with full technical analysis: entry price, stop loss, take profit, risk-reward ratio, RSI, EMA stack, ATR, and confidence score.
Use this tool when:
A trading agent needs a concrete entry/exit recommendation before placing a trade
You want to validate a trading idea with technical indicators
An agent is running a systematic trading strategy and needs fresh signals
You need to know the current momentum, trend direction, and volatility for a symbol
Supported symbols: XAUUSD (Gold), BTCUSD, ETHUSD, EURUSD, GBPUSD, USDJPY, NVDA, SPY, QQQ, and most major FX/crypto pairs. Supported timeframes: 1m, 5m, 15m, 30m, 1h, 4h, 1d, 1w.
Returns: signal (BUY/SELL/HOLD), entry_price, stop_loss, take_profit, risk_reward_ratio, confidence (0-100), RSI, EMA_20, EMA_50, ATR, trend_direction, key_levels.
Example: getTradingSignal({ symbol: "XAUUSD", timeframe: "1h" }) → BUY at 2340, SL 2320, TP 2380, RR 2.0, confidence 78.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | No | Trading instrument symbol in standard format (e.g. 'XAUUSD' for Gold, 'BTCUSD' for Bitcoin, 'EURUSD' for Euro/Dollar, 'NVDA' for Nvidia stock). Case-insensitive. | XAUUSD |
| timeframe | No | Chart timeframe for the signal analysis. Options: '1m' (scalping), '5m', '15m', '30m', '1h' (intraday), '4h' (swing), '1d' (daily), '1w' (weekly). Higher timeframes = higher reliability. | 1h |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and idempotentHint=true. The description adds critical cost information ('$0.005 USDC per call') not found in annotations, and comprehensively documents the return structure (11 specific fields including confidence scores and trend direction) despite the absence of an output schema. Deducted one point for lacking rate limits or cache duration details.
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?
Perfectly structured with logical flow: summary → usage conditions → supported inputs → return values → example → cost. Every sentence serves a distinct purpose. The example is appropriately specific without being verbose, and the cost disclosure is prominently placed for agent budget awareness.
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 complex financial tool with no output schema, the description compensates exceptionally well by enumerating all 11 return fields with their semantics (e.g., 'confidence (0-100)', 'BUY/SELL/HOLD'). The annotations cover the safety profile. Minor gap: no mention of error handling for invalid symbols or unavailable markets.
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 100% schema description coverage, the baseline is met. The description adds value by categorizing timeframes by trading style ('scalping', 'intraday', 'swing') and providing a concrete usage example (getTradingSignal({ symbol: 'XAUUSD'...)), which helps the LLM understand the expected calling pattern beyond the raw schema definitions.
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 opening sentence states the specific action ('Generate a BUY, SELL, or HOLD signal') and the resource ('trading instrument'), plus enumerates the specific technical analysis components included (RSI, EMA, ATR, etc.). This clearly distinguishes it from sibling data-fetching tools like 'get_fx_rates' or 'get_market_sentiment' which provide raw data rather than actionable entry/exit recommendations with calculated risk-reward ratios.
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 an explicit 'Use this tool when:' section with four specific scenarios (concrete entry/exit recommendations, validating trading ideas, systematic strategies, momentum analysis). It also lists supported symbols and timeframes, providing clear boundaries for valid inputs and implicitly contrasting with fundamental analysis tools like 'get_analyst_ratings' or 'get_earnings' in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_virtuals_protocolARead-onlyIdempotentInspect
Get live data on AI agents from the Virtuals Protocol ecosystem: token prices, market cap, 24h volume, trading activity, and rankings by agent activity score.
Use this tool when:
An agent is investing in or monitoring AI agent tokens in the Virtuals ecosystem
You need to track the performance of specific Virtuals agents (LUNA, AIXBT, etc.)
A research agent is analysing the on-chain AI agent economy
You want to identify the most active and valuable AI agents by market metrics
Returns per agent: agent_name, token_ticker, price_usd, market_cap, 24h_volume, 24h_change_pct, activity_score, holder_count, chain.
Example: getVirtualsProtocol({ limit: 10 }) → LUNA $0.84 (+12%), AIXBT $0.23 (-3%), top 10 by market cap.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of top Virtuals Protocol AI agents to return, ranked by market cap. Use 10 for a quick overview, 50-100 for comprehensive ecosystem view. Range: 1-100. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only/idempotent safety, while the description adds critical behavioral context not in structured fields: per-call cost ('$0.005 USDC per call'), detailed return schema (listing agent_name, token_ticker, etc. since no output schema exists), and an invocation example with expected output format. 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 with clear information hierarchy: purpose → usage conditions → return values → example → cost. Each sentence adds unique value (especially the cost disclosure and return field enumeration). Slightly dense but appropriate for the financial data 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?
Comprehensive despite lacking an output schema: it enumerates all return fields (agent_name, price_usd, holder_count, etc.), specifies the data refresh nature ('live data'), discloses API costs, and provides concrete usage examples. Fully sufficient for an agent to understand tool capabilities and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the 'limit' parameter (including range, default, and usage guidance), so the description does not need to compensate. The description mentions no parameter details, which is acceptable given the schema's completeness, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Get') and precisely identifies the resource ('Virtuals Protocol ecosystem' AI agents), listing exact data points (token prices, market cap, 24h volume). It clearly distinguishes from sibling tool 'get_ai_tokens' by specifying the Virtuals Protocol niche and naming specific agents like LUNA and AIXBT.
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 an explicit 'Use this tool when:' section with four specific scenarios covering investment monitoring, performance tracking, research analysis, and market ranking. While highly contextual, it does not explicitly name alternative tools (e.g., 'use get_ai_tokens for general AI tokens'), which would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_whale_trackerARead-onlyIdempotentInspect
Monitor on-chain large wallet movements: significant BTC and ETH transfers, exchange inflows (bearish — selling pressure) and outflows (bullish — self-custody), and smart money wallet behaviour.
Use this tool when:
A crypto trading agent wants to detect institutional buying or selling before it hits price
You need to know if large amounts of BTC/ETH are moving to exchanges (sell signal) or away (hold/buy signal)
An agent is tracking known whale wallets for directional intelligence
A DeFi agent wants to detect large capital flows into or out of protocols
Returns per transaction: wallet_address, amount_token, amount_usd, direction (EXCHANGE_INFLOW/EXCHANGE_OUTFLOW/WALLET_TO_WALLET), exchange (if applicable), timestamp, signal (BULLISH/BEARISH/NEUTRAL).
Example: getWhaleTracker({ chain: "btc", minValueUSD: 5000000 }) → 3 wallets moved 1,200 BTC ($78M) to Coinbase — BEARISH exchange inflow.
Cost: $5 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Blockchain to monitor for large wallet movements: 'btc' (Bitcoin only), 'eth' (Ethereum and ERC-20 tokens), 'all' (both chains combined for a complete whale picture). | all |
| minValueUSD | No | Minimum transaction value in USD to classify as a whale movement. Use 1000000 ($1M) for active monitoring, 5000000 ($5M) for major moves only, 50000000 ($50M) for institutional-scale movements. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnlyHint=true and idempotentHint=true, the description adds critical behavioral context not in structured fields: the $5 USDC per-call cost, the specific return schema (wallet_address, direction, signal enums), and the semantic meaning of signals (BULLISH/BEARISH/NEUTRAL). 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 with clear sections: summary, usage conditions, returns specification, example, and cost. Information is front-loaded with the core purpose first. While longer than minimal, every section earns its place by compensating for missing output schema and documenting cost implications.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully compensates for the absence of an output schema by enumerating all return fields (wallet_address, amount_token, signal, etc.) and providing a concrete example output. Essential commercial context (the $5 USDC cost) is disclosed, which is critical for agent decision-making when selecting between this and potentially free alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with detailed explanations of 'chain' enum values and 'minValueUSD' thresholds. The description adds value by providing a concrete usage example (getWhaleTracker({ chain: 'btc', minValueUSD: 5000000 })) that demonstrates how parameters interact to filter for institutional-scale Bitcoin movements.
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 ('Monitor') and clearly defines the resource (on-chain large wallet movements for BTC/ETH). It distinguishes from sibling 'get_onchain_data' by specifying the focus on whale wallets, exchange inflows/outflows, and smart money behavior with directional signals (bearish/bullish).
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 an explicit 'Use this tool when:' section with four specific scenarios covering crypto trading agents, exchange flow analysis, whale wallet tracking, and DeFi capital flow detection. This provides clear boundaries for when to select this tool over alternatives like 'get_crypto_derivatives' or 'get_market_sentiment'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_ai_economyARead-onlyIdempotentInspect
AI Economy Intelligence — aggregates ArXiv research + GitHub trending + job pivots + AI model prices + AI tokens + AI regulatory news into a comprehensive AI industry intelligence report.
Use this tool when:
An AI-focused research agent needs a complete picture of the AI ecosystem in one call
A VC agent wants to assess AI industry momentum across research, hiring, and markets
You need to track AI adoption signals across multiple dimensions simultaneously
A strategy agent is building an AI market thesis and needs comprehensive inputs
Returns: latest_arxiv_breakthroughs, github_trending_ai_repos, top_ai_hiring_companies, model_price_changes, ai_token_performance, regulatory_updates, ai_economy_momentum_score.
Example: runBundleAiEconomy({ focus: "agentic ai autonomous" }) → 3 breakthrough papers on agents, top hiring: Anthropic/OpenAI/Google, Claude price cut 15%.
Cost: $100 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | Keywords describing the AI economy area to focus the bundle on (e.g. 'agentic ai autonomous', 'multimodal llm vision', 'ai safety alignment', 'open source models'). This shapes the research and news filtering across all sub-calls. | agentic ai autonomous |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly/idempotent, which the description respects by using 'aggregates' (read operation). The description adds critical behavioral context not in annotations: the $100 USDC cost per call (essential for agent decision-making), the specific return fields (latest_arxiv_breakthroughs, github_trending_ai_repos, etc.), and an example input/output mapping. Minor gap: doesn't explicitly address the openWorldHint implications (real-time data volatility) or latency expectations for this expensive bundle operation.
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?
Highly structured with clear visual hierarchy: summary sentence, bullet-pointed usage conditions, returns list, code example, and cost disclosure. Every sentence earns its place. No fluff or tautology. The em-dash and bullet formatting maximize scannability for an AI agent parsing the text.
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 (aggregating 6+ disparate data sources) and lack of output schema, the description compensates well by explicitly listing return fields and providing a concrete example. The cost disclosure is critical for a paid tool. Minor gap: given the $100 cost and bundle nature, brief mention of error handling (partial failure behavior) or rate limiting would strengthen completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage for the single 'focus' parameter, the baseline is 3. The description provides usage examples ('agentic ai autonomous'), but these duplicate the examples already present in the JSON schema description. No additional semantic clarification (e.g., format constraints, interaction with the default value) is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'aggregates ArXiv research + GitHub trending + job pivots + AI model prices + AI tokens + AI regulatory news into a comprehensive AI industry intelligence report.' Specific verb (aggregates) + resource (AI economy data) + scope (comprehensive report) provided. It effectively distinguishes itself from siblings (e.g., get_arxiv_research, get_github_trending) by emphasizing the bundled, multi-dimensional nature of the output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Excellent explicit guidance via 'Use this tool when:' section listing four specific scenarios (AI research agent, VC agent, tracking adoption signals, strategy agent). Clearly positions against alternatives by specifying when to use this 'complete picture in one call' versus individual getter tools, and identifies target users/agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_company_deepARead-onlyIdempotentInspect
Company Deep Dive — runs full company profile + competitor intel + hedge fund positioning + analyst ratings + SEC filings for a single company. The most comprehensive company intelligence available.
Use this tool when:
An investor agent needs exhaustive due diligence on a company before a major investment decision
A sales agent wants a complete brief on a key prospect before an executive meeting
You need to understand a company's AI posture, competitive position, and institutional sentiment simultaneously
A research agent is writing a detailed company report
Returns: company_profile, competitive_position, hedge_fund_holdings, analyst_consensus, recent_sec_disclosures, ai_adoption_score, investment_thesis (BULL/BEAR/NEUTRAL), key_risks.
Example: runBundleCompanyDeep({ company: "nvidia", github: "nvidia" }) → Full NVDA brief: 94/100 AI score, held by 8 top funds, analyst PT $1,100, no SEC red flags.
Cost: $50 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| github | No | GitHub organisation slug for the company (e.g. 'nvidia', 'microsoft', 'openai'). Leave empty to auto-detect. | |
| company | Yes | Company name to run the full deep-dive intelligence bundle on (e.g. 'nvidia', 'microsoft', 'openai', 'stripe'). Use the company's common name. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations declare readOnlyHint=true and idempotentHint=true, the description adds critical behavioral context not in structured fields: the $50 USDC cost per call and the complete return value structure (company_profile, investment_thesis, etc.) to compensate for the missing output schema. It does not disclose latency or caching behavior, preventing a perfect score.
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?
Excellent structure with clear visual hierarchy: purpose statement → usage conditions → return values → example → cost. Every sentence earns its place; the cost disclosure is critical for agent decision-making, and the return list compensates for missing output schema. No redundancy with schema or annotations.
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 high complexity (8 distinct return components) and lack of output schema, the description adequately compensates by enumerating all return fields (ai_adoption_score, key_risks, etc.). It covers cost, usage contexts, and parameters. Minor gap: does not specify if data is real-time vs cached or typical response latency.
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 100% schema description coverage, the baseline is 3. The description adds value by providing a concrete code example (`runBundleCompanyDeep({ company: 'nvidia', github: 'nvidia' })`) that demonstrates the exact calling convention and parameter usage pattern, clarifying how the optional 'github' parameter relates to the company name.
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 phrase ('runs full company profile...') and explicitly lists the bundled resources (competitor intel, hedge fund positioning, SEC filings, etc.). It clearly distinguishes this from sibling tools like `get_company_profile` or `get_competitor_intel` by positioning itself as the comprehensive aggregation ('The most comprehensive company intelligence available').
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 an explicit 'Use this tool when:' section with four distinct scenarios covering investor due diligence, sales briefings, AI posture research, and detailed report writing. This provides clear persona-based guidance on when to select this bundle versus individual component tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_crypto_alphaARead-onlyIdempotentInspect
Crypto Alpha Pack — aggregates on-chain metrics + whale tracker + DeFi yields + AI tokens + crypto derivatives + stablecoin health into a single crypto market intelligence report.
Use this tool when:
A crypto trading agent needs a complete on-chain and derivatives picture before executing
A DeFi agent wants to simultaneously assess network health, yields, and market positioning
You need to identify alpha opportunities across the crypto ecosystem in one efficient call
A portfolio agent is rebalancing crypto holdings and needs a full market read
Returns: network_metrics (BTC/ETH), whale_movements, best_defi_yields, ai_token_performance, derivatives_sentiment (funding/OI), stablecoin_health, overall_crypto_signal.
Example: runBundleCryptoAlpha({ chains: "btc,eth" }) → BTC whale outflows (bullish), ETH gas 18gwei, AAVE 9% yield, BTC funding +0.04% (neutral), all stables pegged.
Cost: $25 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| chains | No | Comma-separated blockchain networks to include in the crypto alpha bundle. Supported: 'btc', 'eth', 'sol', 'base', 'arbitrum', 'polygon'. Use 'btc,eth' for the two dominant networks. | btc,eth |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only, idempotent, non-destructive traits. The description adds critical cost transparency ($25 USDC per call) that annotations cannot express, and documents the return structure (network_metrics, whale_movements, etc.) in lieu of an output schema. It could achieve a 5 by noting cache duration or rate limits, but the cost disclosure is highly valuable.
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 (purpose, usage conditions, returns, example, cost) and front-loads the value proposition. While lengthy, every sentence serves a distinct purpose; the bullet points efficiently compress multiple use cases. Minor redundancy exists between the opening sentence and the returns list.
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 high complexity (aggregating six distinct data sources) and absence of an output schema, the description compensates adequately by enumerating return fields and providing a concrete example output. The cost disclosure is essential for an expensive operation. It misses only operational details like cache TTL or rate limiting.
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 100% schema description coverage for the single 'chains' parameter—including default values, supported enums, and formatting guidance—the schema carries the full semantic load. The description includes an example call, but this merely echoes the schema's default value rather than adding new constraints or behavioral context.
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 compound verb ('aggregates') and exhaustively lists the six data domains bundled (on-chain metrics, whale tracker, DeFi yields, AI tokens, derivatives, stablecoin health). It clearly positions the tool as a comprehensive 'single report' alternative to individual data fetches, distinguishing it from siblings like get_whale_tracker or get_defi_yields.
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 explicit 'Use this tool when:' section provides four distinct scenarios (trading agent execution prep, DeFi health assessment, alpha opportunity identification, portfolio rebalancing) that contrast with using individual component tools. The phrase 'in one efficient call' signals when to prefer this over chaining sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_geopoliticalARead-onlyIdempotentInspect
Geopolitical War Room — the deepest geopolitical intelligence bundle: GDELT crisis monitoring + escalation scoring + oil/gold/USD/defence market impact modelling + OFAC sanctions alerts + Reddit/HackerNews viral signal processing. Built for agents that need to act on geopolitical events faster than the market.
Use this tool when:
A macro trading agent needs to react to geopolitical events with precise market impact estimates
A risk agent is stress-testing portfolio exposure to specific crisis scenarios
You need real-time crisis intelligence combined with actionable hedging recommendations
An agent is monitoring multiple conflict zones simultaneously for emerging risks
Returns: crisis_scores per region, escalation_trajectory (ESCALATING/STABLE/DE-ESCALATING), market_impact_estimates (oil/gold/USD/defence), OFAC_new_alerts, social_viral_signals (Reddit/HN sentiment), recommended_hedges, scenario_analysis.
Example: runBundleGeopolitical({ regions: "middle-east,ukraine", depth: "deep" }) → Middle East crisis 82/100 ESCALATING, oil +12% projected, gold +6%, short EUR hedge recommended.
Cost: $200 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Analysis depth: 'standard' (fast overview — 30s response, key metrics) or 'deep' (full GDELT + social signal processing — 60-90s response, complete scenario modelling). Use 'deep' for critical decisions. | deep |
| regions | No | Comma-separated geopolitical regions to cover in the war room bundle. Supported: 'middle-east' (Iran/Israel/Gulf), 'ukraine' (Russia/NATO), 'taiwan' (China/US), 'korea' (DPRK), 'global' (all). Specify multiple regions for a multi-theatre view. | middle-east,ukraine,taiwan |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/non-destructive hints. The description adds critical behavioral context not in annotations: the $200 cost per call, response time expectations (30s vs 60-90s implied in parameter descriptions), and detailed return value structure (crisis_scores, escalation_trajectory, recommended_hedges). It could improve by mentioning error handling or rate limiting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: value proposition, usage conditions, return values, example, and cost. Every sentence earns its place. Minor deduction for slightly marketing-heavy language ('War Room', 'deepest') in the opening, though appropriate for the high-stakes domain.
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 comprehensively documents return values (crisis_scores, market_impact_estimates, social_viral_signals, etc.). Combined with rich annotations and 100% parameter coverage, the description provides sufficient context for an agent to invoke this complex multi-source intelligence 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?
With 100% schema coverage, the schema carries the primary documentation load. The parameter descriptions within the schema are excellent (explaining 'standard' vs 'deep' timing and supported region values). The main description adds value through the concrete usage example showing the expected input 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 explicitly states the tool aggregates 'GDELT crisis monitoring + escalation scoring + oil/gold/USD/defence market impact modelling + OFAC sanctions alerts + Reddit/HackerNews viral signal processing'. It positions itself as 'the deepest geopolitical intelligence bundle', distinguishing it from the simpler sibling 'get_geopolitical_crisis' and broader bundles like 'run_bundle_macro_global'.
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 an explicit 'Use this tool when:' section with four specific scenarios (macro trading reaction, risk stress-testing, real-time crisis intelligence, multi-conflict monitoring). It explicitly names the target agent types (macro trading agent, risk agent) and includes cost information ($200 USDC) to guide invocation decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_macro_globalARead-onlyIdempotentInspect
Global Macro Pack — aggregates macro indicators + FX rates + interest rate environment + inflation data + consumer/labour data across multiple economies into a single macro intelligence report.
Use this tool when:
A macro-driven trading agent needs a complete global economic picture
A portfolio agent is assessing macro regime (risk-on/risk-off, hawkish/dovish) for asset allocation
You need to compare economic conditions across multiple countries simultaneously
A currency trading agent wants macro context for FX positioning
Returns per country: interest_rate, CPI, GDP_growth, unemployment, yield_curve, currency_strength, macro_regime (HAWKISH/DOVISH/NEUTRAL). Also: global_risk_score, recommended_asset_allocation.
Example: runBundleMacroGlobal({ countries: "US,EU,JP" }) → US HAWKISH (5.5% rate, 3.2% CPI), EU NEUTRAL, JP ultra-DOVISH — buy USD/JPY thesis.
Cost: $50 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| countries | No | Comma-separated ISO country codes to include in the global macro bundle. Supported: US, EU, GB, JP, CN, AU, CA, CH, SE, NO, BR. Use 'US,EU,JP' for the three major currency blocs. | US,EU,JP,GB,CN |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover readOnly/idempotent/destructive traits. Description adds critical behavioral context not in structured data: $50 USDC cost per call, detailed return structure (per country metrics + global risk score), and an example demonstrating thesis generation. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Excellent structure: one-sentence summary, bulleted usage conditions, returns specification, concrete example, and cost note. Every sentence earns its place; no fluff despite covering complex multi-dimensional functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema exists, description adequately compensates by listing return fields (interest_rate, CPI, macro_regime, etc.) and global outputs. Covers cost and usage contexts. Minor gap: does not mention data freshness/frequency or rate limits for this expensive ($50) operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage with detailed explanation of comma-separated format and supported codes. Description provides usage example (runBundleMacroGlobal({ countries: 'US,EU,JP' })) which reinforces syntax, but schema already fully documents semantics. Baseline 3 appropriate per calibration.
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 explicitly states it 'aggregates macro indicators + FX rates + interest rate environment + inflation data + consumer/labour data across multiple economies into a single macro intelligence report.' Specific verbs (aggregates) and comprehensive resource listing clearly distinguish it from siblings like get_macro_data (single indicator) or get_fx_rates (single asset class).
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 'Use this tool when:' section with four specific scenarios (macro trading agents, portfolio regime assessment, cross-country comparison, FX positioning). However, lacks explicit 'when-not' guidance or named sibling alternatives (e.g., 'use get_macro_data instead for single-country queries').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_market_intelARead-onlyIdempotentInspect
Market Intelligence Pack — combines trading signals + on-chain data + macro + options flow + insider trades + earnings into a comprehensive market intelligence report. Best value for active trading agents.
Use this tool when:
A trading agent wants a full-spectrum market view before sizing into positions
You need to cross-reference technical signals with institutional flow (options + insider)
An agent is doing pre-market prep and needs all data sources in one efficient call
A risk manager needs a complete market health assessment
Returns: trading_signals (per symbol), onchain_metrics, macro_environment, unusual_options_flow, insider_buying_selling, upcoming_earnings_risks.
Example: runBundleMarketIntel({ symbols: ["XAUUSD", "BTCUSD", "SPY"] }) → Full market intel for 3 assets: all signals, flows, and earnings in one response.
Cost: $25 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | List of trading symbols to include in the market intelligence bundle. Supports up to 10 symbols (e.g. ['XAUUSD', 'BTCUSD', 'EURUSD', 'SPY', 'NVDA']). Mix asset classes for a diversified market view. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only, idempotent, non-destructive properties. The description adds critical behavioral context not in annotations: the $25 USDC cost per call, the specific return structure (six data categories), and an invocation example showing exact syntax. 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?
Excellent information hierarchy: one-line summary, bullet-pointed usage conditions, return value enumeration, code example, and cost disclosure. Every sentence earns its place; no redundant fluff despite the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description compensates by enumerating all six return data categories. For a complex aggregation tool with financial cost implications, it covers pricing, rate limits (implied by 'up to 10 symbols'), return values, and usage scenarios comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter description. The description adds value by providing a concrete JavaScript-style invocation example (runBundleMarketIntel({ symbols: [...] })) demonstrating function naming conventions and parameter passing, plus context about supported asset classes in the example.
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 specific verbs ('combines', 'packs') and explicitly lists the six data sources aggregated (trading signals, on-chain data, macro, options flow, insider trades, earnings). It distinguishes itself from single-source sibling tools (get_trading_signal, get_onchain_data, etc.) by positioning as a comprehensive 'bundle' and noting 'Best value for active trading agents'.
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 'Use this tool when' section with four distinct scenarios (active trading position sizing, cross-referencing technical/institutional flow, pre-market prep, risk management). The cost disclosure ($25 USDC) and 'Best value' claim implicitly guide users toward individual data tools for narrow queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_sovereignARead-onlyIdempotentInspect
Sovereign Intelligence — the most comprehensive bundle: ALL 56 endpoints combined into a single sovereign-grade intelligence report. Full macro + geopolitical crisis + company + crypto + hedge funds + AI economy.
Use this tool when:
An agent needs the absolute maximum intelligence context in a single call
A sovereign fund or family office agent is doing top-level portfolio allocation
You need a complete world state snapshot for high-stakes decision making
A war-room agent is preparing a comprehensive intelligence brief for leadership
Returns: complete macro environment (all major economies), geopolitical crisis scores, crypto market health, AI economy metrics, hedge fund flows, top company signals — fully synthesised with a global risk score and recommended positioning.
Cost: $500 USDC per call (vs $100+ if all endpoints called separately).
| Name | Required | Description | Default |
|---|---|---|---|
| regions | No | Geopolitical regions to include in the sovereign intelligence sweep. Use 'all' for complete global coverage, or specify regions like 'middle-east,ukraine,taiwan' to focus the geopolitical section. | all |
| companies | No | Optional list of specific companies to include deep-dive analysis for in the sovereign bundle (e.g. ['nvidia', 'microsoft', 'tsmc']). Leave empty for market-wide company signals. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint=true, destructiveHint=false). Description adds crucial behavioral context not in annotations: the $500 USDC cost, that results are 'fully synthesised' with a global risk score, and the comprehensive scope of returned data. Minor gap: no mention of latency expectations for 56 aggregated calls or caching behavior.
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?
Perfectly structured with distinct sections (capability, usage triggers, returns, cost). Every sentence earns its place—no fluff. Front-loaded with the key differentiator (56 endpoints) and prioritizes cost information (critical for a $500 tool) at the end.
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 complex aggregation tool wrapping 56 endpoints, the description comprehensively details return contents (macro environment, geopolitical scores, crypto health, etc.) despite lacking an output schema. Cost transparency is excellent. Minor deduction for not mentioning rate limits, error handling partial failures, or latency expectations given the heavy aggregation workload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage with clear explanations for both parameters (regions defaulting to 'all', companies being optional). Description references these implicitly in the returns section but adds minimal semantic guidance beyond what the schema already provides. Baseline 3 appropriate given schema completeness.
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 explicitly states this combines 'ALL 56 endpoints' into a 'sovereign-grade intelligence report' and enumerates specific coverage areas (macro, geopolitical, crypto, AI economy, etc.). The 'most comprehensive' claim and $500 pricing clearly distinguishes it from sibling bundle tools (starter, macro_global, etc.) and individual endpoint tools.
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?
Excellent explicit guidance via 'Use this tool when:' section listing four specific high-stakes scenarios (sovereign funds, war-room briefs, maximum context needs). The cost comparison ($500 vs $100+ separately) explicitly guides trade-offs between this and calling individual endpoints or smaller bundles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_bundle_starterARead-onlyIdempotentInspect
AI Agent Starter Pack — calls compliance + market sentiment + trading signals + macro data + news in a single bundled request. Ideal for agents that need a broad market context snapshot.
Use this tool when:
An agent is initialising and needs a full market brief before starting work
You want 5 tools' worth of data in one call at a fraction of the individual cost ($0.50 vs $0.025 individual)
A morning brief agent is generating a daily market overview for a user
An agent needs to orient itself before deciding which deeper tools to call
Returns: compliance_status, market_sentiment (RISK_ON/OFF), trading_signal (for specified symbol), macro_overview (rates/inflation), top_5_news_stories.
Example: runBundleStarter({ symbol: "XAUUSD", assets: "BTC,ETH,GOLD" }) → Full gold trading context: macro environment, sentiment, signal, news — in one call.
Cost: $0.50 USDC per call (equivalent to 5 Tier 1 tools for $0.025 if called separately).
| Name | Required | Description | Default |
|---|---|---|---|
| assets | No | Comma-separated asset tickers to include in sentiment and market data section of the bundle (e.g. 'BTC,ETH,GOLD,SPY'). | BTC,ETH,GOLD |
| symbol | No | Primary trading symbol to generate signals for in the starter bundle (e.g. 'XAUUSD' for Gold, 'BTCUSD' for Bitcoin, 'EURUSD' for Euro/Dollar, 'SPY' for S&P 500 ETF). | XAUUSD |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds critical behavioral context not in annotations: the cost structure ($0.50 vs $0.025), the specific return payload structure (compliance_status, market_sentiment, etc.), and the scope limitation ('broad market context snapshot'). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Perfectly structured and front-loaded: opening sentence defines the bundle composition, second sentence states the ideal use case, followed by explicit usage conditions, return values, an example, and cost. Every sentence earns its place; the cost disclosure is essential information for an agent optimizing API spend.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema exists, the description compensates by explicitly listing all five return components (compliance_status, market_sentiment with enum values RISK_ON/OFF, trading_signal, macro_overview, top_5_news_stories). It covers the economic cost model, usage scenarios for a complex bundled operation, and clarifies the relationship between input parameters and output data.
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 100% schema description coverage, the baseline is 3. The description adds value by providing a concrete code example (runBundleStarter({ symbol: 'XAUUSD', assets: 'BTC,ETH,GOLD' })) that demonstrates how the two parameters interact to produce a 'Full gold trading context.' It also clarifies the economic rationale affecting parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool 'calls compliance + market sentiment + trading signals + macro data + news in a single bundled request'—a specific verb and compound resource. It distinguishes itself from the 50+ sibling tools (particularly the individual component tools like get_trading_signal and other bundles like run_bundle_macro_global) by positioning itself as the 'initialising' or 'morning brief' option for broad context rather than deep analysis.
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 an explicit 'Use this tool when:' section with four specific scenarios including initialization, cost optimization, daily brief generation, and orientation before deeper calls. It explicitly names the economic alternative ('5 Tier 1 tools for $0.025 if called separately'), giving the agent clear decision criteria for when to use this bundle versus individual tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_sanctionsARead-onlyIdempotentInspect
Screen a person, company, vessel, or crypto wallet against OFAC (US), EU, UN, and UK sanctions lists in a single call.
Use this tool when:
An agent is onboarding a new counterparty or customer and needs KYC/AML verification
A payment agent is about to send funds and must verify the recipient is not sanctioned
A trading agent needs to verify a counterparty before executing a trade
You need to check if a crypto wallet address is linked to sanctioned entities
Returns: match_probability (0-100), matched_lists, sanctioned_entity_details, risk_level (CLEAR/LOW/MEDIUM/HIGH/BLOCKED), and recommended_action.
Example: screenSanctions({ name: "Mahan Air", country: "IR" }) → HIGH risk, matched OFAC SDN list. Example: screenSanctions({ name: "0xdeadbeef...wallet" }) → checks Chainalysis OFAC list for crypto wallets.
Cost: $0.005 USDC per call.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full name of the entity to screen. Can be a person name, company name, vessel name, or crypto wallet address (e.g. '0x1234...abcd'). Partial names are supported but reduce accuracy. | |
| country | No | ISO 2-letter country code to narrow the search and reduce false positives (e.g. 'IR' for Iran, 'RU' for Russia, 'KP' for North Korea). Leave empty to search all jurisdictions. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish read-only, idempotent, non-destructive nature. Description adds critical cost transparency ('$0.005 USDC per call') and detailed return value specification (match_probability ranges, risk_level enum values, recommended_action) compensating for missing output schema. Does not mention authentication requirements.
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?
Excellent structure with clear section headers (implicit via colons), bullet points for use cases, and concise examples. Information is front-loaded with the core function first, followed by usage contexts, returns, and cost. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high compliance stakes and absence of structured output schema, the description comprehensively documents return fields (risk levels, match probability scale), cost implications, and jurisdictional coverage. Adequate for safe agent operation in a regulated domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with complete property descriptions. Description adds concrete usage examples ('Mahan Air' with country code 'IR', crypto wallet address format) that illustrate parameter semantics and expected responses, enhancing understanding beyond schema definitions.
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?
Opens with specific verb ('Screen') and comprehensive resource list ('person, company, vessel, or crypto wallet against OFAC, EU, UN, and UK sanctions lists'). Distinct from siblings which focus on market data, AI, and financial intelligence rather than compliance screening.
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 'Use this tool when:' section with four concrete scenarios (KYC onboarding, payment verification, trade counterparty checks, crypto wallet screening). Clear context for usage but lacks explicit 'when not to use' or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!