Fodda Context Layer
The Fodda MCP server gives AI agents access to expert-curated knowledge graphs, enabling search, traversal, evidence retrieval, trend intelligence, and deep research across retail, beauty, sports, and partner datasets.
Perform hybrid vector/keyword searches across knowledge graphs (
search_graph) and retrieve quantitative statistics or expert insights.Traverse graph relationships from seed nodes to discover related concepts (
get_neighbors) and fetch detailed node metadata (get_node).Retrieve source evidence, citations, and provenance for fact-checking (
get_evidence).Get structured macro overviews of PSFK trends with industry/sector filters (
psfk_overview).Access domain intelligence, expert insights, report insights, earnings call commentary, and divergence detection.
Build brand intelligence profiles, brainstorm unexpected connections, and generate branded SVG visualizations.
Launch deep research sessions combining graphs with live web search, plus fetch supplemental macro context.
Discover available graphs, label values, and synthetic analyst personas; consult analysts for specialized synthesis.
Enables Google Gemini AI agents to query Fodda knowledge graphs via Vertex AI for research and analysis, supporting deterministic mode.
Allows Notion AI agents to connect to Fodda knowledge graphs for retrieving trends, statistics, and evidence within Notion's custom agent environment.
Allows OpenAI Codex/ChatGPT to search Fodda knowledge graphs via REST API for trends, statistics, and evidence, enhancing AI outputs with curated institutional data.
Fodda MCP Server
Expert-curated knowledge graphs for AI agents — PSFK Retail, Beauty, Sports and partner datasets via the Model Context Protocol.
Quick Start
Claude (Web — Pro, Max, Team, Enterprise)
Get your personal MCP URL at app.fodda.ai → Connections (format:
https://mcp.fodda.ai/c/<your-token>)In Claude, go to Settings → Connectors → Add custom connector, paste the URL, and click Add
Start chatting with your Fodda knowledge graphs
Note: Legacy URL query-string parameter authentication is deprecated and returns HTTP 401 with instructions. Get your fresh MCP URL or connect via OAuth at app.fodda.ai.
Claude Code (CLI)
# Connect via OAuth:
claude mcp add --transport http fodda https://mcp.fodda.ai/mcp
# Or with an API key:
claude mcp add --transport http fodda https://mcp.fodda.ai/mcp \
--header "Authorization: Bearer sk_live_..."Client Setup Guides
For complete setup guides across all supported clients — Claude Web, Claude Code, Claude Enterprise, ChatGPT, OpenAI Responses API, Cursor, Gemini, and custom agents — visit https://www.fodda.ai/connect.
Related MCP server: PolyNeural.ai Knowledge Graph MCP Bundle
Available Tools
The Fodda MCP server exposes a rich suite of 30 tools to search, analyze, brainstorm, and visualize trends, expert-curated knowledge graphs, and corporate documents.
Discovery & Search
Tool | Description | Deterministic |
| Discover available knowledge graphs, metadata, and routing instructions. | ✅ |
| Hybrid keyword + semantic search across curated graphs for trend clusters and evidence. | ❌ |
| Search for specific quantitative metrics, indicators, and numeric data points. | ❌ |
| Search expert quotes, qualitative signals, and professional interpretations. | ❌ |
| Discover valid values for a node label or category. | ✅ |
Traversal & Graph Operations
Tool | Description | Deterministic |
| Traverse from seed nodes to discover related concept nodes and links. | ✅ |
| Retrieve detailed metadata, properties, and attributes for a single node by ID. | ✅ |
| Retrieve source signals, articles, citations, and provenance for a trend or node. | ✅ |
| Find semantically similar trends to a given trend node. | ✅ |
Intelligence Domains
Tool | Description | Deterministic |
| Search all PSFK curated domain graphs (retail, beauty, sports, fashion, consumer electronics, F&B) in parallel. | ❌ |
| Query specialist industry graphs built by leading strategists and experts. | ❌ |
| Search institutional report insights from DHL, PwC, Delta, and other partners. | ❌ |
Earnings & Corporate Insights
Tool | Description | Deterministic |
| Query management commentary, business guidance, and Q&A from company earnings calls. | ❌ |
| Detect deflections, gaps, and divergence between analyst concerns and executive responses in earnings calls. | ❌ |
Brand & Ideation
Tool | Description | Deterministic |
| Compile a comprehensive Brand Intelligence Profile across all knowledge graphs. | ❌ |
| Graph-powered brainstorm map discovering unexpected connections and adjacent territories. | ❌ |
Deep Research & Execution Agents
Tool | Description | Deterministic |
| Launch an autonomous research session combining graphs with live web search. | ❌ |
| Check progress or retrieve the final narrative report of a deep research job. | ✅ |
| Fetch macro context from up to 10 institutional data sources in a single query. | ❌ |
| Retrieve output from a supplemental context job. | ✅ |
Synthetic Analyst & Visualization
Tool | Description | Deterministic |
| List available Synthetic Analyst expert personas. | ✅ |
| Engage a Synthetic Analyst persona to synthesize answers with specialized voice. | ❌ |
| Generate branded SVG data visualizations (Cultural Shifts, Competitive Compass, Innovation Pathway, etc.). | ❌ |
Note on Dynamic Partner Skills: When partner skills (such as Paralogy or Igloo) are enabled for a user's account, additional specialized tools (e.g.
paralogy_analyze_trends, ideation tools) are dynamically registered on the MCP server and made available automatically.Note on System Utilities: The server also registers several helper and account management utilities (e.g.,
get_my_account,toggle_graph_preference,update_user_profile,manage_scheduled_reports,send_feedback) to allow the AI assistant to query subscription status, manage scheduled briefings, or save personalization settings directly.
Discovery Endpoints
Endpoint | Description |
| Health check ( |
| MCP endpoint — call the standard |
Authentication
Preferred — HTTP header (used by the directory connection and all header-capable clients). Pass your Fodda API key as a Bearer token:
Authorization: Bearer sk_live_...The server also accepts the key via an X-API-Key: sk_live_... header.
In MCP request _meta:
{ "_meta": { "authorization": "Bearer sk_live_..." } }Connection URLs. Web connector clients use personal tokenized connection URLs (https://mcp.fodda.ai/c/<token>) generated in your Connections dashboard. Raw keys in URLs are not accepted.
Configuration
Variable | Description | Default |
| HTTP server port |
|
| Upstream API base URL |
|
| HMAC signing secret for API requests | — |
| Environment ( |
|
Build & Run
npm install
npm run build
npm startSelf-Hosting
Docker:
docker build -t fodda-mcp . && docker run -p 8080:8080 -e PORT=8080 fodda-mcpCloud Run:
./deploy_cloud_run.shKubernetes: See
deployment/k8s/Terraform: See
deployment/terraform/
MCP Registry
This server is published to the Official MCP Registry as ai.fodda/mcp-server.
# Verify listing
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.fodda/mcp-server"Privacy Policy
Full policy: https://www.fodda.ai/privacy
Summary of how the Fodda MCP server handles data (the hosted policy is authoritative):
What we collect. Account information (name, email, organization) to manage your account; usage data — API queries (query text, graph accessed, timestamps) logged for billing, service improvement, and abuse prevention; and standard technical data (IP, browser type, referral URLs). We do not store the full content of AI-generated responses. Your API key authenticates requests and is never returned in tool output.
How it's used. To provide and improve the Services, process billing, enforce rate limits and prevent abuse, communicate support/service updates, and meet legal obligations. Requests are proxied to the Fodda API (
https://api.fodda.ai) over TLS.Third-party sharing. We do not sell your personal information. Data is shared only with service providers (e.g. payment processors, cloud hosting) under confidentiality agreements, or when required by law.
AI model training. Fodda does not use your queries or data to train AI models. Knowledge graphs are expert-curated, not generated from user interactions.
Retention. Account information is retained while your account is active; query logs are retained for billing and analytics. You may request account/data deletion via the contact below.
Security. TLS-encrypted connections, API-key authentication, and secure cloud infrastructure.
Contact. Privacy inquiries: privacy@fodda.ai.
See the full hosted Privacy Policy (last updated June 16, 2026) for the complete, authoritative terms.
Support
Email: hello@fodda.ai
Account & API keys: app.fodda.ai → Connections
Documentation: fodda.ai
To report a security issue, email hello@fodda.ai with "SECURITY" in the subject line.
License
Proprietary — fodda.ai
Available Tools
55 toolsbegin_expert_onboardingAInspect
Begin the Fodda expert onboarding process to create an authorized Human Agent. Verifies credentials, retrieves onboarding steps, and guides the expert through profile creation.
| Name | Required | Description | Default |
|---|---|---|---|
| byoMcp | No | Set to true if the expert explicitly confirmed they have their own live MCP endpoint to use as their knowledge base. Defaults to false (standard knowledge-graph onboarding). | |
| userId | No | Optional user identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safety profile (non-read-only, non-idempotent, non-destructive), and the description adds genuine behavioral context by revealing a multi-stage orchestration: credential verification, step retrieval, then guided profile creation. It does not specify failure modes or side effects of credential verification, keeping it short of 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?
A single front-loaded sentence that names the action and enumerates the three sub-steps. Efficient with no filler, though the trailing clause list is slightly dense.
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?
There is no output schema, and the description never says what the caller receives (onboarding steps? a status object?) or what to do if onboarding was already begun. For a kickoff tool in a flow with siblings like get_onboarding_status and finalize_byo_mcp_onboarding, this leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (byoMcp, userId) are fully documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
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?
States a specific verb and resource ('Begin the Fodda expert onboarding process to create an authorized Human Agent') and names the concrete outcome. It is differentiable from siblings like submit_basic_info or finalize_byo_mcp_onboarding, though it does not explicitly contrast itself with them.
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 word 'Begin' implies this is the entry point of a flow, so usage is hinted at. But there is no explicit when/when-not guidance, no note that get_onboarding_status exists for resuming/checking, and no prerequisites such as being an authenticated expert.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brainstorm_topicARead-onlyInspect
Explore and brainstorm around a topic using knowledge graph connections. Unlike search (which finds what matches), this tool discovers what CONNECTS — adjacent trends, unexpected cross-domain links, key brands, and geographic hotspots. Use when the user wants to brainstorm, explore adjacencies, find inspiration, or understand the landscape around a topic. Returns a structured brainstorm map with territories to explore.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Traversal depth: 1 (immediate connections) or 2 (connections of connections). Default: 2. Use 1 for focused brainstorms, 2 for wider exploration. | |
| query | Yes | The topic or theme to brainstorm around (e.g., 'tequila', 'sustainable packaging', 'Gen Z beauty') | |
| userId | No | Optional user identifier for trial usage tracking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description adds real context beyond them: the traversal-based discovery mechanism and the shape of the result ('structured brainstorm map with territories'). It stops short of explaining depth tradeoffs or how many territories/connections come back, which with no output schema would have been 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?
Four sentences, front-loaded with purpose, then differentiation, then usage, then return. Zero filler, though the final return sentence is slightly vague relative to how much space it takes.
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?
Read-only, three-parameter, no output schema and no nested objects, so complexity is low and annotations plus a full-coverage schema carry most of the load. The description is complete enough to invoke correctly; the only real gap is a slightly under-specified account of what the returned brainstorm map contains.
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%: depth, query, and userId all carry their own descriptions including depth's 1-vs-2 semantics and default. The description adds no parameter-level detail beyond that, so the baseline 3 for a fully documented schema is correct.
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?
States a specific verb+resource (explore/brainstorm a topic) and explicitly frames the mechanism (knowledge graph connections) and output (structured brainstorm map with territories). It also differentiates from the 'search' sibling by contrasting 'finds what matches' with 'discovers what CONNECTS', so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use triggers are listed ('brainstorm, explore adjacencies, find inspiration, or understand the landscape') and it names the alternative (search) with the condition that distinguishes them. This is close to the ideal when/when-not/alternative pattern, with only the near-neighbor discover_adjacent_trends left unaddressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
brand_trackerBRead-onlyInspect
Use when auditing a brand's health, competitive footprint, trend associations, and market momentum across 100+ graphs, Google Trends, and Wikipedia pageviews.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output mode: 'full' (default, rich HTML widget + complete dataset), 'compact' (concise structured summary without HTML widget blob), or 'data_only' (complete structured JSON without HTML widget). | |
| userId | No | Optional user identifier for trial usage tracking. | |
| compact | No | Shortcut boolean for compact mode. When true, returns compact structured JSON without the heavy HTML widget blob. | |
| graph_ids | No | Optional: specific graph IDs to search. If omitted, searches ALL accessible graphs. | |
| brand_name | Yes | The brand name to look up (e.g. 'Nike', 'Adidas', 'Apple'). Case-insensitive. | |
| max_evidence | No | Maximum evidence items per graph. Default: 10. Max: 25. | |
| include_widget | No | Whether to include widget_html in the response. Defaults to false when compact or data_only is active; true otherwise. | |
| include_evidence | No | If true (default), include individual evidence items. Set to false for summary-only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the safety and mutability profile is covered. The description adds the useful fact that results aggregate across 100+ graphs plus external sources, but says nothing about output shape, latency, or coverage limits that would go beyond the 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?
A single sentence that is front-loaded with the usage trigger and packs the capability list efficiently with no filler. It could be marginally tighter, but it wastes nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, 8-parameter intelligence tool with no output schema, the definition covers what the tool does but not what the caller receives or how the audiences enumerated in the trigger map to the returned artifacts. Given the annotations carry the safety profile and the schema carries parameters, this is adequate but leaves clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters including format modes, graph_ids, and evidence limits. The description contributes no additional parameter meaning, which is the expected baseline when the schema does the heavy lifting.
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 names a specific activity (auditing brand health, competitive footprint, trend associations, market momentum) and the data sources it draws on (100+ graphs, Google Trends, Wikipedia pageviews), which conveys what the tool produces. It does not, however, explicitly contrast itself with nearby siblings such as get_domain_intelligence, get_intelligence_dossier, or verify_market_claim, leaving the agent to infer the boundary.
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 when auditing...' clause functions as an explicit usage trigger, which is better than generic guidance. But it names no alternatives and gives no when-not conditions, so an agent cannot tell when a sibling like get_domain_intelligence would be the better pick for an overlapping brand question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_deliverable_statusARead-onlyIdempotentInspect
Poll a deliverable commissioned with request_deliverable. Pass the job_id from that response. Returns the current status ("working" | "completed" | "failed") and, once completed, the artifact links to present to the user. Polling is free. Deliverables typically take a few minutes — poll every ~15–30s. (Expert deliverable job status poll.)
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id returned by request_deliverable. | |
| userId | No | Optional user identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, so the bar is lower. The description adds real value beyond that: polling cost (free), expected duration (a few minutes), recommended cadence, and the possible status values with artifact links on completion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose, then parameter sourcing, then return behavior and cadence, closing with a short parenthetical label. Every sentence carries usable information with no padding.
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?
Although no output schema exists, the description enumerates the return contract (status enum plus artifact links on completion) and the polling behavior, so an agent can act without further inference.
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 description's guidance ('Pass the job_id from that response') duplicates what the schema already states for job_id. No additional syntax or format detail is added, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Poll a deliverable') and immediately names the sibling that produces the job_id ('commissioned with request_deliverable'). This clearly separates it from other status-check siblings like check_research_status and check_supplemental_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It says when to use it (after commissioning via request_deliverable) and gives operational cadence ('poll every ~15–30s'), plus the fact that polling is free. It stops short of stating when not to use it, but the contextual routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_research_statusARead-onlyIdempotentInspect
Check if deep research is complete and retrieve the final report. Call this after deep_research_topic — poll every 10 seconds until status is COMPLETE or FAILED. (Async research job status poll.)
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The Job ID returned by deep_research_topic, consult_analyst, or consult_human_agent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world. The description adds valuable behavioral context: polling interval, terminal statuses, and that it retrieves a final report. It does not mention auth requirements or rate limits beyond the polling suggestion.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then usage, and is generally efficient. The parenthetical '(Async research job status poll.)' is slightly redundant but does reinforce the async nature without wasting much space.
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 polling tool with full schema coverage and rich annotations, the description provides clear cadence and terminal states. It could specify what the return looks like when not complete, but with no output schema, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter 'job_id' is fully documented in the schema, including its sources. The description adds no additional parameter semantics beyond confirming the tool is used after deep_research_topic. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: check deep research completion and retrieve the final report. It explicitly ties the tool to deep_research_topic, distinguishing it from the initiation sibling. However, it does not explicitly differentiate from other status-check siblings like check_deliverable_status or check_supplemental_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly says to call this after deep_research_topic and provides polling frequency (every 10 seconds) and terminal conditions (until COMPLETE or FAILED). No when-not scenarios or alternative tools are mentioned, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_supplemental_statusARead-onlyIdempotentInspect
Check if market data gathering is complete and retrieve the results. Call this after get_supplemental_context — poll every 5-10 seconds until status is COMPLETE or FAILED. (Async supplemental query status poll.)
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The Job ID returned by get_supplemental_context |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds what annotations cannot: the async polling loop, the cadence, and the terminal states COMPLETE/FAILED. It does not say what the response contains beyond "results", but the behavioral workflow is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then sequencing, then cadence. Efficient overall; the trailing parenthetical "(Async supplemental query status poll.)" is slightly redundant with the first sentence but harmless.
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 the description must carry return-value burden; it says results are retrieved on COMPLETE and that FAILED is possible, which covers the essential lifecycle. It stops short of describing the result shape or what to do on FAILED, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema itself already states job_id is "The Job ID returned by get_supplemental_context". The description repeats that linkage ("Call this after get_supplemental_context") without adding format, validation, or failure-mode detail, so baseline 3 is correct.
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?
States a specific verb (check/retrieve) and resource (supplemental market data gathering results), and explicitly distinguishes itself from get_supplemental_context by naming that sibling as the prerequisite. An agent can tell this is the polling/completion leg of an async workflow.
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 sequencing ("Call this after get_supplemental_context"), explicit cadence ("poll every 5-10 seconds"), and explicit termination condition ("until status is COMPLETE or FAILED"). This is about as prescriptive as usage guidance gets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_themesBInspect
Confirm the selected themes to generate the interview questionnaire tailored to probe forward predictions, contrarian industry stances, and practical methodology edge cases for the audio interview. Can pass flaggedFindingIds and flagNote if the expert flagged any research findings as wrong or not theirs.
| Name | Required | Description | Default |
|---|---|---|---|
| themes | Yes | Array of confirmed theme names | |
| userId | No | Optional user identifier. | |
| flagNote | No | Optional note from the expert explaining why certain findings were flagged. | |
| flaggedFindingIds | No | IDs of any research findings the expert flagged as incorrect, outdated, or not theirs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the mutation profile is partly covered. The description usefully adds that confirming triggers questionnaire generation and that flagged findings can be attached, but says nothing about reversibility, permissions, or what confirmation commits to.
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?
Two sentences with the primary action and outcome front-loaded, followed by optional-parameter context. No filler, though the second sentence is slightly dense.
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?
There is no output schema, so return values need not be explained, but the description omits sequencing/prerequisites in what appears to be a multi-step onboarding flow (detect themes -> confirm -> interview). Adequate but leaves workflow position ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents all four parameters. The description only adds a conditional usage note for flaggedFindingIds/flagNote ('if the expert flagged any research findings as wrong or not theirs'), which is close to what the schema already states – so the baseline 3 holds.
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?
States a specific verb (confirm) plus resource (themes) and the downstream outcome (generating a tailored interview questionnaire). This clearly separates it from siblings like get_detected_themes or schedule_interview, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the workflow role – confirm themes so the questionnaire can be generated for the audio interview – but gives no explicit when-to-use/when-not or prerequisite (e.g. that themes must first be detected/selected). Usage must be inferred from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consult_analystARead-onlyInspect
Use when consulting synthetic domain analysts, C-Suite executive personas, or classic historical thinkers grounded in specialist knowledge graphs. (For living practitioners e.g. Ben Dietz, use consult_human_agent or request_expert_intro.)
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | Set true to have the agent conduct deep background research across specialist graphs and market data before answering (or detects 'do your homework' / 'deep breakdown' in multi-turn queries). | |
| query | Yes | The question or topic to discuss with the analyst | |
| userId | No | Optional user identifier. | |
| company | No | Optional company name or stock ticker (e.g., 'Nike', 'Tesla', or 'TSLA') to bind the analyst to a specific brand context. Automatically extracted if included in analyst_id (e.g. 'Nike CMO'). | |
| analyst_id | Yes | The internal ID of the agent (from list_analysts or find_expert, e.g. 'brand-cmo', 'john-ruskin', or 'retail-synthetic'). This is an internal identifier; the agent's display name is in the response. | |
| session_id | No | Pass the session_id from a previous consult response to continue that engagement — the analyst keeps context across the session. Omit for a one-off question. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond that — it doesn't explain the non-idempotent nature implied by idempotentHint=false, the conversational session behavior, or rate/latency traits. With annotations carrying safety, this is minimum viable.
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?
Two sentences, zero waste, with the primary scope front-loaded and the alternative-parenthetical second. Every clause carries routing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Purpose, alternatives, and parameter meaning are all covered by description plus schema, and no output schema means return values needn't be explained (the schema itself references the response's display name and session_id). It stops short of explaining what an engagement yields or the non-idempotent behavior, a minor gap for a read-only consult tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters including deep, session_id, company, and analyst_id. The description adds no parameter-level meaning (e.g., how analyst_id relates to the entity types it describes), so the baseline 3 applies.
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?
States the specific verb (consulting) and the resources: synthetic domain analysts, C-Suite executive personas, and classic historical thinkers grounded in specialist knowledge graphs. It also names the sibling it is not for (living practitioners → consult_human_agent / request_expert_intro), so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the when-to-use case (synthetic/historical analysts) and the when-not case (living practitioners), naming two concrete alternatives. The exclusion plus the named alternatives leave nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consult_human_agentBRead-onlyInspect
Use when consulting an authorized living Human Agent for practitioner depth, proprietary frameworks, and strategic guidance. Grounded in their verified real-world expertise and published thinking. For On-Request Human Agents undergoing onboarding, returns domain-grounded intelligence and advisory profile. Supports deep homework mode (deep: true). Returns cited insights and next_moves.
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | Set true to have the human agent conduct deep background research across specialist graphs and market data before answering (or detects 'do your homework' / 'deep breakdown' in multi-turn queries). | |
| query | Yes | The question or topic to discuss with the human agent | |
| userId | No | Optional user identifier. | |
| company | No | Optional company name or stock ticker (e.g., 'Nike', 'Tesla', or 'TSLA') to bind the human agent to a specific brand context. | |
| analyst_id | Yes | The internal routing ID of the Human Agent (from list_analysts or find_expert). This is an internal routing key; NEVER expose raw IDs (e.g. 'ben-dietz-sic') or words like 'digital twin' to the user; always refer to the expert by their professional name and credentials. | |
| session_id | No | Pass the session_id from a previous consult response to continue that engagement — the human agent keeps context across the session. Omit for a one-off question. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=false, and nothing in the description contradicts them. The description adds useful behavior beyond the annotations: session continuity via session_id, the deep-homework trigger semantics, and the cited-insights/next_moves return shape. It omits any auth, cost, or latency characteristics for a tool that spawns human work.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the triggering condition, which is good, but the middle sentences lean on marketing abstraction ('practitioner depth, proprietary frameworks', 'verified real-world expertise and published thinking') that adds little selectable signal for an agent. The useful operative facts (deep mode, return shape) are buried 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?
With no output schema, the description does discharge the return-value burden by naming 'cited insights and next_moves', and all six parameters are schema-documented. The one real hole is sibling differentiation from consult_analyst, which the description never addresses despite that being the primary invocation risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the six parameters is already documented in the schema, including 'deep', 'session_id', and the analyst_id routing/never-expose-raw-IDs rule. The description only restates 'Supports deep homework mode (deep: true)' and adds no syntax, defaults, or edge-case meaning beyond the schema, so the baseline 3 applies.
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?
States a specific verb+resource ('consulting an ... Human Agent') and enumerates the value it produces (practitioner depth, proprietary frameworks, strategic guidance; cited insights and next_moves). It never names or distinguishes itself from the obvious sibling consult_analyst, so an agent must infer the split from the name alone.
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 opening 'Use when consulting an authorized living Human Agent' plus the 'On-Request Human Agents undergoing onboarding' clause gives a partial when-to-use condition. However, there is no explicit when-not guidance and no mention of the near-identical 'consult_analyst' sibling or 'find_expert'/'list_analysts' as the upstream discovery path (those appear only inside a parameter description).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_research_topicARead-onlyInspect
Use when the user needs an exhaustive, autonomous multi-pass briefing report synthesizing cross-graph trends, corporate disclosures, and expert perspectives.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Research mode: "light" for faster research, "heavy" for comprehensive deep dive. Defaults to "light". | |
| depth | No | Research depth: "light" for faster research, "heavy" for comprehensive deep dive. Defaults to "light". | |
| query | Yes | The research subject as a short phrase, 5–15 words. Do not pass a full brief — long multi-clause queries degrade graph selection. Put detail into sub_themes instead. | |
| userId | No | Optional user identifier. | |
| graphId | No | Optional specific graph ID to limit the research to | |
| sub_themes | No | 3–5 specific angles to investigate (e.g. "category sizing and growth forecasts for wine coolers", "key players across appliance, furniture and glassware", "DTC versus wholesale channel dynamics"). If omitted, generated automatically. This is where research detail belongs — not in the query. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description usefully adds that execution is 'autonomous' and 'multi-pass', hinting at a long-running unattended process. It omits latency/duration expectations and any async polling cue (notably absent despite a check_research_status sibling), so it adds modest value only.
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?
A single front-loaded sentence that opens with the trigger ('Use when...') and packs the output type and scope with zero filler. Nothing is redundant and the most decision-relevant information leads.
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 6-parameter tool with full schema coverage and safety annotations, the description covers the what and when adequately. It does not signal the likely long-running/async nature of an autonomous multi-pass job, which an agent needs in order to call it correctly. With no output schema, a brief note on what is returned (beyond 'briefing report') would have closed the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, mode, depth, sub_themes, userId and graphId are all already documented in the schema with enums and usage notes. The description contributes no additional parameter guidance, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete deliverable (an 'exhaustive, autonomous multi-pass briefing report') and its ingredient sources (cross-graph trends, corporate disclosures, expert perspectives), which is far more specific than a bare 'research' verb. It implicitly separates itself from lighter siblings like brainstorm_topic or search_graph. It stops short of naming the alternatives it is not, so it lands at 4.
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 whole description is a single use-condition ('Use when the user needs an exhaustive... report'), which gives a clear trigger. However, it offers no exclusions, no prerequisites, and does not route the agent away from cheaper siblings such as brainstorm_topic or discover_adjacent_trends. Usage is implied rather than fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_adjacent_trendsBRead-onlyIdempotentInspect
Vector-similarity graph traversal discovering non-obvious, cross-domain parallel trend patterns. (1 seed node embedding fetch + 1 vector cosine distance query + 1 direct link exclusion filter.)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of adjacent trends to return. Default: 10 | |
| query | No | Alias for seed_query. Topic or theme to discover adjacent trends for. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graphId | No | Knowledge graph ID (e.g. "retail"). Optional if seed_query or query is provided; defaults to "retail" or auto-routes based on query. | |
| trend_id | No | The node_id from a prior search_graph result (e.g. '2507.0'). Optional if seed_query or query is provided. Node IDs are not sequential integers — do not guess or invent IDs. If searching from a topic or theme, pass seed_query instead. | |
| min_score | No | Minimum similarity score threshold (0-1). Default: 0.80 for node lookups or 0.70 for topic exploration. | |
| seed_query | No | Topic or theme to discover adjacent trends for (e.g. 'retailers paying to guarantee freight capacity ahead of peak season'). If provided, automatically finds seed trends and maps adjacent territories. | |
| include_editorial | No | If true, also include editorially linked trends. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: the pipeline of embedding fetch, cosine-distance query, and especially the 'direct link exclusion filter', which tells the agent that directly connected trends are deliberately omitted and results are non-obvious. It still omits return format, ordering, and cost/rate 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?
Two sentences, front-loaded with the purpose before the parenthetical mechanics, with no filler. The internal-pipeline parenthetical is terse and slightly jargon-heavy, but it is compact rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only discovery tool with 8 fully documented parameters and no output schema, the safety profile and parameter meanings are adequately covered by annotations and schema. However, the description says nothing about how many/how results come back, how min_score interacts with limit, or the trial-tracking userId behavior, leaving meaningful gaps for an 8-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains limit, query, seed_query, trend_id, min_score, and the rest. The description only loosely gestures at the seed-embedding step and adds no syntax, format, or precedence guidance (e.g. seed_query vs trend_id vs query) beyond what the schema provides. Baseline 3 applies.
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 names a concrete operation (vector-similarity graph traversal) and a concrete resource (adjacent, cross-domain trend patterns), so the agent knows it returns trends rather than nodes or claims. It does not, however, differentiate itself from siblings like get_neighbors or search_graph, which could plausibly surface similar-looking output. Clear verb+resource, but no sibling routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. The agent must infer from the schema (seed_query vs trend_id) how to invoke it, but nothing tells it why it would pick this over search_graph, get_neighbors, or get_validated_trends.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_linkedin_articleARead-onlyInspect
Turn research into a LinkedIn ARTICLE (800–1,200 words) grounded in Fodda's expert knowledge graphs. Use when the user says "turn this research into an article…", "write a LinkedIn article about…", or wants long-form thought leadership with receipts. Runs a broader evidence sweep than the post tool — 3–5 sub-themes, a hard-numbers statistics pass, and an analyst pressure-test of the thesis — and returns a curated EVIDENCE PACK plus a strict composition contract; YOU write the article from it, including the "How we found this" methodology box. Bills as one content call; identical re-requests within 24h serve from cache free. (Deep trend evidence extraction + multi-section outline + longform article drafting.)
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Set ONLY when the topic IS a named brand/company. Unlocks the earnings truth layer (analyst concerns, CEO quotes, market-validated trends). | |
| topic | Yes | The article topic (e.g., 'the rise of agentic commerce') | |
| voice | No | Bridge-line voice: 'fodda_first_party' (default) or 'practitioner'. | |
| thesis | No | The argument the article should make — gets pressure-tested by a Fodda analyst before drafting | |
| userId | No | Optional user identifier for usage tracking. | |
| sub_themes | No | 3–5 SPECIFIC sub-themes decomposing the topic. Specific grounded queries consistently beat one broad query — supply these for best results. | |
| target_length | No | Target word count (default ~1,000; contract allows ±20%) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=true, openWorldHint=false, destructiveHint=false, idempotentHint=false). The description then adds genuinely useful behavior beyond that: billing model ('bills as one content call'), free 24h caching, and crucially that it returns an EVIDENCE PACK plus a composition contract and that YOU write the article (including the methodology box). It doesn't detail the evidence-pack structure, but the added operational context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and word count before routing triggers and mechanics. Efficient overall, though the trailing parenthetical '(Deep trend evidence extraction + multi-section outline + longform article drafting.)' is somewhat redundant with earlier 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?
For a complex, multi-stage generation tool with no output schema, the description is nearly complete: it explains the deliverable (evidence pack + contract), the division of labor (agent writes the article), billing, and caching. Minor gaps remain around the exact shape of the returned evidence pack.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters (including the brand earnings-truth layer, sub_themes rationale, and target_length ±20% contract). The description reinforces the sub-themes and thesis-pressure-test concepts but adds little parameter-level syntax beyond what the schema states, so the baseline of 3 applies.
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?
States a specific verb+resource (draft a LinkedIn ARTICLE), a concrete scope (800–1,200 words), and the grounding source (Fodda knowledge graphs). It explicitly differentiates from its closest sibling by noting it 'Runs a broader evidence sweep than the post tool,' so an agent can tell it apart from draft_linkedin_post without opening either schema.
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 trigger phrases ('turn this research into an article…', 'write a LinkedIn article about…') and a use-case condition (long-form thought leadership). The comparison to the post tool gives a clear when-to-use-this-vs-alternative signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_linkedin_postARead-onlyInspect
Draft a LinkedIn post about any topic, grounded in Fodda's expert knowledge graphs. Use when the user says "draft a LinkedIn post about…", "write a post on…", "turn this into a LinkedIn post", or wants social content backed by receipts. Returns a curated EVIDENCE PACK (claims with named companies, typed sources, and real URLs — never constructed) plus a strict composition contract; YOU write the post from it. Every claim is verifiable, thin coverage is flagged honestly, and dropped themes are logged with reasons. Bills as one content call; identical re-requests within 24h serve from cache free. (Trend evidence extraction + tone/formatting prompt execution + draft compilation.)
| Name | Required | Description | Default |
|---|---|---|---|
| angle | No | Optional thesis, or a post being responded to | |
| brand | No | Set ONLY when the topic IS a named brand/company (e.g. 'Nike'). Unlocks the earnings truth layer: analyst concerns, CEO quotes, and market-validated trends as verbal-attribution evidence. | |
| topic | Yes | The topic to post about (e.g., 'agentic commerce', 'retail media networks') | |
| voice | No | Bridge-line voice: 'fodda_first_party' ("We found these using Fodda…", default) or 'practitioner' ("I pulled these from Fodda…") for users posting about their own industry. | |
| userId | No | Optional user identifier for usage tracking. | |
| sub_themes | No | 2–4 SPECIFIC sub-themes decomposing the topic (e.g. for 'agentic commerce': ['AI shopping agents checkout', 'retailer agent APIs', 'agent-to-agent payments']). Specific grounded queries consistently beat one broad query — supply these for best results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only cover safety/idempotency), it discloses the return contract (curated EVIDENCE PACK with typed sources and never-constructed URLs), honesty behavior (thin coverage flagged, dropped themes logged), and billing semantics (one content call; identical re-requests within 24h served from cache free). This is rich operational context an agent cannot get from 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?
Purpose is front-loaded and sentences are dense with useful detail (triggers, return format, billing). It is somewhat long and packs multiple concerns (caching, billing, sub-operations parenthetical) that could be trimmed, but nothing is clearly wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-format burden and does so fully: evidence pack structure, composition contract, coverage honesty, caching and billing. An agent knows what it gets back and how it is charged before calling.
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% and the parameter descriptions (brand's earnings truth layer, voice enum, SPECIFIC sub_themes guidance) are already detailed. The description adds no per-parameter meaning beyond the schema, so the baseline of 3 applies.
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 names a specific verb (Draft) and resource (LinkedIn post) and scopes it to 'any topic, grounded in Fodda's expert knowledge graphs'. It also clarifies the division of labor ('YOU write the post' from the returned evidence pack), which distinguishes it from a plain generation 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?
It gives concrete trigger phrases ('draft a LinkedIn post about…', 'write a post on…', 'turn this into a LinkedIn post') and states the context (social content backed by receipts). It does not, however, name the sibling draft_linkedin_article or state when to prefer one over the other, so it stops short of fully explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expert_onboarding_researchAInspect
Initiate background research on the expert's public work and domain insights to support expertise and voice modeling. Research runs asynchronously in the background for 1-2 minutes. Do NOT wait now; proceed immediately to the Tone of Voice study in chat.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Optional user identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the non-read-only, non-idempotent, non-destructive profile, so the safety burden is partly covered. The description adds genuinely useful behavior beyond that: the job runs asynchronously for 1-2 minutes and the caller must not block on it. It does not say how or when results become available.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and scope, then the async timing, then the immediate next step. No filler; every sentence changes agent behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a fire-and-forget async trigger with no output schema and a single fully documented parameter, the description covers everything needed to invoke it correctly and what to do next. The one omission is how the agent later retrieves the research results, which a polling sibling likely handles.
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% for the single optional 'userId' parameter, so the schema already carries the semantics. The description adds nothing about the parameter, which is acceptable when coverage is complete but earns only the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Initiate background research') and a specific resource (the expert's public work and domain insights), plus the downstream purpose (expertise and voice modeling). It is distinguishable from siblings like deep_research_topic or check_research_status, though it does not name them explicitly.
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?
Gives clear usage context: run this, do not wait, proceed to the Tone of Voice study in chat. The 'do NOT wait' instruction removes ambiguity about blocking behavior. It stops short of naming the sibling used to poll results (e.g., check_research_status).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
finalize_byo_mcp_onboardingBInspect
Finalize Bring-Your-Own-MCP (BYO-MCP) expert onboarding and submit the profile for review. Creates the Human Agent record in Airtable with external_mcp live grounding. Profile is saved once terms are accepted; MCP details are verified and submitted for review here.
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | Optional short biography for the expert's public profile. | |
| name | Yes | The expert's full name | |
| role | Yes | The expert's current role or title | |
| mcpUrl | Yes | The verified HTTPS URL of the expert's public MCP endpoint | |
| userId | No | Optional user identifier. | |
| callPrice | No | The expert's preferred 1-hour consultation rate: 'No Calls', '$250/hr', '$500/hr', '$750/hr', '$1,000/hr', or '$2,000/hr'. Defaults to 'No Calls'. | |
| description | No | Optional comprehensive description of the expert's background. | |
| headshotUrl | No | Optional public HTTPS URL to the expert's headshot photo (URL only, no file upload). | |
| knowledgeArea | Yes | The expert's primary knowledge area | |
| termsAccepted | No | Optional if already accepted at basic info. The expert must have accepted the Fodda Terms of Service (https://www.fodda.ai/terms) and Privacy Policy (https://www.fodda.ai/privacy). | |
| voiceStudyRaw | No | Optional light voice study or tone-of-voice persona derived from conversation or public writing. | |
| expertTopicsRaw | Yes | Confirmed JSON string or text summary of the expert's domain topics (derived from MCP scan and confirmed by the expert). Powers the profile expertise map and suggested queries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds useful behavior beyond that: it creates an Airtable record and implies a terms-acceptance gate. It doesn't state whether re-invocation is safe or what happens on partial failure, but with annotations covering non-destructiveness, 3 is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action, no filler. The middle mention of profile-save-on-terms-acceptance is slightly compressed but earns its place by flagging a gating condition.
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 non-idempotent mutation with no output schema, the description covers purpose, side effect, and a terms gate, but omits prerequisites relative to the other onboarding steps and result/error behavior. It is adequate but leaves the ordering questions a caller of the final step would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters are already documented in the schema; baseline is 3. The description mentions terms acceptance and MCP details but adds no format or constraint detail 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?
States a specific verb and resource: 'Finalize ... onboarding and submit the profile for review', plus the concrete side effect of creating a Human Agent record in Airtable. It is distinguishable from siblings like submit_mcp_source or confirm_themes, though it doesn't explicitly name where it sits in the sequence relative to them.
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?
Implies this is the last step ('finalize... submit for review here'), which gives positional context. However, it never states prerequisites (e.g. that basic info, MCP source, and confirmed themes must already be submitted) or what to do if a step is missing, which for an ordered onboarding flow is the key usage question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_expertARead-onlyIdempotentInspect
Use when the user asks what specialists think, seeks an authoritative perspective, or needs practitioner depth ('Who should I ask about X?' or 'What would retail experts make of this?'). Returns 2–3 ranked candidate experts across 4,150+ specialist roster with action lines, credibility anchors, and why matched, distinguishing active Human Agents (consultable immediately via consult_human_agent) from On-Request Human Agents (advisory introduction via request_expert_intro).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum candidate experts to return (default: 3, max: 3). | |
| query | Yes | The question, brief, topic, or situation to find candidate experts for. | |
| userId | No | Optional user identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds valuable non-annotation context: the return shape (action lines, credibility anchors, why matched), the roster breadth (4,150+), and the two-tier agent distinction with the correct follow-up tool for each. It stops short of explaining ranking or reliability caveats.
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?
Two sentences, front-loaded with the trigger condition before the return description, so the agent learns when-to-use first. The second sentence is dense with parenthetical asides but every clause carries routing or return information, so little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden and does: it explains the number of results, their contents, the roster scale, and how to act on each agent tier via named sibling tools. Nothing essential for calling this discovery tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (query, limit, userId) are already documented; baseline 3 applies. The description only loosely reinforces the query intent and the 2–3 result count, adding no syntax or format detail 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?
States a specific verb+resource (find expert) and frames it as a discovery/ranking operation via the 'Returns 2–3 ranked candidate experts' clause. It explicitly distinguishes itself from the sibling consult_human_agent (consultation) and request_expert_intro (introduction), so an agent can tell it apart without opening schemas.
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?
Opens with an explicit 'Use when the user asks what specialists think, seeks an authoritative perspective, or needs practitioner depth' and supplies two concrete example phrasings. It also routes follow-up actions: consult_human_agent for active agents vs request_expert_intro for on-request agents, giving clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_visualARead-onlyIdempotentInspect
Create a presentation-ready data visualization from research findings. Available chart types: "cultural_shifts" (From→To transitions), "competitive_compass" (brands on 2 axes), "trend_constellation" (network of related trends), "implication_ladder" (Signal→Trend→So What→Do What), "innovation_pathway" (Now→Near-Term→Future), "opportunity_map" (2×2 white space analysis). Returns a branded SVG that renders directly in the chat. (Data payload transformation + SVG chart rendering.)
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | JSON string containing chart data. Optional top-level "focus":"Name" or per-item "focus":true highlights key entity in brand accent. cultural_shifts: {shifts:[{from,to}]}. competitive_compass: {brands:[{name,x,y,focus?:boolean}], axes:{left,right,top,bottom}, focus?:string}. trend_constellation: {trends:[{name,x,y,focus?:boolean}], connections:[{from,to,strength}], focus?:string}. implication_ladder: {signal,trend,so_what,do_what}. innovation_pathway: {now,near_term,future}. opportunity_map: {items:[{name,consumer_desire,market_activity,focus?:boolean}], x_label?:string, y_label?:string, focus?:string} | |
| chart_type | Yes | The type of visualization to generate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive behavior, so the safety profile is covered. The description adds valuable non-annotation context: it returns a branded SVG that renders directly in chat and performs data payload transformation plus SVG rendering. It stops short of noting rate limits or auth needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then a compact chart-type catalog, then the return value. Every clause earns its place; the trailing parenthetical about internal mechanics is the only slightly redundant element.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two fully-documented required parameters and no output schema, the description supplies the missing return-value information (SVG rendered in chat) and the chart-type semantics. It lacks only edge-case guidance (e.g., malformed data handling).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3), but the description adds meaning beyond the raw enum by explaining what each chart_type represents (From→To transitions, 2×2 white space, etc.), which directly helps the agent pick a value and shape the data payload.
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?
States a specific verb+resource ('Create a presentation-ready data visualization from research findings') and then enumerates all six supported chart types with one-line semantic glosses. No sibling tool offers visualization, so an agent can immediately place it.
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 phrase 'from research findings' implies the context in which to reach for it, and the chart-type glossary helps select the right variant. However, it never states when to use this versus siblings or any prerequisites/exclusions, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesARead-onlyIdempotentInspect
Returns Fodda's capabilities, offerings, how Human Agents work, expert recruitment/onboarding, and pricing. Call this for any question about what Fodda can do, how experts work, what's available, or how much something costs. (Platform capability and pricing catalogue read (free).)
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Optional subject, brand, category, or problem statement to assess topic reconnaissance ('What does Fodda know about [topic]?'). If omitted, returns platform capability overview, workflow recipes, and specialist breakdown. | |
| userId | No | Optional user identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds only that the operation is free ('pricing catalogue read (free)'), a small but real addition beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return contents before the usage trigger. The trailing parenthetical is slightly awkward stylistically but carries the useful 'free' detail, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly enumerates what comes back (capabilities, offerings, expert mechanics, pricing) so an agent knows what to expect. It is essentially complete for a free read; only the exact response shape remains unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both 'topic' and 'userId' are documented in the schema, including the topic-reconnaissance behavior and the omit-to-get-overview default. The description does not add parameter detail, so the baseline 3 applies.
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?
Specifies a concrete verb (Returns) and enumerates the exact resources covered: capabilities, offerings, Human Agent mechanics, expert recruitment/onboarding, and pricing. It clearly reads as the platform catalogue tool and is easy to distinguish from action-oriented siblings like find_expert or consult_analyst.
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?
Gives explicit invocation triggers ('Call this for any question about what Fodda can do, how experts work, what's available, or how much something costs'), which is strong when-to-use guidance. It does not name an alternative tool or state exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_earningsARead-onlyIdempotentInspect
The canonical per-ticker earnings source. Returns the full truth-layer record for covered tickers (517 consumer-sector companies) — analyst concerns, sentiment labels, strategic activity (marketing/retail/technology/sustainability), CEO intelligence, and validated consumer trends from Fodda's quarterly analysis pipeline. Falls back to web-backfill for uncovered tickers. Use this for company-specific data. Use get_earnings_intelligence for cross-company thematic comparisons.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Execution mode (alias for view): snapshot, history, qa, compare, guidance, coverage (free). Defaults to snapshot. | |
| view | No | snapshot: full quarterly record with analyst concerns, sentiment, activity, validated trends. history: narrative timeline across quarters. qa: per-analyst Q&A entries with thematic tagging and response directness. compare: side-by-side comparison of 2-5 tickers. coverage: list all covered tickers (free). | snapshot |
| period | No | Quarter filter (e.g. Q1-2026). Defaults to latest quarter. | |
| sector | No | Sector filter for guidance view. | |
| ticker | No | Company ticker symbol (e.g. NKE, LULU, ONON). Required for snapshot, history, and qa views. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| analyst | No | Analyst name filter for qa view. | |
| metrics | No | Comma-separated metric names for history view (e.g. swot_total,ceo_sentiment). Defaults to all. | |
| tickers | No | Comma-separated ticker symbols for compare view (2-5 tickers). Only used when view=compare. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld and non-destructive, so the safety profile is covered. The description adds genuine behavioral context: coverage is limited to 517 consumer-sector tickers and uncovered tickers fall back to web-backfill, which warns the agent that result provenance and completeness vary. It stops short of rate-limit or latency details, but for a read tool this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the identity of the tool, then contents, coverage/fallback, and routing guidance in a tight sequence. Every sentence carries signal, though the parenthetical list and Fodda provenance reference make it slightly dense.
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 the description usefully summarizes what the record returns and its coverage/fallback behavior, which is the critical context. For a nine-parameter tool the individual modes are left to the schema, which fully covers them, keeping this near-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 description coverage is 100%, so all nine parameters (including the mode/view enums and required-for relations) are already documented in the schema. The description adds no parameter-level guidance, so the baseline of 3 applies.
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?
States a specific resource (per-ticker earnings) with clear scope ('canonical per-ticker earnings source') and enumerates what the record contains (analyst concerns, sentiment, activity, CEO intelligence, validated trends). It explicitly differentiates itself from the sibling get_earnings_intelligence, so an agent can route without opening either schema.
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?
'Use this for company-specific data. Use get_earnings_intelligence for cross-company thematic comparisons' gives explicit when-to-use and names the alternative with the discriminating condition. Nothing is left to inference for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_detected_themesARead-onlyIdempotentInspect
Fetch the detected themes derived from the expertise analysis and background research for expert review and confirmation. Shows verified research findings about the expert's work before themes; ask the expert if any findings are wrong or not theirs before asking them to confirm themes.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Optional user identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful behavioral fact that this surfaces verified research findings ahead of themes, but says nothing about return format or ordering. Baseline for annotation-covered reads is appropriate here.
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?
Two sentences, but the second is a semicolon-joined run-on mixing a description of returned content with an instruction about confirming themes. The core action is front-loaded adequately, but the second sentence could be split or trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-optional-param tool with annotations covering safety and no output schema, the description covers the workflow role adequately. It could say more about what a 'theme' or 'finding' object contains, but the absence of an output schema lowers the burden.
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% and there is a single optional userId param already documented as 'Optional user identifier.' The description adds no syntax or meaning beyond the schema, so the baseline 3 applies.
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?
States a specific verb ('Fetch') and resource ('detected themes derived from the expertise analysis and background research') and clarifies the object of the operation. It distinguishes itself from confirm_themes by positioning this as the review step that precedes confirmation, though it doesn't name the sibling explicitly.
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?
Gives clear workflow context: use this for expert review, ask the expert whether findings are wrong or not theirs *before* asking them to confirm themes. This sequences it relative to confirm_themes. No explicit 'when-not' exclusion, but the condition that selects it is well conveyed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_intelligenceARead-onlyInspect
Search PSFK-curated domain graphs (travel & hospitality, retail, tech, beauty, fashion, sports, food & beverage) for trend intelligence with bundled evidence. No graph ID needed — searches all 7 live domain graphs in parallel. Returns expert-curated trends with bundled evidence including brand case studies, statistics, executive quotes and analysis with source attribution. When the query names a specific company or brand, brand_tracker is the entry point. Preferred over web search for trend-level intelligence because results are editorially structured, not algorithmically ranked. Note: Graph trends represent country-level and global signals; for city-level or regional sub-cuts, use get_supplemental_context.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max trends to return (default: 10, max: 50) | |
| query | Yes | Natural language search query (e.g., 'sustainable packaging trends', 'Gen Z beauty habits') | |
| userId | No | Optional user identifier for trial usage tracking. | |
| min_score | No | Minimum relevance threshold (default: 0.6) | |
| include_evidence | No | Bundle evidence for each trend (default: true) | |
| max_evidence_per_trend | No | Evidence items per trend (default: 5, max: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds real behavioral value beyond that: no graph ID is required, all seven graphs are queried in parallel, and results come back as editorially structured trends with bundled evidence and source attribution. It stops short of covering pagination, result freshness, or ranking 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?
Front-loaded with the core action and scope, then progressively adds routing rules. It is dense with useful content, but the 'bundled evidence' idea is stated twice (first and third sentences), which is a minor 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, so the description carries the return-value burden and does it well, describing trends plus bundled evidence types (case studies, statistics, quotes, analysis with attribution). All parameters are documented in the schema, and routing to the relevant siblings is covered, leaving nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the six parameters (limit, query, userId, min_score, include_evidence, max_evidence_per_trend) already carries its own description with defaults and caps. The description clarifies the evidence-bundling behavior that include_evidence controls, but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.
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?
States a specific verb (Search) and resource (PSFK-curated domain graphs), enumerates the seven covered domains, and names the scope ('searches all 7 live domain graphs in parallel'). It also distinguishes itself from web search and from the brand_tracker sibling, so an agent can select it without opening any schema.
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 routing rules: use brand_tracker when the query names a company/brand, use get_supplemental_context for city-level or regional sub-cuts, and it is preferred over web search for trend-level intelligence. Both when-to-use and when-to-use-something-else are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_divergenceCRead-onlyInspect
Truth-layer analysis comparing analyst line of questioning against executive management prepared remarks. (2 Airtable table reads (Q&A + prepared remarks) + 1 sentiment gap calculation + 1 divergence matrix rendering.)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max deflection themes to return (default 25). | |
| period | No | Quarter filter (e.g., 'Q1-2026'). Defaults to latest quarter. | |
| search | No | Optional search term (used for logging and query attribution). | |
| sector | No | Sector filter (e.g., 'retail', 'consumer goods', 'food & beverage', 'travel') | |
| userId | No | Optional user identifier for trial usage tracking. | |
| industry | No | Industry filter alias. | |
| min_companies | No | Minimum number of covered companies deflecting on the theme to include in results (default 2). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so the safety profile is partially known. The description adds that the tool performs reads from two Airtable tables and a sentiment gap calculation, which is useful operational context. However, it does not disclose whether the operation is expensive, whether it caches results, or what the idempotency=false means in practice.
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 two sentences, but the second sentence is a parenthetical list of internal steps that reads like implementation notes rather than front-loaded value. It is not overly wordy, but the structure could be improved by leading with the core output and keeping the technical details secondary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and 7 optional parameters, the description gives a high-level idea of what is computed but does not explain what the output looks like (e.g., themes, deflection counts, scores). It is adequate but leaves gaps that an agent would need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all 7 parameters are fully described in the schema. The description adds no parameter-level detail beyond what is in the schema; it simply notes the data sources involved. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific analytical purpose ('comparing analyst line of questioning against executive management prepared remarks'), which is clearer than a tautology. However, it is dense with internal jargon ('Truth-layer analysis', 'divergence matrix') and does not clearly distinguish this tool from siblings like get_earnings_intelligence or get_company_earnings. An agent might struggle to know when exactly to pick this over those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus the many other earnings-related siblings (get_earnings_intelligence, get_company_earnings, get_my_earnings). The description implies a specific use case but offers no routing cues, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_earnings_intelligenceARead-onlyInspect
Cross-company thematic earnings intelligence from the knowledge graph and web sources. Use for multi-company comparisons ("what are hotel companies saying about labor costs?"), industry-level queries, sector filters, or strategic corporate activity categories (activity: "sustainability" | "marketing" | "retail" | "technology"). For corporate ESG, circular economy, and climate initiatives (e.g. "What sustainability commitments did apparel companies make this quarter?"), pass activity="sustainability" or rely on server-side intent routing to avoid conflation with analyst margin sustainability questions. Multi-company and sector queries return active initiatives along with confirmed_absent brands (checked tickers with confirmed silence / no initiatives discussed). For single-brand earnings, brand_tracker includes earnings automatically. For per-ticker structured analysis (analyst concerns, activity breakdown, validated consumer trends), use get_company_earnings instead — it reads the canonical truth layer. Results may include "knowledge_graph" or "web_supplemental" provenance.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | No | Brand name for fuzzy matching (e.g., 'Nike', 'Marriott') | |
| limit | No | Max results to return (default 20, max 50) | |
| dateTo | No | ISO date range end (e.g., '2026-06-01') | |
| search | No | Free text search in earnings summaries (e.g., 'labor costs', 'tariff guidance', 'AI investment') | |
| sector | No | Sector filter (e.g., 'retail', 'technology', 'travel') | |
| ticker | No | Company stock ticker (e.g., 'NKE', 'LVMUY', 'HLT'). At least one filter required. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| activity | No | Scope query to a strategic corporate activity category. Use 'sustainability' for corporate ESG, circular economy, and climate initiatives (avoids conflation with analyst margin sustainability questions). | |
| dateFrom | No | ISO date range start (e.g., '2025-01-01') | |
| industry | No | Industry filter (e.g., 'hotels', 'sportswear', 'consumer electronics') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond them: provenance tags ('knowledge_graph' or 'web_supplemental'), the confirmed_absent brands behavior on multi-company queries, and server-side intent routing to avoid conflation—all useful and non-obvious.
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?
Information-dense and largely front-loaded, with the primary purpose first and routing/examples after. It is long, but nearly every sentence carries distinct routing or semantic value, so little is wasted.
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?
Although there is no output schema, the description explains what results contain (active initiatives plus confirmed_absent brands, provenance tags), which is exactly what an agent needs to interpret a call. Nothing essential is missing for a 10-parameter, zero-required read 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, but the description adds genuine meaning: it explains the activity enum's 'sustainability' semantics and warns about conflation with analyst margin-sustainability questions, and it gives search-term examples ('labor costs', 'tariff guidance'). This goes beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('cross-company thematic earnings intelligence from the knowledge graph and web sources') and immediately differentiates itself from siblings by naming the use cases it owns vs. those that belong to get_company_earnings and brand_tracker. An agent can route without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates when to use it (multi-company comparisons, industry-level, sector filters, activity categories) and names two alternatives with the conditions that select them: 'For single-brand earnings, brand_tracker…' and 'For per-ticker structured analysis… use get_company_earnings.' This is near-ideal routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_evidenceBRead-onlyIdempotentInspect
Semantic search across 100+ knowledge graphs returning top trends, signal scores, and hard publisher citations with source URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| top_k | No | Number of evidence items to return (default 5) | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graphId | Yes | The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index' | |
| for_node_id | Yes | The node_id from a prior search_graph result (e.g. '2507.0'). MUST come from the search result's node_id field. Node IDs are NOT sequential integers — do NOT guess or invent IDs like '1', '2', '3'. Do NOT pass the trend name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and the closed-world openWorldHint=false, so the safety profile is covered. The description adds useful return-content context (trends, signal scores, cited URLs), but says nothing about auth, rate limits, or that a node lookup is a prerequisite.
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?
A single dense sentence with the retrieval action and its return payload front-loaded. No redundant or filler clauses; every phrase contributes.
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?
There is no output schema, so the description partially compensates by naming the returned fields (trends, signal scores, citations). But it omits the two-step workflow (search_graph → get_evidence) and any pagination/top_k behavior, leaving the agent to infer the calling 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 description coverage is 100%, so all four parameters are already documented in the schema, including the critical warning that for_node_id must come from a prior search result. The description adds no parameter meaning beyond that baseline, which is the expected 3 when the schema does the heavy lifting.
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?
Names a specific verb and resource (semantic search across knowledge graphs) and qualifies the output (top trends, signal scores, publisher citations with source URLs). However, it does not distinguish itself from the sibling search_graph, which the sibling name alone suggests competes for the same 'search' intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance. It never states that this tool is a follow-up to search_graph or that a prior node result is required — that flow is only discoverable by reading the schema's for_node_id description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_expert_intelligenceCRead-onlyInspect
Parallel search across top strategist agency frameworks and specialist strategist graphs. (1 registry lookup + 8 parallel Cypher queries across specialist strategist graphs + 1 merge pass.)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max trends to return (default: 10, max: 50) | |
| query | Yes | Natural language search query (e.g., 'tequila spirits market', 'streetwear subcultures') | |
| userId | No | Optional user identifier for trial usage tracking. | |
| min_score | No | Minimum relevance threshold (default: 0.6) | |
| include_evidence | No | Bundle evidence for each trend (default: true) | |
| max_evidence_per_trend | No | Evidence items per trend (default: 5, max: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description does add non-obvious operational context (1 registry lookup + 8 parallel Cypher queries + 1 merge pass), which hints at fan-out cost and latency. However, it omits the behavioral fact that actually matters for selection: that this is a legacy alias of get_specialist_intelligence.
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?
Two compact sentences with the primary capability front-loaded and no filler. The parenthetical pipeline detail is borderline noise for an agent choosing a tool, but it is short and does not obscure the main clause.
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 six-parameter search tool with no output schema, the description should at least explain what comes back conceptually (trends, evidence bundles) and warn that it is a legacy alias. It does neither, and the annotation-only signal about aliasing would be invisible to an agent reading the description alone.
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 all six parameters (query, limit, min_score, include_evidence, max_evidence_per_trend, userId) documented in the schema itself. The description adds no parameter-level detail such as query syntax expectations or how min_score interacts with limit, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a recognizable action ('parallel search across ... frameworks and ... specialist strategist graphs'), but the vocabulary ('strategist agency frameworks', 'specialist strategist graphs') does not match the tool name ('expert') or the annotation title ('Specialist Intelligence'), leaving the actual resource ambiguous. It also never distinguishes itself from the sibling tool 'get_specialist_intelligence', which the annotations imply it aliases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_specialist_intelligence, search_graph, or get_domain_intelligence. Since the annotation title labels this a 'Legacy Alias', the absence of any routing note to the canonical tool is a meaningful omission.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_intelligence_dossierARead-onlyInspect
Assembles a certified multi-source Evidence Dossier on any market topic or emerging theme in a single call. Synthesizes domain graph case studies, consulting reports (McKinsey, PwC), expert quotes, and macroeconomic metrics (Census, FRED, BEA, BLS) with contrarian adversarial testing. Optionally includes an executive 4-beat PSFK journalistic briefing. ($0.50)
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The commercial topic, category dynamic, or business question to investigate. | |
| sector | No | Optional sector focus: retail, sports, food, beauty, tech, auto, travel. | |
| userId | No | Optional user identifier. | |
| tickers | No | Optional corporate tickers to cross-reference against earnings call Q&A intelligence (e.g. ['NKE', 'DECK']). | |
| include_editorial | No | Set to true to generate a publication-ready 4-beat PSFK executive briefing (lens-first, dual-layer hooks, inline Fodda Claude query links, zero em dashes). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive, non-idempotent), so the description earns credit for adding what they don't: a $0.50 cost, the specific external source classes synthesized, adversarial testing, and an optional editorial segment. It still omits latency and why the operation is non-idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and scope, then the source composition, then the optional add-on and price. Every clause carries information and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what the dossier contains (case studies, reports, quotes, macro metrics, adversarial testing) and discloses cost. It stops short of describing return structure, size, or turnaround expectations for what is a heavy multi-source aggregation call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents topic, sector, userId, tickers, and include_editorial. The description hints at 'emerging theme' for topic and the PSFK briefing for include_editorial but adds no syntax, format, or constraint detail beyond the schema; baseline 3 applies.
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?
States a specific verb ('Assembles') and resource ('certified multi-source Evidence Dossier') with clear scope ('any market topic or emerging theme in a single call'). An agent can tell what it produces, though it never names or contrasts against siblings like deep_research_topic or get_domain_intelligence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not guidance, and no alternative tool is mentioned despite many overlapping siblings (get_evidence, deep_research_topic, get_domain_intelligence). 'In a single call' faintly implies an aggregation/efficiency tradeoff but leaves the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_label_valuesARead-onlyIdempotentInspect
List all brands, locations, technologies, audiences, or trends within a specific knowledge graph. Use to explore what a graph contains — e.g., "what brands are in the retail graph?" or "what locations does the fashion graph cover?". To get a complete list of every trend in a graph, call with label="Trend" — this returns the full deterministic list, useful for industry-report graphs where search may return partial results. (Graph taxonomy label value lookup.)
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | The label to fetch values for (e.g., 'Brand', 'Location', 'Technology', 'Audience', 'RetailerType', 'Trend') | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graphId | Yes | The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index' | |
| property | No | Optional property to return values for. Defaults vary by label. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is low; the description still adds meaningful behavior by noting that label="Trend" returns the full deterministic list whereas search may return partial results. It omits return shape and rate/pagination behavior, but the determinism disclosure is the key operational trait.
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?
Purpose and the Trend special case are front-loaded and the example queries earn their space, but the trailing parenthetical '(Graph taxonomy label value lookup.)' repeats information already stated in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 4 parameters all fully documented in the schema, no output schema, and annotations covering safety, the description supplies enough context to call the tool correctly. Minor gaps remain around return format, which the absence of an output schema leaves unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3, but the description adds value beyond the schema by showing how the 'label' parameter selects the value set and by singling out label="Trend" as the deterministic full-list case, plus giving free-text example labels.
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?
States a specific verb and resource ('List all brands, locations, technologies, audiences, or trends within a specific knowledge graph') and clarifies it is a taxonomy value lookup, so an agent can distinguish it from search_graph and get_node without opening a schema.
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?
Gives clear triggering conditions with concrete example queries ('what brands are in the retail graph?') and a specific when-to-use case for label="Trend" where search may return partial results. It does not name the alternative sibling tools explicitly, but the alternative behavior (search) is described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_accountARead-onlyIdempotentInspect
Check the current user's account status: API call balance, plan, enabled/disabled graphs, and profile info. Use when the user asks "how many API calls do I have?", "what plan am I on?", "what graphs can I access?", or similar account questions. Returns live data — not cached from session start. (User account status & credit balance lookup.)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint=false. The description adds a genuinely useful behavioral trait beyond them: 'Returns live data — not cached from session start,' telling the agent the result is fresh rather than session-stale.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and returned fields, and the usage triggers come next. The trailing parenthetical '(User account status & credit balance lookup.)' largely restates what precedes it, a minor 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?
With no output schema, the description carries the return-value burden and does so by listing the four returned data categories. Auth/permission requirements are not stated, a small gap for an account-scoped tool, but overall the definition is sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. The description's enumeration of returned fields compensates adequately for the absent output 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?
States a specific verb (check) and resource (current user's account), then enumerates exactly what is returned: API call balance, plan, enabled/disabled graphs, and profile info. This clearly distinguishes it from siblings like list_graphs, get_capabilities, and get_my_earnings.
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?
Gives concrete when-to-use triggers with sample user questions ('how many API calls do I have?', 'what plan am I on?'), which is strong routing guidance. It does not name alternative tools or exclusions, so it stops short of the 5 bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_earningsCRead-onlyIdempotentInspect
Check the expert's Fodda earnings.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Optional user identifier. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds no behavioral context beyond that: it doesn't say whether an expert account is required, what time window the earnings cover, what currency/units are returned, or how the optional userId changes the result.
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?
A single six-word sentence that is front-loaded and wastes nothing. It is brief rather than bloated, though the brevity shades into under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only one loosely documented parameter, the description should do more work: it never defines 'Fodda', never states the access requirement, and never describes what the returned earnings contain or over what period. An agent can guess the gist but cannot confidently call or interpret the result.
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 and one optional parameter, the schema carries the parameter burden, so the baseline of 3 applies. The description adds nothing about the optional userId and its 'my'/'the expert's' framing sits in slight tension with a parameter that lets you look up someone else.
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?
It gives a verb ("Check") and a resource ("the expert's Fodda earnings"), so the general intent is legible. But "Fodda earnings" is platform jargon that is never explained, and nothing distinguishes this from siblings like get_earnings_intelligence, get_company_earnings, or get_earnings_divergence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites (e.g., must be an onboarded expert), and no mention of any alternative tool. The agent is left to infer that this is for the caller's own earnings purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_neighborsARead-onlyIdempotentInspect
Discover what's connected to a specific trend — related brands, technologies, locations, and cross-domain links. Returns curated editorial connections between trends. Use after search_graph to map the territory around a trend, find which brands are connected, or understand cross-domain relationships. Requires node_id from a prior search_graph result. (1-hop graph relationship traversal from seed node in Neo4j.)
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Traversal depth (default 1, max 2) | |
| limit | No | Maximum results (default 50) | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graphId | Yes | The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index' | |
| direction | No | Traversal direction: 'out' (default) follows outgoing edges, 'in' follows incoming edges | |
| seed_node_ids | Yes | Array of node IDs to start traversal from. MUST be actual node_id values from a prior search_graph result (e.g. ["2507.0"]). Node IDs are NOT sequential integers — do NOT guess or invent IDs like "1", "2", "3". Always call search_graph first to obtain valid IDs. | |
| relationship_types | No | Filter by relationship types: 'EVIDENCED_BY', 'RELATED_TO', 'SEMANTICALLY_SIMILAR', 'ASSOCIATED_BRAND', 'MENTIONS_BRAND', 'IN_LOCATION' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false and openWorld=false, so the safety profile is covered. The description adds genuinely useful context beyond that: results are 'curated editorial connections', the underlying store is Neo4j, and it is a 1-hop traversal from the seed node.
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?
Four sentences, front-loaded with the outcome and followed by usage and the structural note. Slightly dense and the parenthetical about Neo4j 1-hop traversal is somewhat redundant with the usage sentence, but there is no 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?
There is no output schema, so the description carries the burden of describing returns, and it does so adequately ('curated editorial connections'). Combined with the prerequisite and the traversal semantics, an agent has what it needs to call this correctly; only a note on result shape/size would push it higher.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, including depth/limit defaults and the direction semantics. The description only reiterates the node_id prerequisite, which the schema also states emphatically, so it adds little beyond the structured fields.
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 names a specific verb and resource ('Discover what's connected to a specific trend') and enumerates the kinds of results (related brands, technologies, locations, cross-domain links). It also distinguishes itself from the sibling search_graph by positioning itself as the follow-up relational traversal step, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use it after search_graph and lists concrete intents (map territory, find connected brands, understand cross-domain relationships), plus a prerequisite (node_id from a prior search_graph result). It lacks explicit when-not-to-use guidance or named alternative tools beyond the prerequisite, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_nodeARead-onlyIdempotentInspect
Get the full profile of a specific trend — detailed description, lifecycle stage (emerging/building/mature), signal strength, geographic scope, and all properties. Use when you need deeper detail on a single trend after search_graph returned a summary. Requires node_id from a prior search_graph result. (Direct Neo4j node metadata lookup by ID.)
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | The node_id from a prior search_graph result (e.g. '2507.0'). MUST come from the search result's node_id field. Node IDs are NOT sequential integers — do NOT guess or invent IDs like '1', '2', '3'. Do NOT pass the trend name. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graphId | Yes | The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that this is a 'Direct Neo4j node metadata lookup by ID', implying a raw, non-enriched read, but says nothing about failure behavior for invalid IDs, cost, or 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?
Front-loaded with the payload contents, then usage, then the prerequisite. The trailing parenthetical on Neo4j is slightly awkward and could be folded in earlier, but every sentence carries 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?
With no output schema, the description usefully enumerates the return fields and the required input provenance, which is the main thing an agent needs. Remaining gaps (error handling for bad IDs, response shape details) are minor for a simple read-by-ID 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% and the nodeId/graphId descriptions already carry the critical warnings (non-sequential IDs, do not pass trend name, use list_graphs for graphId). The description only restates the node_id provenance requirement, so the schema does the heavy lifting; baseline 3 applies.
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?
States a specific verb and resource ('Get the full profile of a specific trend') and enumerates the returned fields (description, lifecycle stage, signal strength, geographic scope). It explicitly differentiates itself from the sibling search_graph by contrasting a summary with deep single-node detail.
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?
Gives an explicit trigger ('Use when you need deeper detail on a single trend after search_graph returned a summary') plus the prerequisite that node_id must come from a prior search_graph result. The alternative tool and the condition that selects it are both named, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_onboarding_statusARead-onlyIdempotentInspect
Check the current progress and status of the expert onboarding process. Setting waitForResearch: true holds the call server-side (~25s) while background research is running, returning immediately once complete or failed. next_action describes the expert's next step in plain English; relay it in your own words.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Optional user identifier. | |
| analystId | No | Optional specific Analyst ID to check status for. | |
| waitForResearch | No | When true, holds the call server-side (up to 25s) while background research is running, returning immediately once complete or failed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a safe, idempotent, closed-world read. The description adds genuinely new behavioral context beyond that: waitForResearch blocks server-side for ~25s and returns early on completion/failure, and it tells the agent how to handle the next_action field (relay in its own words).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose, then the blocking-time caveat, then the output-handling instruction. No 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?
With no output schema, the description must carry return-value semantics, and it only documents next_action. Progress/status fields and what the response looks like otherwise are left unspecified, so the picture is partial for a status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so userId, analystId, and waitForResearch are already documented. The description largely restates the waitForResearch schema text rather than adding format or precedence details, so baseline 3 applies.
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?
States a specific verb (check) and resource (expert onboarding progress/status), which is distinct from the many other 'check_*_status' siblings by virtue of the onboarding scope. It does not, however, explicitly contrast itself with begin_expert_onboarding or expert_onboarding_research, so the agent must infer the boundary.
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?
Usage is implied (call this to see where an expert is in onboarding) and the waitForResearch guidance implies a polling use case, but there is no explicit when-to-use/when-not or naming of the alternative tools that also report progress.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_intelligenceARead-onlyInspect
Published corporate research and market forecast layer: searches industry report knowledge graphs (DHL, PwC, Unilever, Jack Morton, and specialist research firms) for published forecasts, projections, and whitepaper findings. Returns an executive 5-pillar analyst briefing by default with cross-graph validation. Does NOT return living consumer domain trends (use get_domain_intelligence) or standalone data points (use search_statistics). When the query names a specific company or brand, brand_tracker is the entry point. No graph ID needed.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Format mode: 'editorial' (default) returns a 5-pillar executive analyst briefing with cross-graph validation and expert spotlight; 'data' returns raw structured trend records. | editorial |
| limit | No | Max trends to return (default: 10, max: 50) | |
| query | Yes | Natural language search query (e.g., 'luxury resale market size', 'electric vehicle adoption rates', 'Jack Morton fan experience') | |
| userId | No | Optional user identifier for trial usage tracking. | |
| min_score | No | Minimum relevance threshold (default: 0.6) | |
| include_evidence | No | Bundle evidence for each trend (default: true) | |
| max_evidence_per_trend | No | Evidence items per trend (default: 5, max: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral context beyond that: the default output is 'an executive 5-pillar analyst briefing with cross-graph validation' and no graph ID is required. It stops short of rate-limit/auth detail, but with annotations carrying the rest a 4 is warranted.
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 purpose is front-loaded and each subsequent sentence carries routing or scope information, so most content earns its place. It is dense and slightly long, but there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with no output schema, the description covers purpose, alternatives, and the shape of the return (5-pillar briefing vs. raw structured records). An agent has enough to call it correctly, though a note on the non-idempotent/read behavior of repeated queries is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters including the view enum, limit, and min_score defaults. The description adds only marginal parameter meaning (implying the editorial default mode and that no graph ID is needed). Baseline 3 is correct when the schema does the heavy lifting.
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?
States a specific verb and resource ('searches industry report knowledge graphs ... for published forecasts, projections, and whitepaper findings') and names the data sources. It explicitly differentiates itself from siblings get_domain_intelligence, search_statistics, and brand_tracker, so an agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not guidance ('Does NOT return living consumer domain trends ... use get_domain_intelligence') and routes to the correct alternative for a specific condition ('When the query names a specific company or brand, brand_tracker is the entry point'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_specialist_intelligenceARead-onlyInspect
[Deprecated: Prefer search_graph for topic-routed multi-graph searches, or consult_human_agent / consult_analyst for direct strategist and thinker consultation.] Proprietary strategist frameworks and niche domain intelligence layer: searches specialist knowledge graphs curated by domain strategists, newsletters, and boutique studios (culture, youth trends, commerce, media). Returns specialist frameworks and analysis; does not return broad consumer domain trends (use get_domain_intelligence) or standalone statistics (use search_statistics). When the query names a specific company or brand, brand_tracker is the entry point. No graph ID needed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max trends to return (default: 10, max: 50) | |
| query | Yes | Natural language search query (e.g., 'tequila spirits market', 'streetwear subcultures') | |
| userId | No | Optional user identifier for trial usage tracking. | |
| min_score | No | Minimum relevance threshold (default: 0.6) | |
| include_evidence | No | Bundle evidence for each trend (default: true) | |
| max_evidence_per_trend | No | Evidence items per trend (default: 5, max: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false). The description adds real behavioral context beyond that: a deprecation notice steering toward preferred tools, and the fact that no graph ID is required despite being a graph search. It does not address auth, rate limits, or pagination, so it stops short of 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?
The description is dense but well front-loaded: deprecation warning first, then purpose, then routing exclusions. Every clause carries routing or scope information, though the parenthetical list of curators is slightly ornamental and could be trimmed.
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 six parameters (one required), no output schema, and a crowded sibling set of similarly named intelligence tools (get_domain_intelligence, get_expert_intelligence, get_report_intelligence, search_graph), the description supplies everything needed to select and call it: scope, return type, exclusions, and named alternatives. Nothing further is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (limit, query, userId, min_score, include_evidence, max_evidence_per_trend) are already documented in the schema. The description adds only the 'No graph ID needed' detail, which clarifies an absent parameter rather than explaining existing ones. Baseline 3 applies when the schema does the heavy lifting.
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?
States a specific verb and resource ('searches specialist knowledge graphs curated by domain strategists, newsletters, and boutique studios') and names what it returns (specialist frameworks and analysis). It explicitly distinguishes itself from get_domain_intelligence, search_statistics, and brand_tracker, so an agent can route without opening any schema.
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?
Gives explicit alternatives with selection conditions: search_graph for topic-routed multi-graph searches, consult_human_agent/consult_analyst for direct strategist consultation, brand_tracker when a company/brand is named. It also states negative scope (not broad consumer trends, not standalone statistics), which is exactly the when-not guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_supplemental_contextCRead-onlyInspect
Multi-source API fan-out pulling real-time economic data from 80+ institutional sources (FRED, BLS, US Census, World Bank, etc.). (1 memory cache check + 8 parallel outbound HTTP API calls to institutional data sources + 1 5-bucket categorization pass.)
| Name | Required | Description | Default |
|---|---|---|---|
| geo | No | Country code or geography hint (e.g., 'TH', 'US', 'GB') for country-filtered queries. | |
| query | Yes | The topic or query to get supplemental data for (e.g., 'sustainable packaging', 'tequila spirits market', 'Gen Z beauty'). Include country names if searching non-US markets (e.g. 'Thailand consumer sentiment'). | |
| brands | No | Brand names to include in demand/product lookups (e.g., ['Nike', 'Adidas']). Triggers Google Trends comparison and Amazon product search. | |
| domain | No | Domain hint to improve source routing: 'retail', 'beauty', 'fashion', 'sports', 'food', 'technology', 'culture', 'travel', 'design', 'macro'. Do NOT pass 'culture' or 'technology' for macro economic or consumer sentiment queries — leave omitted or set to 'macro'. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graph_ids | No | Graph IDs from prior search results — helps refine domain inference. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=false. The description adds useful latency/cost context by disclosing the cache check, 8 parallel outbound HTTP calls, and a categorization pass, which implies external fan-out and variable results. It stops short of stating return shape, rate limits, or failure behavior, so it earns moderate credit on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with sources, but the parenthetical about '1 memory cache check + 8 parallel outbound HTTP API calls + 1 5-bucket categorization pass' is implementation detail an agent cannot act on. It spends words on internal mechanics rather than on decision-relevant 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?
With no output schema and 6 parameters, the description should describe what comes back and in what form, but it says nothing about the return payload. Combined with missing usage guidance, it is not complete enough for an agent to invoke confidently despite annotations covering the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema alone fully documents all six parameters including the tricky 'domain' exclusion rule. The description adds no parameter-level detail, making the 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?
The verb ('fan-out pulling') and resource ('real-time economic data from 80+ institutional sources') are stated concretely, so the mechanical operation is graspable. However, the purpose is framed around internal architecture rather than an agent-facing task, and it never clarifies what 'supplemental' context means or how it differs from siblings like get_domain_intelligence or search_statistics. That ambiguity keeps it at a vague-purpose 3.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description contains no when-to-use, when-not-to-use, or alternative-selection guidance. Nothing tells the agent which query types should route here versus the many intelligence/search siblings. Only the parameter docs hint at usage, and those are not part of the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_validated_trendsBRead-onlyIdempotentInspect
Returns market-validated consumer trends from corporate earnings reports cross-validated by Fodda's analysis pipeline. Connects earnings commentary (analyst concerns, CEO statements) with consumer trend signals.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default 20, max 50) | |
| search | No | Free text search in validated trends (e.g. 'resale', 'inventory', 'pricing'). | |
| sector | No | Filter by sector (e.g. 'retail', 'sportswear', 'beauty'). | |
| ticker | No | Filter by company ticker symbol (e.g. 'NKE', 'LULU'). | |
| userId | No | Optional user identifier for trial usage tracking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety and idempotency profile is covered. The description usefully adds provenance (earnings cross-validation by Fodda's pipeline) but says nothing about result volume, freshness, or pagination behavior; a 3 is appropriate with annotations doing the heavy lifting.
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?
Two tight sentences, front-loaded with what is returned and followed by the data lineage. No filler, though the second sentence is somewhat redundant with the 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?
Parameters and safety annotations are fully covered, but with no output schema the description never sketches the shape of a returned trend, and it provides no routing against the dense set of trend-fetching siblings. Adequate but with clear gaps for a discovery tool in a crowded namespace.
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 all five parameters documented, so the baseline is 3. The description adds no syntax, format, or interaction detail beyond the schema (e.g., how limit and search combine), so it earns no lift.
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?
States a specific verb ('Returns') and resource ('market-validated consumer trends from corporate earnings reports'), and clarifies the cross-validation source. However, it does not distinguish itself from close siblings like get_detected_themes, discover_adjacent_trends, or get_earnings_intelligence, leaving the agent to infer boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, and no prerequisites or exclusions. Given the many adjacent trend/earnings siblings, this omission is significant; the agent must guess which trend tool fits a given query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_analystsBRead-onlyIdempotentInspect
List available Synthetic Analysts — named expert personas grounded in specific knowledge graphs. Each analyst has a unique voice, methodology, and domain expertise that cannot be replicated by web search. Use when user asks to "talk to" or "consult" an expert, or when you need specialist depth on culture, strategy, or innovation topics. (Fast analyst registry metadata lookup.)
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional natural language search query to filter analysts by lane, domain, expertise, or topics (e.g. 'streetwear', 'earnings', 'marketing'). | |
| userId | No | Optional user identifier. | |
| category | No | Filter by agent category: 'human_agent' (Human Agent), 'classic_agent' (Classic Agent), 'c_suite_agent' (C-Suite Agent), 'synthetic_agent' (Synthetic Agent), or 'all' (default). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds useful context that this is a "Fast analyst registry metadata lookup," signaling lightweight metadata return rather than full content, but it says nothing about pagination, fields returned, or auth.
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 purpose and usage are front-loaded, but the middle sentence ("unique voice, methodology... cannot be replicated by web search") is promotional filler that doesn't help an agent invoke the tool, and the trailing parenthetical is awkwardly placed after the usage instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should carry more of the return-value burden; "registry metadata lookup" hints at the shape but never specifies what an analyst entry contains. For a zero-required-parameter list tool this is adequate but leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the query, userId, and category semantics (including the enum) are already fully documented. The description adds no parameter-level meaning beyond what the schema provides, which lands at the 3 baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("List available Synthetic Analysts") and adds a disambiguating gloss ("named expert personas grounded in specific knowledge graphs"). However, it describes only synthetic analysts while the sibling annotation title ("List Human Agents, C-Suite & Analysts") and the category enum (human_agent, classic_agent, c_suite_agent) indicate the tool lists broader categories — a scope mismatch that slightly clouds what is actually returned.
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?
Gives a when-to-use trigger ("user asks to 'talk to' or 'consult' an expert, or when you need specialist depth"), but that trigger actually points at consult_analyst/consult_human_agent rather than a listing tool, and no alternative or exclusion is named. The guidance is implied rather than properly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_graphsARead-onlyIdempotentInspect
List all knowledge graphs the user can access — IDs, descriptions, authors, sectors, signal counts. Use FIRST in any session to discover available sources before searching. Returns graph metadata needed for graphId parameters in other tools. Deprecated: waldo, psfk (use retail/tech/food/travel/fashion/beauty/sports instead). (Fast graph registry metadata lookup.)
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Optional user identifier. Authenticated users are identified automatically via API key. For trial users, this helps track usage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description adds value by disclosing which graph identifiers are deprecated (waldo, psfk) and what valid alternatives to use. It also hints at the call being a fast registry lookup. It stops short of noting result size or pagination behavior, so not a full 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?
Front-loaded with the action and guidance, and the deprecated-identifier warning earns its place. The trailing parenthetical '(Fast graph registry metadata lookup.)' is redundant restatement of the opening clause and slightly dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned metadata fields and flagging stale graph IDs. For a single-optional-parameter read tool this is nearly complete; only result-size or pagination expectations for a full listing are unaddressed.
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% and userId is fully documented there, so the baseline is 3. The description never mentions userId or its trial-user usage nuance, adding no parameter meaning 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?
States a specific verb and resource ('List all knowledge graphs the user can access') and enumerates the returned fields (IDs, descriptions, authors, sectors, signal counts). This is clearly distinguishable from siblings like search_graph, get_node, and toggle_graph_preference, which operate on a single graph or its contents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to 'Use FIRST in any session to discover available sources before searching,' establishing sequencing against the search/graph-detail siblings. It also states the downstream purpose: the metadata is needed for graphId parameters in other tools, so the agent knows why and when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_scheduled_reportsBInspect
Use when establishing recurring intelligence tracking, setting up automated briefings, or monitoring category/brand shifts on a recurring schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Email address to deliver reports to | ||
| query | No | For "create": the research query to run | |
| action | Yes | ||
| brands | No | For brand_intelligence: brand names to track (e.g., ["Nike", "Patagonia"]) | |
| graphs | No | Specific graph IDs to search. Default: all accessible | |
| cadence | No | weekly or daily (Mon-Fri). Default: weekly | |
| timezone | No | Delivery timezone for 9am delivery. Default: new_york | |
| report_type | No | topic_research for sector trends, brand_intelligence for competitive tracking | |
| schedule_id | No | For cancel/update/pause/resume: the schedule ID | |
| slack_webhook | No | Optional Slack webhook URL for delivery |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=false, which signals a mutating, externally-visible operation. The description adds nothing behavioral on top: it never mentions that cancel/pause are state-changing, that creates are non-idempotent (idempotentHint=false), or anything about delivery mechanics. The name's 'manage' hints at a multi-action lifecycle, but the description leaves it undisclosed.
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?
A single tightly written sentence with no filler, front-loaded with 'Use when'. It is efficient, though it spends its one sentence entirely on usage framing rather than distributing attention across purpose and operations.
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?
This is a 6-action lifecycle tool with 10 parameters, a required 'action' discriminator, and no output schema. The description does not explain any action, what each returns, or how schedule_id gates cancel/update/pause/resume. For a tool this complex, the usage-only sentence leaves major operational context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 90%, so the schema itself documents email, query, brands, graphs, cadence, timezone, report_type, schedule_id, and slack_webhook in detail. The description contributes no additional parameter meaning, and notably never explains the required 'action' enum, which is the one gap the schema leaves. Baseline 3 applies when the schema does the heavy lifting.
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 only frames the tool as usage scenarios ('establishing recurring intelligence tracking', 'setting up automated briefings') and never states what the tool actually does operationally. An agent learns that scheduling is involved but not that it supports create/list/cancel/update/pause/resume. Purpose is inferable from the name and title rather than from the description 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?
It gives clear, concrete when-to-use conditions: recurring tracking, automated briefings, and recurring category/brand shift monitoring. No when-not conditions or alternatives are named, but no sibling tool in the list competes for this scheduling job, so the omission is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_urlARead-onlyIdempotentInspect
Extract clean text content from any URL. Use this when a user shares a link (competitor site, news article, client brief, trend report) and wants to cross-reference it against Fodda knowledge graphs. Returns structured text ready for analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to read and extract content from | |
| userId | No | Optional user identifier for usage tracking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true and destructiveHint=false, covering the full safety profile. The description adds non-redundant value by disclosing the return shape ('structured text ready for analysis'), which matters since no output schema exists. It stops short of describing failure modes (paywalls, non-HTML content, fetch errors), which would be useful for a web-fetch tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. The core action is front-loaded ('Extract clean text content from any URL'), followed by the trigger and the return value in descending order of importance.
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-purpose fetch tool with a fully-covered schema and complete annotations, the definition covers action, trigger, and output format. The only residual gap is behavior on un-fetchable URLs (auth walls, non-text content), which is a minor omission rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (url, userId) are already documented in the schema. The description adds no format detail, validation rules, or clarification about the optional tracking parameter. Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Extract clean text content from any URL.' The scope ('any URL') and output ('clean text content') are immediately clear. It doesn't explicitly distinguish itself from any sibling, but no sibling in the list performs URL fetching, so the omission is low-cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete when-to-use trigger: 'when a user shares a link (competitor site, news article, client brief, trend report) and wants to cross-reference it against Fodda knowledge graphs.' The examples are helpful context. It lacks any when-NOT-to-use guidance or named alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_deliverableBInspect
Use when commissioning a finished document from an analyst — an executive briefing, research memo, strategic assessment, or publication-ready article.
| Name | Required | Description | Default |
|---|---|---|---|
| brief | Yes | 2–5 sentences: audience, goal, constraints. Agents imitate the example in the tool description — be concrete. | |
| userId | No | Optional user identifier. | |
| analyst_id | Yes | The internal analyst ID producing the deliverable (from list_analysts). This is an internal identifier; the expert's display name is in the response. | |
| attachments | No | Optional supporting text files mounted into the analyst's workspace (max 5). | |
| offering_key | Yes | The offering to commission (e.g., 'marketing_plan'). See the `offerings` array on each analyst from list_analysts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), so the write nature is already known. The description adds nothing about the operational flow — notably that this is likely asynchronous and results are retrieved via check_deliverable_status, or whether repeat calls duplicate work. Useful output-type detail, but key behavioral context is missing.
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?
A single front-loaded sentence that leads with the trigger condition and then lists concrete examples. No filler, though the examples could have been traded for the missing operational or sibling-routing detail.
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 non-idempotent mutation that kicks off analyst work and has no output schema, the description should explain the follow-up (e.g., use check_deliverable_status to poll results). It covers what the tool produces but omits the lifecycle an agent needs to complete the task correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are self-documenting and the description carries no param burden. Baseline 3 is appropriate. Note a latent inconsistency: the `brief` schema says 'Agents imitate the example in the tool description', yet the description contains no such 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?
States a clear verb-plus-resource (commissioning a finished document from an analyst) and enumerates concrete output types (executive briefing, research memo, strategic assessment, article), so the agent knows this produces a written deliverable. It stops short of explicitly naming the sibling it is not — consult_analyst — leaving the distinction to inference from 'finished document'.
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 a positive trigger ('Use when commissioning a finished document'), which is clearer than most siblings. However it names no alternative and gives no when-not condition, so an agent choosing between this, consult_analyst, and check_deliverable_status must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_expert_introAInspect
Use when requesting an advisory introduction or consultation with an On-Request Human Agent or active domain specialist (for 1-on-1 advisory, strategic projects, or when an expert does not have an instant calendar booking link). Fodda concierge coordinates the introduction and sends next steps via email.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Optional user identifier. | |
| message | No | Brief description of what you'd like to discuss, project scope, or questions for the expert. | |
| expert_id | Yes | The expert's display name or analyst ID (e.g., 'Peter Abraham' or 'peter-abraham-bicycles-cycling'). | |
| requester_name | No | The name of the requester. | |
| requester_email | Yes | The email address of the person requesting the introduction or consultation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-idempotent, open-world behavior. The description adds genuinely useful process context — a concierge coordinates the introduction and next steps arrive by email (implying an asynchronous, out-of-band response) — but says nothing about auth requirements, response latency, or what the immediate call returns.
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?
Two sentences, front-loaded with the 'Use when' trigger, and the parenthetical scenarios map directly to the usage condition. Slightly dense with stacked qualifiers, but nothing is redundant 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?
For a 5-parameter request tool with no output schema, the description covers the essential flow: who coordinates the intro and how the requester hears back (email). What is missing is the immediate return value of the call and whether the request can be duplicated, but the async nature is adequately conveyed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including expert_id's name-or-ID format and message's purpose) is already documented in the schema. The description adds no syntax, format, or routing guidance beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (requesting an advisory introduction/consultation) and scopes it to On-Request Human Agents or domain specialists. It distinguishes itself from instant-calendar booking, though it never names the closely related siblings consult_human_agent or consult_analyst, leaving some sibling differentiation implicit.
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 opening 'Use when...' clause gives clear triggering conditions (1-on-1 advisory, strategic projects, no instant booking link), which is more than implied usage. However, it does not explicitly exclude or compare against the sibling consultation tools, so an agent must still infer which of consult_analyst/consult_human_agent/request_expert_intro applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_interviewAInspect
Schedule a quick 5–10 minute voice interview with the Fodda AI interviewer on Google Meet. Can specify an ISO datetime, human-readable local time, or request an instant interview now.
| Name | Required | Description | Default |
|---|---|---|---|
| now | No | Set to true to dispatch an instant interview bot immediately | |
| userId | No | Optional user identifier. | |
| datetime | No | ISO-8601 UTC datetime for the scheduled interview (e.g. "2026-07-14T19:00:00.000Z") | |
| localTimeStr | No | Human-readable local time representation (e.g. "Tuesday, July 14 at 3:00 PM EDT") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and closed-world, so the mutation profile is covered structurally. The description adds useful context about the medium (voice, Google Meet) and duration, but says nothing about side effects, whether re-scheduling replaces a prior booking, or auth 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?
Two tight sentences, front-loaded with the core action and then the input flexibility. Every clause carries information; zero padding.
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 4-param, no-required, no-output-schema scheduling tool, the description adequately conveys the action and the accepted time inputs. It is slightly thin on post-scheduling expectations (confirmation, link delivery) and parameter interaction, but nothing essential to making the call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented in the input schema. The description restates the time-specification options at a high level but adds no format or precedence detail (e.g., what happens if both 'now' and 'datetime' are supplied) 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?
States a specific verb (schedule) and resource (interview), plus distinguishing detail: a 5-10 minute voice interview with the Fodda AI interviewer on Google Meet. No sibling tool competes for this action, but the description is self-sufficient and unambiguous about what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the three input modes (ISO datetime, human-readable local time, instant now), which implicitly tells the agent how to invoke it, but it gives no when-to-use vs when-not guidance or prerequisites (e.g., whether an account or onboarding is required first).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_graphARead-onlyInspect
Use when researching market trends, category dynamics, consumer behavior shifts, competitor intelligence, or broad topic investigation across 100+ curated knowledge graphs. Returns trends with cited evidence, lifecycle stage (emerging/building/mature), and structured next_moves. If query names a company/brand, prefer brand_tracker.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Execution mode: "research" for topic research, "compare" for upload & compare intelligence. Defaults to "research". | research |
| graph | No | Alias for graphId. | |
| limit | No | Maximum number of results (default 10, max 50) | |
| query | Yes | The search query. Country/regional terms filter results at the macro level. Note: Knowledge graph trends are indexed at country/global scope — for sub-national or city-level data (e.g., "US coastal cities"), also query get_supplemental_context. | |
| graphs | No | Optional explicit graph scope: an array of graph IDs. When provided, the search is restricted to EXACTLY these graphs — no fallback routing to other graphs. Graph IDs that are unknown, not live, or not yet synced are reported back in `unavailable_graphs` with a reason. Takes precedence over graphId. | |
| sector | No | Optional sector focus (e.g. 'Alcoholic Drinks', 'Non-Alcoholic Drinks', 'Food & Beverage', 'Retail', 'Beauty', 'Sports', 'Technology', 'Luxury Goods'). When provided, scopes trend discovery to this sector. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graphId | No | Optional graph ID. If omitted, searches ALL accessible graphs. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'delta/the-connection-index' | |
| graph_id | No | Alias for graphId. | |
| skip_skills | No | If true, skip applying any enabled search enhancement skills for this query only. Use when you want raw, un-enhanced graph results. Default: false. | |
| use_semantic | No | Whether to use semantic search (default true) | |
| include_evidence | No | If true, batch-fetch supporting evidence articles inline with results. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint, so safety is covered. The description adds real behavioral context beyond them: it discloses the return shape (trends + cited evidence + lifecycle stage + next_moves) and cross-graph reachability (100+ graphs). It does not explain the idempotentHint=false nuance or result limits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: usage first, then return contract, then sibling routing. No filler, and the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by summarizing the return payload. For a 12-parameter tool it leaves the multi-alias scoping (graph vs graphId vs graphs) and mode=compare semantics to the schema, which is reasonable, but it could say more about graph selection behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (mode, graphs, graphId alias, sector, limit, use_semantic, include_evidence, etc.) is already documented in the schema. The description adds no parameter-level detail such as mode semantics or graph-scoping precedence, so baseline 3 applies.
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?
States a specific verb-and-resource (search across 100+ curated knowledge graphs) plus the output contract (trends with cited evidence, lifecycle stage, next_moves). It also names the sibling to use instead for company/brand queries, so an agent can discriminate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use list (market trends, category dynamics, consumer behavior shifts, competitor intelligence, broad topic investigation) and an explicit routing rule: prefer brand_tracker when the query names a company/brand. The alternatives condition is stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_insightsARead-onlyInspect
Narrative and qualitative evidence layer only: returns expert quotes, editorial analysis, and strategic perspectives from named strategists and industry leaders across all graphs, with source attribution and parent trend context. Does NOT return raw statistics or market sizing — use search_statistics for hard numbers, or get_domain_intelligence for full trends with bundled evidence. When the query names a specific company or brand, brand_tracker is the entry point.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default: 10, max: 50) | |
| query | Yes | Natural language search query. E.g. 'expert views on Gen Z luxury' or 'resale market statistics' | |
| types | No | Comma-separated evidence types to search: quote, interpretation, signal, metric, or 'all' (default: 'quote,interpretation' — narrative. For hard numbers, use search_statistics or add 'metric'). | |
| sector | No | Optional sector focus to filter results (e.g. 'Alcoholic Drinks', 'Non-Alcoholic Drinks', 'Food & Beverage', 'Retail', 'Beauty', 'Sports', 'Technology', 'Luxury Goods'). When provided, bypasses graph IDs and scopes insights extraction to this sector across graphs. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graph_id | No | Optional graph ID to search. If omitted (or when sector is provided), searches across all relevant graphs in parallel. Examples: 'food', 'retail', 'tech', 'travel', 'beauty', 'sports', 'fashion', 'sic', 'pew', 'ce-design'. | |
| min_score | No | Minimum relevance threshold 0-1 (default: 0.60). Use 0.60 for broad queries, 0.70+ for precise lookups. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description still adds real behavioral context: results carry source attribution and parent trend context, and search spans 'all graphs' in parallel. It stops short of pagination or result-volume behavior, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no waste, and the positive scope is front-loaded before the exclusions and alternatives. Every clause routes the agent to a decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description conveys what is returned (quotes, analysis, attribution, trend context) and what is not. With annotations covering the safety profile and a 100%-documented schema, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (query, types, sector, graph_id, min_score, limit, userId) is already documented in the schema. The description's mention of 'across all graphs' lightly reinforces the graph_id default, but adds no syntax or format detail beyond the schema. Baseline 3 applies.
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?
States a specific scope: 'Narrative and qualitative evidence layer only' returning expert quotes, editorial analysis, and strategic perspectives. It distinguishes itself from siblings search_statistics and get_domain_intelligence by name, so an agent can tell exactly which tool this is without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-not and alternatives: raw statistics go to search_statistics, full trends with bundled evidence to get_domain_intelligence, and company/brand queries to brand_tracker. The conditions that select each alternative are spelled out rather than left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_statisticsARead-onlyInspect
Quantitative statistics and hard numbers layer only: returns specific figures, survey percentages, market sizes, growth rates, and quantitative data points linked to parent trends across Fodda knowledge graphs (domain, specialist, and report). Does NOT return narrative analysis, trends, or quotes — use search_insights for quotes/analysis, or get_domain_intelligence for full trends. When the query names a specific company or brand, brand_tracker is the entry point. Try this before external supplemental data tools.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default: 10, max: 50) | |
| query | Yes | What data to search for (e.g., 'luxury resale market size', 'secondhand clothing sales volume', 'Gen Z spending behavior') | |
| sector | No | Optional sector focus to filter results (e.g. 'Alcoholic Drinks', 'Non-Alcoholic Drinks', 'Food & Beverage', 'Retail', 'Beauty', 'Sports', 'Technology', 'Luxury Goods'). When provided, bypasses graph IDs and scopes evidence extraction to this sector across graphs. | |
| userId | No | Optional user identifier for trial usage tracking. | |
| graph_id | No | Optional graph ID to search. If omitted (or when sector is provided), searches across all relevant graphs in parallel. Examples: 'food', 'retail', 'tech', 'travel', 'fashion', 'beauty', 'sports', 'sic', 'pew', 'ce-design'. | |
| min_score | No | Minimum relevance threshold, 0-1 (default: 0.60). Use 0.60 for broad queries, 0.70+ only for precise data lookups. | |
| include_signals | No | Also include Signal nodes (case studies, brand examples). Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description usefully adds the content boundary (returns only hard numbers, not narrative) and the cross-graph scope (domain, specialist, report graphs). It doesn't address the notable idempotentHint=false or result format, so a 4 rather than 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?
Three tightly packed sentences that are front-loaded with the core purpose before exclusions and sibling routing. Every clause earns its place; no 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, but the description fully explains what comes back (figures, percentages, market sizes, growth rates linked to parent trends) and what does not. Combined with rich annotations and a fully documented schema, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters including sector scoping, graph_id, min_score thresholds, and limit. The description adds no parameter-level detail (e.g., how sector interacts with graph_id beyond what the schema says), so the baseline 3 applies.
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?
States a specific content type ('quantitative statistics and hard numbers layer only') and enumerates what it returns: figures, survey percentages, market sizes, growth rates. It explicitly distinguishes itself from siblings like search_insights and get_domain_intelligence, so an agent can identify it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not guidance ('Does NOT return narrative analysis, trends, or quotes'), names the correct alternatives for those cases (search_insights, get_domain_intelligence), routes company/brand queries to brand_tracker, and gives ordering advice ('Try this before external supplemental data tools'). Full routing decision is encoded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackAIdempotentInspect
Forward user feedback, feature requests, complaints, or exit reasons to the Fodda team via email and Slack. Call this whenever a user shares feedback — including when they want to leave, report a problem, or suggest an improvement. (User feedback logging.)
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category: 'feedback', 'bug', 'feature_request', 'exit_reason', 'complaint' | |
| feedback | Yes | The user's feedback, complaint, suggestion, or exit reason | |
| user_email | No | User's email if known (for follow-up) | |
| recent_prompt | No | The prompt or question that generated the answer being commented on |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=false). The description adds genuinely useful context beyond them: that delivery happens through two channels (email and Slack) and targets a specific team, which tells the agent the effect is an outbound notification.
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?
Two front-loaded sentences deliver purpose and trigger conditions with no wasted clauses. The trailing parenthetical '(User feedback logging.)' is mild redundancy with the opening sentence, which keeps it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description doesn't need to explain return values, and the annotations carry the safety profile. What an agent needs to call it correctly — purpose, triggers, channels, parameters — is present, leaving only minor gaps like any confirmation or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters, including the category vocabulary. The description adds no syntax, format, or per-parameter guidance beyond what the schema provides, so the baseline of 3 applies.
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 names a specific verb (Forward), a clear resource (user feedback, feature requests, complaints, exit reasons), and the destination (the Fodda team via email and Slack). No sibling tool overlaps this function, so an agent can identify it immediately without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit triggering conditions — call whenever a user shares feedback, with concrete examples (wants to leave, reports a problem, suggests an improvement). It lacks an explicit when-not statement, but no sibling tool competes for this behavior, so the routing guidance is effectively complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sign_up_free_accountAInspect
Create a free Fodda Base account (100 API calls/month across ALL knowledge graphs) and send a confirmation email. GUARDRAIL: only call this AFTER the user has explicitly provided their email and asked to create an account — never sign someone up proactively or with an email inferred from earlier context. Can also pass profile fields (name, job_title, company). (User registration and free tier provision.)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | User's full name (optional — collect conversationally after signup) | |
| Yes | User's email address (required) | ||
| company | No | User's company name (optional) | |
| job_title | No | User's job title (optional) | |
| user_confirmed | Yes | Must be true — the user must have explicitly asked to create an account before this tool is called. Never set this to true speculatively or on behalf of the user. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a non-read-only, non-idempotent, non-destructive write. The description adds substantial context beyond that: the free tier quota, that a confirmation email is sent, and the strong precondition that user_confirmed must reflect an explicit request. This goes well past the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, followed by the critical guardrail, so the ordering is sound and every sentence carries weight. The trailing parenthetical '(User registration and free tier provision.)' is mildly redundant with the opening clause, costing a point.
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 write tool with no output schema, the description covers purpose, side effect (email), quota, and the confirmation precondition well. It stops short of describing duplicate-email behavior or error handling, which an agent might want, though idempotentHint=false in annotations signals repeat calls are not safe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the required user_confirmed flag is already documented in the schema. The description restates the optional profile fields (name, job_title, company) but adds no syntax or format detail beyond what the schema provides, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a free Fodda Base account'), names the quota (100 API calls/month across ALL knowledge graphs), and notes the side effect (confirmation email). An agent can distinguish this registration tool from siblings like get_my_account without opening the schema.
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 GUARDRAIL sentence gives explicit when-to-call and when-not-to-call guidance: only after the user explicitly provides an email and asks to create an account, never proactively or with an inferred email. This is exactly the kind of routing/exclusion instruction the dimension rewards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_basic_infoAInspect
Submit basic expert details (name, role, knowledge area, consultation call rate, and optional bio/headshot) to initialize the Human Agent onboarding session and begin saving progress. This is the step where Fodda starts saving the expert's onboarding. Before calling, show the Terms (https://www.fodda.ai/terms) and Privacy Policy (https://www.fodda.ai/privacy) links and get an explicit yes.
| Name | Required | Description | Default |
|---|---|---|---|
| bio | No | Optional short biography for the expert's public profile. | |
| name | Yes | The expert's full name | |
| role | Yes | The expert's current role or title | |
| userId | No | Optional user identifier. | |
| callPrice | No | The expert's preferred 1-hour video/telephone consultation rate: 'No Calls', '$250/hr', '$500/hr', '$750/hr', '$1,000/hr', or '$2,000/hr'. Recorded under callPrice. | |
| description | No | Optional comprehensive description of the expert's background and domain focus. | |
| headshotUrl | No | Optional public HTTPS URL to the expert's profile headshot image (URL only, no file uploads). | |
| knowledgeArea | Yes | The expert's primary knowledge area | |
| termsAccepted | Yes | The expert must explicitly accept the Fodda Terms of Service (https://www.fodda.ai/terms) and Privacy Policy (https://www.fodda.ai/privacy) after reviewing the links. Must be true to begin saving onboarding progress. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-idempotent write (readOnlyHint=false, idempotentHint=false). The description adds meaningful context beyond that: this call initializes the session, is where Fodda begins persisting progress, and requires explicit terms acceptance first. It does not describe what a re-call does or the response, but the added behavioral context is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose followed by behavioral note and the terms precondition. There is minor redundancy ('begin saving progress' vs 'starts saving the expert's onboarding'), but no wasted scaffolding.
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 9-parameter mutation with no output schema, the description covers purpose, the required terms-acceptance gate, and the state change. It omits what the call returns and where it sits relative to the broader onboarding tool sequence, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 9 parameters including the callPrice enum values and the headshotUrl URL-only constraint. The description merely restates a subset of fields (name, role, knowledge area, call rate, bio/headshot), adding no syntax or constraint detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Submit basic expert details... to initialize the Human Agent onboarding session') and names the exact fields being submitted. It is clearly a write step in onboarding, distinguishable from read siblings like get_onboarding_status, though it does not explicitly contrast itself with the related begin_expert_onboarding or finalize_byo_mcp_onboarding.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear precondition ('Before calling, show the Terms and Privacy Policy links and get an explicit yes') and identifies this as the step where saving begins. It lacks explicit when-not guidance or routing to the sibling onboarding tools, but the operational context is well established.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_expertise_analysisBInspect
Submit the analyzed voice study and expertise map to proceed to theme confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Optional user identifier. | |
| voiceStudy | Yes | JSON string of the voice study | |
| expertTopics | Yes | JSON string of the expertise topics | |
| termsAccepted | No | Optional if already accepted at basic info. The expert must have accepted the Fodda Terms of Service (https://www.fodda.ai/terms) and Privacy Policy (https://www.fodda.ai/privacy). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the mutation profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false), so the description needn't restate safety. It adds only the workflow sequencing context (advances to theme confirmation) and says nothing about what happens to prior analysis, whether submission can be retried, or validation 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?
A single front-loaded sentence with no filler; the action and the next stage are stated immediately. It is efficient, though slightly terse for a workflow-step 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?
With a fully covered schema and annotations carrying the safety profile, the description only needed to convey workflow placement, which it does. It remains thin on preconditions and the consequence of submission, leaving the agent to infer the surrounding onboarding sequence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (userId, voiceStudy, expertTopics, termsAccepted) are already documented by the schema. The description adds no parameter-level detail beyond what the structured field already provides, making the baseline of 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?
States a specific verb (submit) and resource (analyzed voice study and expertise map) and ties it to the next workflow stage (theme confirmation). It distinguishes itself reasonably from siblings like submit_basic_info by naming the specific artifacts, though it doesn't explicitly differentiate against the other submit_* onboarding 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?
"To proceed to theme confirmation" implies this is a sequential onboarding step, which gives some usage context. However there is no explicit when-to-use-vs-alternative guidance or stated prerequisites (e.g., that basic info must be submitted first, or that confirm_themes follows).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_mcp_sourceBInspect
Connect and probe a Bring-Your-Own-MCP (BYO-MCP) endpoint for expert live grounding. Discovers available tools and derives topic coverage for profile modeling.
| Name | Required | Description | Default |
|---|---|---|---|
| mcpUrl | Yes | The HTTPS URL of the expert's public MCP endpoint (e.g. 'https://games.thisisdelightful.com/mcp') | |
| userId | No | Optional user identifier. | |
| mcpAuthType | No | Authentication type for the MCP endpoint. Phase 1 supports 'none' (public/open endpoints) only. Defaults to 'none'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, openWorldHint=true and destructiveHint=false, so the agent already knows this reaches outside the system and mutates state. The description adds that it performs discovery of available tools and derives coverage, but does not disclose side effects such as whether the endpoint is persisted, whether repeated calls create duplicate sources, or any auth/rate-limit constraints beyond what the schema's enum notes say.
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?
Two compact sentences with no filler, and the core action is front-loaded. It could be slightly tighter, but nothing is wasted.
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 non-idempotent external-network tool with no output schema, the description should say what the probe yields or persists and what success looks like. It gestures at 'derives topic coverage' but leaves the return/state outcome unspecified, so the definition is adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (mcpUrl, userId, mcpAuthType) is documented in the schema, including the Phase 1 'none'-only restriction. The description adds no syntax, format, or validation detail beyond the structured fields, so the baseline 3 applies.
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?
States a specific verb pair (connect and probe) and a specific resource (BYO-MCP endpoint), plus the downstream purpose (topic coverage for profile modeling). It is clear what the tool does, though it never names the sibling tools in the onboarding flow (e.g. begin_expert_onboarding, finalize_byo_mcp_onboarding) that an agent must sequence it against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is a step in expert onboarding but gives no explicit when-to-use, no prerequisites (e.g. that a user/expert context must exist first), and no alternatives to compare against. An agent must infer its place in the onboarding sequence from the sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
toggle_graph_preferenceAIdempotentInspect
Enable or disable any knowledge graph, supplemental data source, or skill for the user. Use this when the user says "Turn off Paralogy", "Enable igloo", "Disable the economics data", or similar. The change is permanent until toggled again. (User graph enablement preference write.)
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | true to enable (turn on), false to disable (turn off). | |
| target_id | Yes | The ID of the graph, skill, or data source to toggle (e.g., "paralogy", "igloo", "retail", "get_bea_spending_snapshot"). Use the exact ID from list_graphs. | |
| user_email | No | Optional. Use ONLY when operating as an Admin on behalf of another user to specify their email. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the mutation-without-destruction profile is covered. The description adds genuinely useful context by stating the change is permanent until toggled again, which the annotations do not convey.
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?
Purpose is front-loaded in the first sentence, followed by usage examples and the persistence caveat, with zero filler. Slightly repetitive with the trailing parenthetical, but efficient overall.
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, yet the description covers purpose, when to use it, valid ID sourcing, and the permanence of the change, while annotations handle the safety profile. It is complete enough to call correctly, missing only failure/confirmation behavior.
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 each of the three parameters already documented (including the admin-only user_email case). The description adds no syntax, format, or constraint detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (enable/disable) and a clearly scoped resource (knowledge graph, supplemental data source, or skill for the user), matching the tool name. It is easy to distinguish from read-oriented siblings like get_capabilities or list_graphs, though it does not explicitly name a confusable sibling to rule out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete trigger phrases ("Turn off Paralogy", "Enable igloo") that map user intent directly to the call, and points to list_graphs as the source of valid IDs. It lacks an explicit when-not-to-use clause or named alternative, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_user_profileAIdempotentInspect
Save the user's research profile to improve the relevance of future responses. Call this after you understand the user's role, industry, and research needs. The profile persists across sessions — you only need to set it once, then update if their focus changes. Write BEHAVIORAL INSTRUCTIONS, not a bio. Format: one sentence of identity (who they are and how they use Fodda), then numbered directives that change how you synthesize and frame responses. Include: what evidence to prioritize, how to frame conclusions, geographic needs, and output structure preferences. Max 2000 chars per field. (User persona context update.)
| Name | Required | Description | Default |
|---|---|---|---|
| userContext | Yes | Behavioral framing instructions for this person. Format: one sentence of identity, then numbered FRAMING INSTRUCTIONS. Example: "Agency strategist doing time-pressured pitches. (1) Lead with landscape orientation — top 3-5 macro forces. (2) Prioritize commercially validated signals over design concepts. (3) ALWAYS differentiate by geography. (4) Executive-ready framing — concise, pitch-deck-ready. (5) Strongest findings first, not exhaustive lists." Max 2000 chars. | |
| accountContext | No | Description of their company: industry, size, key markets, competitive position, mission. Shared across all users on this account. Max 2000 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare write, idempotent, non-destructive, closed-world. The description adds genuine context beyond them: cross-session persistence, the fact that it need only be set once, the 2000-char limit, and content-quality expectations (behavioral instructions, not a bio). It stops short of describing failure modes or validation 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?
Front-loads purpose and trigger, then condenses format rules into dense but non-redundant sentences. The trailing '(User persona context update.)' repeats the title and could be cut, but overall it is efficient for a tool with this much behavioral 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?
With no output schema and only two params, the description covers purpose, timing, persistence, format, and limits adequately. It omits what a successful call returns and whether omitted accountContext persists, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds format and content guidance beyond the schema: one identity sentence plus numbered directives, and the four categories to cover (evidence priority, framing, geography, output structure). This meaningfully shapes how the agent fills userContext.
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?
States a specific verb (save/update) and resource (user's research profile) plus the downstream effect on response relevance. No sibling tool does anything similar, so the agent can identify it unambiguously from the name and opening sentence.
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?
Gives a clear trigger ('Call this after you understand the user's role, industry, and research needs') and clarifies repeat behavior ('only need to set it once, then update if their focus changes'). No explicit exclusions or alternative tools are named, but none are needed given no functional sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_claimARead-onlyInspect
Use when evaluating a strategy, pressure-testing a client hypothesis, finding counter-evidence, or uncovering missing assumptions. Evaluates any market or strategic claim against primary evidence and divergence.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | The factual claim, hypothesis, or statement to verify against expert evidence. | |
| domain | No | Optional domain hint or industry sector (e.g. 'retail', 'tech', 'data privacy', 'supply chain') to assist in discovery when analyst_id is omitted. | |
| userId | No | Optional user identifier. | |
| analyst_id | No | Optional internal expert ID of the Human Agent (from find_expert or list_analysts). If omitted, automatically discovers and routes to the most relevant Human Agent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, and idempotentHint=false, so the safety profile is covered structurally. The description adds that verification runs 'against primary evidence and divergence,' which hints at the evaluation basis, but it omits that this routes to a human expert (only the annotation title reveals this), and says nothing about latency, cost, or whether the call blocks on human input.
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?
Two tight sentences with no filler. The trigger list is front-loaded, though the order is slightly inverted: it leads with when to use and only then says what the tool does, which is acceptable but not optimal for a 'what is this' scan.
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?
There is no output schema, so the description ideally would sketch the return shape (evidence, divergence signal, expert attribution), but it only names 'primary evidence and divergence' in passing. For a read-only call that invokes a human agent asynchronously, the description also fails to set expectations about timing or result delivery, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all four parameters are documented in the schema, including the analyst_id discovery fallback and the domain hint. The description adds no parameter-level meaning beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it 'Evaluates any market or strategic claim against primary evidence and divergence.' That is clear enough to know what the tool does. However, it never distinguishes itself from the very close sibling verify_market_claim, nor from consult_human_agent, leaving the agent to guess which evaluation tool to pick.
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 opening clause gives concrete when-to-use triggers: 'evaluating a strategy, pressure-testing a client hypothesis, finding counter-evidence, or uncovering missing assumptions.' This is a clear usage context. It stops short of 5 because it offers no exclusions or alternatives, despite verify_market_claim and consult_human_agent being obvious candidates to route between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_market_claimARead-onlyInspect
Use when evaluating a strategy, pressure-testing a client hypothesis, finding counter-evidence, or uncovering missing assumptions. Evaluates any market or strategic claim against primary evidence and divergence.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | The exact market thesis or assertion to evaluate (e.g. 'Casual golf venues are losing momentum' or 'Gen Z is trading down on essentials to protect beauty spending'). | |
| sector | No | Optional sector focus: retail, sports, food, beauty, tech, auto, travel. | |
| userId | No | Optional user identifier. | |
| context | No | Optional category, brand, or operational context to sharpen evidence retrieval (e.g. 'golf entertainment venues Topgolf Off Golf' or 'beauty personal care'). | |
| strict_gates | No | Whether all 5 gates must pass strictly. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so safety is covered. The description adds that evaluation runs against 'primary evidence and divergence,' giving some behavioral flavor, but it never explains what the '5 gates' (named only in the annotation title) are, nor that idempotentHint=false implies repeated calls may yield different results.
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?
Two tight sentences with no filler, and the usage contexts are front-loaded ahead of the purpose statement. It is efficiently sized, though the leading 'Use when' construction slightly defers the core definition of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should signal what a caller receives back, yet it never describes the result shape (verdict, evidence, gate outcomes) or what 'divergence' means operationally. The '5 gates' concept central to the tool is only hinted at in the annotation title, not explained, leaving a meaningful gap for a non-trivial evaluation 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 each of the five parameters documented including examples, so the schema carries the semantic load. The description adds nothing beyond the schema, which is the expected baseline for full 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 second sentence states a specific verb and resource ('Evaluates any market or strategic claim against primary evidence and divergence'), so an agent knows what the tool does. However, it does not distinguish itself from the near-identically named sibling verify_claim, leaving the boundary between the two ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly enumerates four triggering scenarios (evaluating a strategy, pressure-testing a hypothesis, finding counter-evidence, uncovering missing assumptions), which is strong when-to-use guidance. It stops short of any when-not condition or alternative routing, notably failing to mention verify_claim, the obvious competing tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
56 tool updates
v1.3.3- Added
begin_expert_onboarding - Added
brainstorm_topic - Added
brand_tracker - Added
check_deliverable_status - Added
check_research_status - Added
check_supplemental_status - Added
confirm_themes - Added
consult_analyst - Added
consult_human_agent - Added
deep_research_topic - Added
discover_adjacent_trends - Added
draft_linkedin_article - Added
draft_linkedin_post - Added
expert_onboarding_research - Added
finalize_byo_mcp_onboarding - Added
find_expert - Added
generate_visual - Added
get_capabilities - Added
get_company_earnings - Added
get_detected_themes - Added
get_domain_intelligence - Added
get_earnings_divergence - Added
get_earnings_intelligence - Changed
get_evidence7 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / for_node_id / descriptionPrevious value: -"The ID of the node (Trend or Article)"New value: +"The node_id from a prior search_graph result (e.g. '2507.0'). MUST come from the search result's node_id field. Node IDs are NOT sequential integers — do NOT guess or invent IDs like '1', '2', '3'. Do NOT pass the trend name." - changed
Input schema / properties / graphId / descriptionPrevious value: -"The graph ID"New value: +"The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index'" - changed
Input schema / properties / userId / descriptionPrevious value: -"Unique identifier for the user (Required)"New value: +"Optional user identifier for trial usage tracking." - changed
Input schema / requiredPrevious value: -[ - "graphId", - "for_node_id", - "userId" -]New value: +[ + "graphId", + "for_node_id" +] - changed
Output schema / (root)Previous value: -{ - "properties": { - "evidence": { - "description": "Array of evidence items with source URLs, titles, snippets, and relevance scores", - "type": "array" - }, - "node_id": { - "description": "The node this evidence supports", - "type": "string" - }, - "usage": { - "properties": { - "total_billable_units": { - "type": "number" - } - }, - "type": "object" - } - }, - "type": "object" -}New value: +null
- Added
get_expert_intelligence - Added
get_intelligence_dossier - Changed
get_label_values8 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / graphId / descriptionPrevious value: -"The graph ID"New value: +"The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index'" - changed
Input schema / properties / label / descriptionPrevious value: -"The label to fetch values for"New value: +"The label to fetch values for (e.g., 'Brand', 'Location', 'Technology', 'Audience', 'RetailerType', 'Trend')" - added
Input schema / properties / propertyAdded value: +{ + "description": "Optional property to return values for. Defaults vary by label.", + "type": "string" +} - changed
Input schema / properties / userId / descriptionPrevious value: -"Unique identifier for the user (Required)"New value: +"Optional user identifier for trial usage tracking." - changed
Input schema / requiredPrevious value: -[ - "graphId", - "label", - "userId" -]New value: +[ + "graphId", + "label" +] - changed
Output schema / (root)Previous value: -{ - "properties": { - "count": { - "description": "Number of values found", - "type": "number" - }, - "label": { - "description": "The label queried", - "type": "string" - }, - "values": { - "description": "Array of valid values for the label", - "type": "array" - } - }, - "type": "object" -}New value: +null
- Added
get_my_account - Added
get_my_earnings - Changed
get_neighbors9 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / directionAdded value: +{ + "description": "Traversal direction: 'out' (default) follows outgoing edges, 'in' follows incoming edges", + "enum": [ + "in", + "out" + ], + "type": "string" +} - changed
Input schema / properties / graphId / descriptionPrevious value: -"The graph ID"New value: +"The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index'" - changed
Input schema / properties / relationship_types / descriptionPrevious value: -"Filter by relationship types"New value: +"Filter by relationship types: 'EVIDENCED_BY', 'RELATED_TO', 'SEMANTICALLY_SIMILAR', 'ASSOCIATED_BRAND', 'MENTIONS_BRAND', 'IN_LOCATION'" - changed
Input schema / properties / seed_node_ids / descriptionPrevious value: -"Array of node IDs to start traversal from"New value: +"Array of node IDs to start traversal from. MUST be actual node_id values from a prior search_graph result (e.g. [\"2507.0\"]). Node IDs are NOT sequential integers — do NOT guess or invent IDs like \"1\", \"2\", \"3\". Always call search_graph first to obtain valid IDs." - changed
Input schema / properties / userId / descriptionPrevious value: -"Unique identifier for the user (Required)"New value: +"Optional user identifier for trial usage tracking." - changed
Input schema / requiredPrevious value: -[ - "graphId", - "seed_node_ids", - "userId" -]New value: +[ + "graphId", + "seed_node_ids" +] - changed
Output schema / (root)Previous value: -{ - "properties": { - "edges": { - "description": "Array of relationships between nodes", - "type": "array" - }, - "nodes": { - "description": "Array of neighboring nodes", - "type": "array" - }, - "usage": { - "properties": { - "total_billable_units": { - "type": "number" - } - }, - "type": "object" - } - }, - "type": "object" -}New value: +null
- Changed
get_node7 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / graphId / descriptionPrevious value: -"The graph ID"New value: +"The graph ID. Use list_graphs to see all options. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'michaels-2026-creativity-trend-report', 'delta/the-connection-index'" - changed
Input schema / properties / nodeId / descriptionPrevious value: -"The ID of the node"New value: +"The node_id from a prior search_graph result (e.g. '2507.0'). MUST come from the search result's node_id field. Node IDs are NOT sequential integers — do NOT guess or invent IDs like '1', '2', '3'. Do NOT pass the trend name." - changed
Input schema / properties / userId / descriptionPrevious value: -"Unique identifier for the user (Required)"New value: +"Optional user identifier for trial usage tracking." - changed
Input schema / requiredPrevious value: -[ - "graphId", - "nodeId", - "userId" -]New value: +[ + "graphId", + "nodeId" +] - changed
Output schema / (root)Previous value: -{ - "properties": { - "display": { - "description": "Display name of the node", - "type": "string" - }, - "id": { - "description": "Node ID", - "type": "string" - }, - "labels": { - "description": "Array of node labels/types", - "type": "array" - }, - "properties": { - "description": "Key-value properties of the node", - "type": "object" - } - }, - "type": "object" -}New value: +null
- Added
get_onboarding_status - Added
get_report_intelligence - Added
get_specialist_intelligence - Added
get_supplemental_context - Added
get_validated_trends - Added
list_analysts - Added
list_graphs - Added
manage_scheduled_reports - Removed
psfk_overview - Added
read_url - Added
request_deliverable - Added
request_expert_intro - Added
schedule_interview - Changed
search_graph15 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / graphAdded value: +{ + "description": "Alias for graphId.", + "type": "string" +} - changed
Input schema / properties / graphId / descriptionPrevious value: -"The graph ID. For PSFK verticals use: 'retail', 'beauty', or 'sports'. Other graphs: 'psfk' (all verticals), 'sic' (Strategic Independent Culture), 'waldo'."New value: +"Optional graph ID. If omitted, searches ALL accessible graphs. Examples: 'retail', 'tech', 'food', 'travel', 'beauty', 'sports', 'sic', 'pew', 'ce-design', 'ezra-eeman-wayfinder', 'dhl-ecommerce-trends-2026', 'automotive-color-trends', 'alyson-stevens-macro', 'dentsu-creative-marketing', 'pwc/sxsw-2026-key-insights', 'green-house/thrive-report', 'delta/the-connection-index'" - added
Input schema / properties / graph_idAdded value: +{ + "description": "Alias for graphId.", + "type": "string" +} - added
Input schema / properties / graphsAdded value: +{ + "description": "Optional explicit graph scope: an array of graph IDs. When provided, the search is restricted to EXACTLY these graphs — no fallback routing to other graphs. Graph IDs that are unknown, not live, or not yet synced are reported back in `unavailable_graphs` with a reason. Takes precedence over graphId.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / include_evidenceAdded value: +{ + "description": "If true, batch-fetch supporting evidence articles inline with results. Default: true.", + "type": "boolean" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of results (default 25, max 50)"New value: +"Maximum number of results (default 10, max 50)" - added
Input schema / properties / modeAdded value: +{ + "default": "research", + "description": "Execution mode: \"research\" for topic research, \"compare\" for upload & compare intelligence. Defaults to \"research\".", + "enum": [ + "research", + "compare" + ], + "type": "string" +} - changed
Input schema / properties / query / descriptionPrevious value: -"The search query"New value: +"The search query. Country/regional terms filter results at the macro level. Note: Knowledge graph trends are indexed at country/global scope — for sub-national or city-level data (e.g., \"US coastal cities\"), also query get_supplemental_context." - added
Input schema / properties / sectorAdded value: +{ + "description": "Optional sector focus (e.g. 'Alcoholic Drinks', 'Non-Alcoholic Drinks', 'Food & Beverage', 'Retail', 'Beauty', 'Sports', 'Technology', 'Luxury Goods'). When provided, scopes trend discovery to this sector.", + "type": "string" +} - added
Input schema / properties / skip_skillsAdded value: +{ + "description": "If true, skip applying any enabled search enhancement skills for this query only. Use when you want raw, un-enhanced graph results. Default: false.", + "type": "boolean" +} - changed
Input schema / properties / userId / descriptionPrevious value: -"Unique identifier for the user (Required)"New value: +"Optional user identifier for trial usage tracking." - changed
Input schema / requiredPrevious value: -[ - "graphId", - "query", - "userId" -]New value: +[ + "query" +] - changed
Output schema / (root)Previous value: -{ - "properties": { - "results": { - "description": "Array of matching nodes (trends, articles)", - "type": "array" - }, - "search_method": { - "description": "Search method used: 'vector', 'keyword', or 'fallback'", - "type": "string" - }, - "total": { - "description": "Total number of results found", - "type": "number" - }, - "usage": { - "description": "Billing/usage metadata", - "properties": { - "total_billable_units": { - "type": "number" - } - }, - "type": "object" - } - }, - "type": "object" -}New value: +null
- Added
search_insights - Added
search_statistics - Added
send_feedback - Added
sign_up_free_account - Added
submit_basic_info - Added
submit_expertise_analysis - Added
submit_mcp_source - Added
toggle_graph_preference - Added
update_user_profile - Added
verify_claim - Added
verify_market_claim
6 tool updates
v1.3.2- First observed
get_evidence - First observed
get_label_values - First observed
get_neighbors - First observed
get_node - First observed
psfk_overview - First observed
search_graph
TDQS
Scored across 55 tools
The set contains a large cluster of overlapping search/intelligence tools (search_graph, get_evidence, get_domain_intelligence, get_specialist_intelligence, get_expert_intelligence, get_report_intelligence, search_statistics, search_insights, get_intelligence_dossier) whose boundaries rely on subtle, description-embedded distinctions an agent can easily misjudge. More damning, verify_market_claim and verify_claim have essentially identical descriptions, guaranteeing misselection. Several tools do the same thing under different names.
Almost everything follows a snake_case verb_noun pattern (get_*, search_*, list_*, draft_*, consult_*, submit_*, check_*, request_*), which is predictable and readable. A few outliers like brand_tracker, brainstorm_topic, expert_onboarding_research, and deep_research_topic drop the verb, but the convention is largely consistent.
55 tools is far beyond a well-scoped surface and well past the 25+ 'too many' threshold, signaling bloat. The count reflects many overlapping intelligence/search variants plus onboarding, deliverables, and account tools bundled into one server, making the surface hard to navigate.
The surface is broad and covers account management, graph discovery, search, earnings intelligence, expert onboarding, consultation, deliverables, feedback, and scheduled reporting with few obvious dead ends. Minor gaps exist but the domain lifecycle is largely covered.
Maintenance
Related MCP Connectors
Real-time AI intelligence signals and temporal knowledge graph for agent economy
- AimOAuthcom.startaiming
Market knowledge layer for AI agents: competitors, opinions and regulations shaping your market.
AI-powered media & entertainment intelligence — research, briefs, and market data.
Private company data, entity-resolved news, targeted lists, and alternative signals for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceBuild Real-Time Knowledge Graphs for AI Agents31,683Apache 2.0
- FlicenseNot gradedqualityFmaintenanceProvides AI agents with persistent memory and knowledge management through a comprehensive knowledge graph platform. Enables storing, searching, and managing entities, relationships, and observations with advanced features like trending analysis and smart ranking.3-
- AlicenseNot gradedqualityDmaintenanceReal-time curated knowledge API for AI agents. Updated Mon/Wed/Fri from 31 sources covering AI/tech, startups, alternative markets, and emerging markets — no scraping or storage required.1MIT
- AlicenseAqualityBmaintenanceSelf-hosted personal knowledge graph for Claude that persists across sessions, devices, and tools. Built on Neo4j with local semantic embeddings; OAuth 2.1 lets Claude Code, Claude Desktop, and claude.ai web all hit the same graph.2396 npm2MIT