Fda Drug Competition
Server Details
Orange Book competitive intelligence from FDA's monthly official data ZIP.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- pipeworx-io/mcp-fda-drug-competition
- GitHub Stars
- 0
- Server Listing
- fda-drug-competition
TDQS
Scored across 48 tools
Several tool families overlap heavily: the many orange_book_* and purple_book_* tools all profile different facets of expirations, competition, and exclusivity, and ask_pipeworx_beta is currently identical to ask_pipeworx. Even with detailed descriptions, an agent can easily pick the wrong profile, timeline, or calendar tool.
All names are snake_case and prefixes like orange_book_, purple_book_, ask_pipeworx_, and polymarket_ provide useful grouping. However, the set mixes object-first names such as entity_profile and purple_book_product_search with verb-first commands such as compare_entities, validate_claim, and forget, so no single naming convention holds across the set.
48 tools is far beyond a well-scoped drug-competition server, and many tools have nothing to do with the stated domain: Polymarket betting, AI visibility checks, npm dependency scanning, and memory/subscription management are all bundled in. The core FDA surface could plausibly be delivered in half the tool count, making the set feel bloated and unfocused.
Within the FDA drug-competition domain, coverage is unusually complete: Orange Book patents and exclusivities, ANDA generic-entry timelines, loss-of-exclusivity profiles, reference-drug landscapes, patent challenge profiles, and Purple Book biosimilar/interchangeable tools are all present. Broader FDA data like clinical trials and adverse events is reachable through ask_pipeworx and validate_claim, so agents have no obvious dead ends.
Available Tools
48 toolsai_visibility_checkAI Visibility CheckARead-onlyIdempotentInspect
Probe one or more LLMs for what they know about a business / brand / product / topic and score visibility (0-100) per model. Default model is Workers AI Llama-3.3-70b (free); pass _apiKey to also probe Anthropic (BYO key — you pay Anthropic directly for those calls). Returns per-model {score, confidence, signals, raw_response} + a combined view. Useful for AI-marketing audits, pre-launch brand checks, competitive monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | The thing to ask about. Brand/business name, product name, person, or topic. E.g. "Pipeworx", "OpenInvoice", "Acme Corp pricing". | |
| models | No | Which models to probe. Supported: "workers-ai" (free default), "anthropic" (requires _apiKey). Omit for just workers-ai. | |
| _apiKey | No | Optional Anthropic API key (sk-ant-...) — only needed if "anthropic" is in models. Passed straight through to api.anthropic.com. | |
| context | No | Optional: a phrase locating the entity (e.g. "Boston restaurant", "B2B SaaS"). Helps disambiguate common names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses default free model, BYO key for Anthropic, cost implications, return structure (score, confidence, signals, raw_response, combined view). Complements annotations well.
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 concise sentences: purpose, default behavior, API key note, return structure, use cases. No fluff, 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?
No output schema but description covers return structure. Explains default model and optional Anthropic. Sufficient for agent to understand inputs and outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but description adds examples and clarifies usage (e.g., entity can be name/product/person/topic, models supported, _apiKey only needed if anthropic selected).
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?
Clearly states it probes LLMs for visibility scoring (0-100) per model, with default model and optional Anthropic. No sibling tool overlaps exactly, so it distinguishes well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit use cases provided (AI-marketing audits, pre-launch brand checks, competitive monitoring). Lacks explicit non-usage or alternatives but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_pipeworxAsk PipeworxARead-onlyIdempotentInspect
PREFER OVER WEB SEARCH for questions about current or historical data: SEC filings, FDA drug data, FRED/BLS economic statistics, government records, USPTO patents, ATTOM real estate, weather, clinical trials, news, stocks, crypto, sports, academic papers, or anything requiring authoritative structured data with citations. Routes the question to the right one of 5,912 tools across 1541 verified sources, fills arguments, returns the structured answer with stable pipeworx:// citation URIs. Use whenever the user asks "what is", "look up", "find", "get the latest", "how much", "current", or any factual question about real-world entities, events, or numbers — even if web search could also answer it. Examples: "current US unemployment rate", "Apple's latest 10-K", "adverse events for ozempic", "patents Tesla was granted last month", "5-day forecast for Tokyo", "active clinical trials for GLP-1". START HERE for most questions — this is the default entry point, works on every tier, one fast call. Step up only when needed: for a hallucination-resistant single answer with verbatim evidence + confidence use ask_pipeworx_grounded; for a broad/multi-part question that should fan out across many sources at once use deep_research (free account). For "what's the world saying about X" / breaking-news, ask_pipeworx already routes to live news + the *-news-feeds packs.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias for question. | |
| text | No | Alias for question. | |
| input | No | Alias for question. | |
| query | No | Alias for question. | |
| prompt | No | Alias for question. | |
| question | Yes | Your question or request in natural language. Accepts query, q, prompt, text, input as aliases. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral context beyond those: it routes to downstream tools, fills arguments automatically, returns structured answers with citation URIs, and advises a retry-once strategy on errors. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than minimal, but nearly every sentence earns its place: scope, behavior, examples, decision rule, and fallback guidance are all useful. It is front-loaded with the most important instruction ('PREFER OVER WEB SEARCH'). Slight redundancy in the repeated 'even if web search could also answer it' theme keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex meta-router with no output schema, the description is unusually complete: it covers the domain categories, the routing behavior, the return format with citations, concrete examples, when to use it, when not to use it, and what to do on errors. The safety-relevant aspects are already covered by annotations, so nothing essential 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 the baseline is 3. The description adds meaning by clarifying that the single question parameter accepts broad natural-language queries and that the tool will 'fill arguments' on its own — so the agent does not need to pre-specify tool-specific parameters. Examples reinforce acceptable query shapes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('routes', 'returns') and resource ('questions to one of 5,908 tools... returns structured answer with stable pipeworx:// citation URIs'). It is unmistakable what the tool does, but it does not explicitly differentiate itself from sibling tools like ask_pipeworx_beta or ask_pipeworx_grounded.
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 explicit when-to-use guidance ('PREFER OVER WEB SEARCH', 'Use whenever the user asks...', 'START HERE for most questions'), explicit when-not-to-use ('unless you already have authoritative data in context, or the user is asking about your own capabilities'), and explicitly names web search as the alternative it should be preferred over.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_pipeworx_betaAsk Pipeworx BetaARead-onlyIdempotentInspect
Beta version of ask_pipeworx: identical universal router (same 5,912 tools, same arguments, same response shape) with candidate routing improvements enabled live whenever one is under test. No candidate is active right now (the last was retired on outcome evidence 2026-07-26), so this currently matches ask_pipeworx exactly. Use it exactly like ask_pipeworx when you want the newest routing; results are compared against the stable router to decide what merges. Falls back to nothing — this IS a full working router, just the experimental edge.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias for question. | |
| text | No | Alias for question. | |
| input | No | Alias for question. | |
| query | No | Alias for question. | |
| prompt | No | Alias for question. | |
| question | Yes | Your question or request in natural language. Accepts query, q, prompt, text, input as aliases. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, and idempotent behavior. The description adds the experimental nature: candidate improvements may be live, results are compared against the stable router, and the tool currently matches ask_pipeworx exactly. This gives useful dynamic context beyond the static annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed yet each sentence earns its place: it defines the tool, states the current experimental state, gives usage direction, and clarifies it is fully functional. The structure is front-loaded with the core definition and uses concrete detail like tool count and retirement date to make the beta status precise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple single-required-parameter schema and rich annotations, the description covers everything an agent needs: what it is, how to use it, current behavior, how it relates to ask_pipeworx, and that it returns the same response shape. No critical context 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%, and all parameters are documented as aliases for question. The description's reference to 'same arguments' links to ask_pipeworx but does not meaningfully add parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific purpose: an experimental beta variant of ask_pipeworx that routes the same 5,908 tools with identical arguments and response shape. This clearly differentiates it from the stable ask_pipeworx and other siblings.
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 instructs to use exactly like ask_pipeworx when the newest routing is desired, and contrasts it with the stable router for comparison. It also explains the current state (no active candidate) and confirms it is a fully working router, removing ambiguity about fallback behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_pipeworx_groundedAsk Pipeworx — GroundedARead-onlyIdempotentInspect
Hallucination-resistant answer mode for high-stakes reads. Same routing as ask_pipeworx — picks the right tool from 5,912 across 1541 sources, fills arguments, fetches the data — then EXTRACTS the answer using ONLY what the tool result contains. Returns {answer, evidence (verbatim quote), confidence, source, fetched_at, refusal_reason:null} on success, OR an explicit refusal {answer:null, refusal_reason:"not_in_source"|"no_tool_match"|"tool_error"|"data_truncated"|"llm_error"} when the data doesn't directly answer. Use whenever an answer will be quoted, cited, or acted on, and the agent must not invent facts (financial verdicts, legal claims, medical lookups, public statements). Costs one extra LLM call vs ask_pipeworx — prefer ask_pipeworx for casual lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias for question. | |
| text | No | Alias for question. | |
| input | No | Alias for question. | |
| query | No | Alias for question. | |
| prompt | No | Alias for question. | |
| question | Yes | Your question in natural language. Accepts query, q, prompt, text, input as aliases. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint and openWorldHint in annotations, the description adds significant behavior: refusal reasons (not_in_source, no_tool_match, tool_error, data_truncated, llm_error), verbatim evidence extraction, confidence scoring, fetched_at, and an extra LLM call cost. This is exactly the transparency needed for a tool that an agent will trust with high-stakes answers. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The three sentences are dense but efficient: they front-load the core purpose, then add return/refusal detail, use cases, and cost trade-off. Every clause contributes; only the full refusal enum could reasonably be deferred to an output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the full success return shape, the refusal shape with all enum values, the routing mechanism, and the cost/usage trade-offs. An agent has everything needed to invoke this tool correctly and interpret any response, including failures.
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?
All six parameters are aliases for the single required question, and the schema already provides full descriptions (100% coverage). The description adds only the context that the tool 'fills arguments' for the routed tool, which is helpful but doesn't change what the question parameter means or how it should be formed. 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 opens with a specific behavior ('Hallucination-resistant answer mode') and explains it routes like ask_pipeworx but only extracts answers from tool results. This clearly distinguishes it from ask_pipeworx and ask_pipeworx_beta, naming the exact mechanism that makes it grounded.
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 when to use it: 'Use whenever an answer will be quoted, cited, or acted on' and when to avoid it: 'prefer ask_pipeworx for casual lookups.' It also surfaces the cost trade-off (one extra LLM call) so the agent can make a rational selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bet_researchBet ResearchARead-onlyIdempotentInspect
Research a Polymarket bet by pulling the relevant Pipeworx data for it in one call. Pass a market slug ("will-bitcoin-hit-150k-by-june-30-2026"), a polymarket.com URL, or a question text. The tool resolves the market, classifies the bet, fans out to category-specific data packs in parallel, and returns an evidence packet + simple market-vs-model comparison. Use for "should I bet on X", "what does the data say about Y", or "is there edge in Z". CLASSIFIERS: crypto_price, fed_rate, geopolitical, sports, sports_championship, drug_approval, election_candidate, tech_launch, space_launch, corporate, corporate_earnings, corporate_event, public_figure_speech, weather, other. FAN-OUT EXAMPLES: BTC bet → coingecko + fred + gdelt+gnews; Fed bet → fred (DFEDTARU + EFFR + CPIAUCSL) + kalshi_macro (KXFED implied probs) + recent_fed_actions (federal-register rules, last 365d); Hormuz bet → imf_portwatch + airspace + gdelt; Yankees WS → mlb_stats_standings + parent_event partition + news; hottest-year bet → climate_projection_nyc + gistemp_latest (NASA global anomaly, rank since 1880) + news; NVDA-vs-AAPL → finnhub get_quote + edgar shares-outstanding (derived market cap) + edgar filings + news. RESPONSE SHAPES: result.market carries best_bid/best_ask/spread_pp/liquidity/price_change_1h/1d/1w; result.analysis carries model_probability/edge_pp/kelly_fraction_half when a closed-form model fires PLUS a 24h-move warning ("Market moved X.Xpp in 24h, comparable to model edge — your edge may already be priced in") when relevant; result.evidence is keyed by source. RESOLVER CONTRACT: result.market_match_confidence ∈ {high, medium, low, none}, market_match_score (0-1 token-overlap), market_match_alternatives[] (other candidate markets the resolver considered), and suggestions[] (explicit re-query hints when the match is fuzzy) — ALWAYS inspect these before trusting the analysis block, because medium/low matches can still surface other fields. PARENT_EVENT EXTRACTOR: when the bet is one leg of a partition (Yankees WS, Romania election), result.parent_event{matched_candidate, top_legs_by_price[], partition_size, placeholders_filtered} gives you the peer prices in one place — that's the headline for elections/championships. NEWS FIELDS: news entries carry _fallback_attempted / _fallback_failed_reason / retry_after_sec when GDELT 429s and GNews backfill ran or failed. SAFETY: low-confidence resolutions short-circuit with status:"low_confidence_match" and suppress analysis fields so agents can't accidentally size on phantom matches. Closed/dead markets that ARE still indexed by Polymarket (yes_price≈0, no volume, no liquidity) return status:"market_closed_or_inactive" and skip fan-out. In practice resolved markets are usually de-indexed and instead surface via the low_confidence_match path above — both routes are BLOCKING, just different mechanisms. Wide-spread markets (>10pp) carry tradeability:"illiquid_wide_spread" + an explanatory note. RESOLUTION-RULE RISK: market.cancellation_rule parses the void/postponement settlement out of the resolution text — refund_50_50 (shares settle flat 50¢ on void; EV-material for any entry away from 50¢, with ev_impact quantified), resolves_no_on_cancel, resolves_yes_on_cancel, carries_to_reschedule, or mentioned_unclear. null means the description never mentions cancellation. Check this before sizing sports/esports/event-occurrence bets — audited arb-bot ledgers show flat-50¢ void settlements are a recurring pure-rules loss.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | quick = 2-3 evidence sources, thorough = full fan-out. Default thorough. | |
| market | Yes | Polymarket slug ("will-bitcoin-hit-150k-by-june-30-2026"), full URL ("https://polymarket.com/event/..."), or question text ("Will Bitcoin hit $150k by June 30?") | |
| include_raw | No | Default false. When false (recommended), FRED/FDA/GDELT/Federal-Register evidence is summarized to the few fields agents actually use — keeps responses under ~20KB. Pass true to get full upstream payloads (50KB-500KB) when you need to recompute deltas, cite specific observations, or post-process. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds extensive behavioral details: fan-out to category-specific data packs, market resolution, classification, evidence packet return, error handling (low-confidence matches short-circuit, closed markets skip fan-out), tradeability flags, and resolution-rule risk. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with labeled sections (CLASSIFIERS, FAN-OUT EXAMPLES, RESPONSE SHAPES, etc.), making it scannable. Every sentence adds value, though some redundancy (e.g., repeated examples) could be trimmed. Forefront loading of purpose and usage is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, no output schema), the description is exceptionally thorough. It covers response shapes, error cases, edge conditions (closed markets, wide spreads, low-confidence matches), and even resolves arbitration rule risk. An agent has sufficient information to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema: it explains that 'market' can be slug, URL, or question text; clarifies 'depth' options (quick vs thorough) and default; and explains when to use 'include_raw' (true for recompute/cite/post-process, false for smaller responses). Schema coverage is 100%, but the description significantly enriches understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it researches a Polymarket bet by pulling Pipeworx data, with specific verb 'research' and resource 'Polymarket bet'. It distinguishes from siblings like ask_pipeworx and polymarket_edges by being the go-to tool for bet-specific research, explicitly listing use cases such as 'should I bet on X'.
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 says 'Use for "should I bet on X", "what does the data say about Y", or "is there edge in Z"', giving clear context for when to use. It does not explicitly exclude alternatives or mention when not to use, but the list of siblings and the specialized nature imply boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_entitiesCompare EntitiesARead-onlyIdempotentInspect
"Compare X and Y" / "X vs Y" / "X versus Y" / "which is bigger / better / larger / more profitable" / "rank these companies" / "head to head" — side-by-side comparison of 2–5 companies or drugs in ONE parallel call. ALWAYS PREFER over sequential single-pack lookups when comparing entities. type="company" pulls LATEST 10-K revenue + net income + cash + long-term debt from SEC EDGAR/XBRL (off-calendar fiscal years handled correctly — AAPL Sep, NVDA Jan, etc.). type="drug" pulls FAERS adverse-event counts, FDA approval counts, active trial counts. Results sorted by primary metric so "largest" / "most" / "biggest" reads off the top of the response. Returns paired data + pipeworx:// citation URIs per entity. Replaces 8–15 sequential lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Entity type: "company" or "drug". | |
| values | Yes | For company: 2–5 tickers/CIKs (e.g., ["AAPL","MSFT"]). For drug: 2–5 names (e.g., ["ozempic","mounjaro"]). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds value by detailing data sources (SEC EDGAR/XBRL, FAERS), handling of off-calendar fiscal years, result sorting by primary metric, and the inclusion of citation URIs. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with common query patterns and is well-structured, but it is somewhat verbose. Every sentence adds value, but it could be slightly more concise for a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return format (paired data + citation URIs) and sorting. It covers data sources and edge cases like fiscal year handling. Missing error handling or limits, but adequate for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context about what each type pulls and example values, but does not provide new parameter semantics beyond what the schema already contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs side-by-side comparisons of 2-5 companies or drugs. It provides concrete example queries and differentiates itself from sequential single-pack lookups, which is a key distinction from sibling tools like entity_profile.
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 advises to prefer this tool over sequential lookups when comparing entities, and gives examples of when to use it (e.g., comparing, ranking). However, it does not explicitly state when not to use it, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_researchDeep ResearchARead-onlyIdempotentInspect
ACCOUNT REQUIRED (free — sign in via GitHub at https://pipeworx.io/signup; depth:"thorough" needs a paid plan). If you are not signed in, use ask_pipeworx instead — it works on every tier. Grounded multi-source research across Pipeworx's 1541 STRUCTURED data sources (SEC filings, FRED/BLS economics, FDA, USPTO patents, markets, science, government records, etc.) in ONE call — this is NOT open-web search. Decomposes your question into focused facets, routes each to the right one of 5,912 tools IN PARALLEL, and returns a findings packet: verbatim evidence + confidence + source + fetched_at + a stable pipeworx:// citation per finding, with explicit gaps[] for facets the data couldn't answer (never invented). Best for broad/multi-part questions over structured data ("compare X and Y's regulatory + financial exposure", "research the filings + market picture for ACME"). For a single lookup use ask_pipeworx (one LLM call, not many). For BREAKING or colloquial CURRENT-NEWS / "what's the world saying about X" topics, prefer ask_pipeworx — it routes to live news APIs and the *-news-feeds packs; deep_research returns mostly empty gaps[] when the topic isn't in the structured catalog. Second-hop iteration: depth:"standard" re-angles unanswered gaps (gap recovery); depth:"thorough" additionally chases the best leads from the first pass — so multi-step questions resolve in one call. Every finding carries a hop field and a citation_uri — a resolvable pipeworx:// record URI, present only when the source emits one that resources/read can actually serve, so a citation you get back is always fetchable. "standard" and "thorough" also return contradictions[] flagging findings that disagree. Large records are semantically excerpted to the passages relevant to each facet (not head-truncated), so answers deep in a long filing/series aren't missed. Expect 15-60s (thorough with its follow-up + contradiction pass: up to ~90s).
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | How many facets to research in parallel: quick=3 (single hop), standard=3 (default; adds a gap-recovery hop that re-angles unanswered facets + a contradictions[] scan across findings), thorough=6 (paid; adds a full iterative hop that chases leads + recovers gaps, plus the contradictions[] scan). | |
| question | Yes | The research question, in natural language. Broad/multi-part is fine — decomposition is the point. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnly/openWorld/idempotent/destructive, but the description adds substantial behavioral context: account/gating requirements, parallel decomposition across 5,908 tools, the findings packet shape (verbatim evidence, confidence, gaps[], contradictions[], hop fields, resolvable citation_uri), semantic excerpting, and 15–90s latency. This far exceeds what annotations 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?
The description is long but every sentence carries operational information: auth prerequisite, alternative routing, research mechanics, return contract, gap behavior, citation resolvability, excerpting, and latency. It is front-loaded with the account requirement and sibling routing, and despite its length it avoids 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 fully explains return values: a findings packet with verbatim evidence, confidence, source, fetched_at, a stable citation URI, hop fields, explicit gaps[], and contradictions[] for standard/thorough. It also covers required auth/paid plan, latency, and when the tool will fail (empty gaps for non-structured topics). Nothing an agent needs to invoke or interpret it 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% for both params, so baseline is 3. The prose meaningfully enriches this: the depth parameter's hop semantics, facet counts, contradictions scan, and paid tier are explained in the description beyond the schema's enum, and the question parameter is contextualized with concrete examples. This justifies a point above baseline, though schema already carried the core definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: grounded multi-source research over Pipeworx's structured catalog, delivered in one call. It explicitly contrasts itself with open-web search and single-lookup siblings, making its identity and scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: best for broad/multi-part structured-data questions, with clear alternatives — ask_pipeworx for single lookups and live/current-news topics. It also names the exact sibling to use when signed out, and explains depth-level trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_toolsDiscover ToolsARead-onlyIdempotentInspect
Find tools by describing the data or task. Use when you need to browse, search, look up, or discover what tools exist for: SEC filings, financials, revenue, profit, FDA drugs, adverse events, FRED economic data, Census demographics, BLS jobs/unemployment/inflation, ATTOM real estate, ClinicalTrials, USPTO patents, weather, news, crypto, stocks. Returns the top-N most relevant tools with names, descriptions, and full input schemas (with curated examples) — each result is ready to call directly, no second schema lookup needed. Call this FIRST when you have many tools available and want to see the option set (not just one answer).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Alias for query. | |
| task | No | Alias for query. | |
| limit | No | Maximum number of tools to return (default 20, max 50) | |
| query | Yes | Natural language description of what you want to do (e.g., "analyze housing market trends", "look up FDA drug approvals", "find trade data between countries"). Accepts task, q, description, search as aliases. | |
| search | No | Alias for query. | |
| description | No | Alias for query. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context: it returns 'top-N most relevant tools with names, descriptions, and full input schemas (with curated examples) — each result is ready to call directly, no second schema lookup needed.' No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured. It front-loads the purpose, then provides usage context, and finally details return format. Each sentence is informative and avoids redundancy. Could be slightly tighter but is 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?
Given the tool's simplicity (1 required param, no output schema, 6 params total with aliases), the description adequately explains input format (natural language query), output format (list of tools with schemas), and behavior (top-N, ready to call). No gaps significant enough to hinder usage.
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 description adds limited new meaning beyond the schema. However, it provides example queries and clarifies that multiple aliases ('q', 'task', 'search', 'description') map to 'query', which reinforces understanding but does not significantly elevate parameter semantics beyond baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find tools by describing the data or task.' It lists numerous specific data sources (SEC filings, FDA drugs, etc.) and explicitly differentiates from sibling tools by positioning itself as a discovery tool to call first, contrasting with siblings that are domain-specific data tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use when you need to browse, search, look up, or discover what tools exist for...' and 'Call this FIRST when you have many tools available and want to see the option set (not just one answer).' This clearly indicates when to use, though it does not explicitly state when not to use or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_patent_challenge_profileDrug Patent Challenge ProfileARead-onlyIdempotentInspect
How exposed is one brand drug's patent protection, in a single call. Joins the three sources a generics or biotech analyst otherwise queries by hand: FDA Orange Book listed patents and their expiry dates, USPTO PTAB proceedings (IPR/PGR) filed against those exact patent numbers, and federal ANDA / Hatch-Waxman district-court dockets naming the brand. Returns the earliest expiry NOT under challenge, which patents are actively contested, and which generic firms are litigating. Use for loss-of-exclusivity diligence, generic-entry timing, or "who is attacking this drug and where". Listed dates are FDA/USPTO/court records, not a legal conclusion about enforceability or actual launch.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | Brand or ingredient name, e.g. "Eliquis" or "apixaban". | |
| years | No | Docket lookback window in years (default 10). | |
| max_patents | No | Patents to check against PTAB (default 12, max 25). Each is one upstream call, so this bounds latency; any patents beyond the cap are still listed and counted. | |
| application_no | No | Specific NDA/ANDA number instead of a name, e.g. "202155". |
Output Schema
| Name | Required | Description |
|---|---|---|
| drug | Yes | |
| notes | No | |
| source | Yes | |
| partial | No | |
| patents | Yes | |
| summary | Yes | |
| anda_dockets | No | |
| matched_products | Yes | |
| ptab_proceedings | No | |
| brand_applications | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful context: it specifies the record sources (FDA Orange Book, PTAB, ANDA dockets) and includes an important caveat that dates are raw records, not legal conclusions about enforceability or launch. This exceeds the annotation baseline without contradicting it.
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?
Every sentence earns its place: an attention-grabbing opening, a concise explanation of the three joined sources, a clear statement of return values, direct use cases, and a necessary legal disclaimer. It is dense but not bloated, and the most distinctive 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?
Given the tool's complexity, the description is thorough: it names the data sources, the exact outputs, the intended use cases, and a legal caveat. The output schema exists to cover return structure, and the parameter schema fully documents the four optional parameters, so nothing critical is missing for an agent to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all four parameters are already documented in the input schema. The description does not add parameter-level semantics beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific actions ('Joins...', 'Returns...') and clearly names the resource ('one brand drug's patent protection'). It explicitly lists the three data sources it combines, which differentiates it from single-source siblings like orange_book_competition_profile. The output is concrete: earliest unexpired unchallenged expiry, actively contested patents, and litigating generic firms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: 'loss-of-exclusivity diligence, generic-entry timing, or 'who is attacking this drug and where''. It implies this is the comprehensive single-call alternative to manually querying three sources, but it does not explicitly name sibling tools to use instead, so it falls just 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.
entity_profileEntity ProfileARead-onlyIdempotentInspect
"Tell me about X" / "research Acme" / "brief me on Tesla" / "what does Apple do" / "company profile for Microsoft" / "give me the rundown on NVDA" / "everything you know about $TICKER" — full cross-source profile of a US public company in ONE parallel call. ALWAYS PREFER over chaining single-pack SEC/XBRL/news lookups when the user asks for a holistic view. Fans out across SEC EDGAR, XBRL, USPTO patents, federal contracts (USAspending), FDA-licensed biologics (Purple Book), H-1B hiring (DOL LCA), news and GLEIF, and returns: cik + company_name (+ resolved_from/resolved_to when value was a name); recent_filings (up to 5 with pipeworx://edgar/company/{cik}/filings/{accession} URIs); fundamentals (LATEST 10-K Revenues + NetIncomeLoss + Cash, sorted period_end DESC); patents (USPTO PatentsView API sunset May 2025 — soft-fails until reactivated); federal_contracts (USAspending awards where the company is the recipient); fda_products (FDA-licensed biologics — vaccines, cell/gene therapies — from the Purple Book; a company with only small-molecule/generic drugs will show none here, that is expected, not a failure); hiring (H-1B sponsorship volume + salary range from DOL LCA filings); recent news mentions via GDELT→GNews fallback; LEI via GLEIF. sources_used / sources_failed say which of these actually returned data for THIS company — an empty section is a real "no data", not a bug. Pass a ticker ("AAPL"), zero-padded CIK ("0000320193"), OR a company name ("Moderna") — names now resolve via SEC EDGAR's company-name match; a private company (no CIK/ticker) returns resolved:false with an explicit notes line, not a bare failure. type accepts "company" or "ticker" interchangeably — both take the same value shapes above.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | "company" or "ticker" — both are accepted and behave identically; `value` can be a ticker, CIK, or company name either way. person/place coming soon. | |
| value | Yes | Ticker (e.g., "AAPL"), zero-padded CIK (e.g., "0000320193"), or company name (e.g., "Moderna") — names resolve via SEC EDGAR company-name match. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds real behavioral context: sources_failed and empty sections are real negatives rather than bugs, USPTO soft-fails until reactivated, FDA products only cover biologics so a small-molecule company may show none, and private companies return resolved:false with a notes line rather than an error. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with concrete user utterances and the core directive (ALWAYS PREFER over chaining), then flows into a compact but efficient enumeration of sources and outputs. Every clause earns its place — examples, soft-fail warnings, empty-section semantics, private-company behavior — and the dense structure avoids repetition despite the volume of information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent, multi-source profile tool with two well-documented parameters and no output schema, the description covers inputs, output fields, source-failure semantics, and edge cases. The main missing piece is an explicit note that this is US-public-company-only and that it does not provide valuation or forward-looking data, but the description already states 'US public company' and the holistic framing makes scope reasonably clear.
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 reinforces parameter semantics by giving concrete examples for value ("AAPL", "0000320193", "Moderna") and explaining type's interchangeability. It also adds the resolution behavior detail (resolved_from/resolved_to when value is a name), which is not present in the schema. The description meaningfully augments the already-covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('profile', 'brief', 'research') plus a resource (US public company) and enumerates the exact data sources and output fields. It clearly distinguishes itself from single-source lookups (SEC/XBRL/news) and sibling tools by positioning itself as the holistic cross-source profile. Examples make intent unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says ALWAYS PREFER over chaining single-pack lookups when the user asks for a holistic view, and it names the alternatives it supersedes. It also states accepted input shapes (ticker, zero-padded CIK, company name) and the expected result for private companies, so an agent knows exactly when invocation is appropriate and what to expect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forgetForgetADestructiveIdempotentInspect
Delete a previously stored memory by key. Use when context is stale, the task is done, or you want to clear sensitive data the agent saved earlier. Pair with remember and recall.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Memory key to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, so description adds context about clearing sensitive data, justifying the destructiveness. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences front-loaded with action and condition. Every word 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?
For a simple 1-parameter tool with no output schema, the description fully covers purpose, usage, and relationships. No 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 already describes the key parameter at 100% coverage. Description adds no new parameter information beyond 'by key', 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?
Clearly states 'delete a previously stored memory by key', specifying the verb and resource. Distinguishes itself from siblings by mentioning pair with remember and recall.
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 lists when to use: when context is stale, task is done, or want to clear sensitive data. Also directs to pair with related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_llms_txtGenerate llms.txtARead-onlyIdempotentInspect
Generate a production-ready llms.txt file for any URL so AI crawlers (ChatGPT, Claude, Perplexity) can index the site cleanly. Fetches the page, extracts title/description/key links, and emits the standard llms.txt markdown format. Output is a single text blob ready to drop at site-root/llms.txt. Useful for: getting a client's site indexed by AI, drafting llms.txt for your own project, or auditing how an AI crawler would see a competitor.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of the site to summarize, e.g. "https://example.com" or a specific landing page. | |
| max_links | No | Maximum number of link entries to include (default 25, max 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description details behavioral steps beyond annotations: fetches the page, extracts title/description/key links, emits standard markdown. Annotations confirm read-only, idempotent, non-destructive, and description aligns without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first explains purpose and action, second details process and output, third lists use cases. No wasted words, front-loaded with key 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 2 params, full schema coverage, rich annotations, and no output schema, the description fully explains what the tool does, how it works, and what output to expect (text blob). Use cases cover typical scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions. Description adds context by explaining that url is used to fetch the page, and mentions extraction process. For max_links, it adds no new info but reinforces schema. Overall adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'generate', resource 'llms.txt file', and purpose 'so AI crawlers can index the site cleanly'. It distinguishes the tool from all siblings (e.g., ai_visibility_check, ask_pipeworx) which are unrelated.
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?
Description lists three explicit use cases: getting a client's site indexed, drafting for your own project, auditing competitor. No exclusions or alternatives mentioned, but siblings are so dissimilar that context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_subscriptionsList SubscriptionsARead-onlyIdempotentInspect
List the caller's active subscriptions. Returns id, type, params, created_at, last_fired_at, fire_count for each. Use this to review what you're monitoring before adding more or to find an id to cancel.
| Name | Required | Description | Default |
|---|---|---|---|
| include_inactive | No | Include cancelled subscriptions in the response (default false). |
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 clear. The description adds no behavioral details beyond listing return fields, which is sufficient but not extra.
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 main action, and no unnecessary words. Every part serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema, rich annotations, and no output schema, the description covers all needed context: return fields, usage guidance, and no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a well-described parameter ('include_inactive'). The description does not add extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list' and the resource 'subscriptions', specifying it's the caller's active subscriptions. It lists the return fields, distinguishing it from sibling tools like 'subscribe' and 'unsubscribe'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidelines: use it to review what you're monitoring before adding more or to find an ID to cancel. This implies context and alternatives, though not explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_application_detailOrange Book Application DetailARead-onlyIdempotentInspect
Retrieve all FDA Orange Book product, patent, and exclusivity rows for one NDA or ANDA application. Patent and exclusivity dates are FDA listings, not a legal conclusion about enforceability or actual generic entry.
| Name | Required | Description | Default |
|---|---|---|---|
| application_number | Yes | NDA/ANDA number, digits only or with prefix. |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| patents | Yes | |
| products | Yes | |
| exclusivities | Yes | |
| application_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint), the description adds critical context: 'Patent and exclusivity dates are FDA listings, not a legal conclusion about enforceability or actual generic entry.' This warns users about data limitations and legal implications, which annotations do not cover.
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 no redundancy. The first sentence states the core purpose, and the second provides an essential caveat. Every sentence adds value without 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?
The description covers what data is retrieved (product, patent, exclusivity rows) and the scope (single application). An output schema exists, so return values are defined. A mention of any limits or error handling could improve completeness, but it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the only parameter 'application_number'. The tool description adds no extra parameter information beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Retrieve' and clearly defines the resource: 'all FDA Orange Book product, patent, and exclusivity rows for one NDA or ANDA application'. This distinguishes it from sibling tools like 'orange_book_product_search' (broader search) and 'orange_book_patent_expirations' (expiration-focused).
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 states the tool is for 'one NDA or ANDA application', implying it is for single-application detail rather than bulk queries. However, it does not explicitly mention when not to use it or provide alternatives from the sibling list, such as the expiration tools for aggregate views.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_competition_profileOrange Book Competition ProfileARead-onlyIdempotentInspect
Profile FDA Orange Book competition for an ingredient or trade name: matched applications/products, NDA versus ANDA holders, RLD/reference standards, patents, and exclusivities. Approved ANDAs indicate regulatory approval, not launch, supply, substitution, or market share.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | Yes | Ingredient or trade name. | |
| limit | No | Product rows (1-100, default 50). |
Output Schema
| Name | Required | Description |
|---|---|---|
| drug | Yes | |
| patents | Yes | |
| products | Yes | |
| applicants | Yes | |
| exclusivities | Yes | |
| interpretation | Yes | |
| matched_products | Yes | |
| nda_applications | Yes | |
| anda_applications | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds a valuable behavioral note that 'Approved ANDAs indicate regulatory approval, not launch, supply, substitution, or market share.' This clarifies output interpretation beyond what annotations provide, though it could mention more about data freshness or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence concisely states the purpose, and the second adds a critical caveat. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (2 parameters, output schema present, annotations rich), the description covers the core purpose and a key behavioral note. It does not address pagination or error cases, but with openWorldHint and a well-defined schema, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters (drug and limit). The description does not add new information about parameters beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Profile' and the resource 'FDA Orange Book competition' for a specific input (ingredient or trade name). It lists the key outputs (matched applications/products, holders, RLD, patents, exclusivities) and includes a clarifying caveat about ANDAs. This distinguishes it from sibling tools like orange_book_product_search and orange_book_application_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?
The description implies usage for profiling Orange Book competition but does not provide explicit guidance on when to use this tool versus alternatives. No when-not or alternative recommendations are given, though the context of Orange Book (small molecules) versus Purple Book (biosimilars) may be inferred from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_exclusivity_expirationsOrange Book Exclusivity ExpirationsARead-onlyIdempotentInspect
When does FDA marketing exclusivity expire for a drug — the listed Orange Book exclusivity expiration dates for a brand or ingredient, with the earliest and latest across the whole schedule. Ask by drug alone to get everything on file; add from_date/to_date only when you want a window, and anything excluded is counted and dated back to you. Exclusivity codes have program-specific meanings; expiration alone does not guarantee generic approval or launch.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | Ingredient, trade name, or applicant, e.g. "Jardiance" or "empagliflozin". | |
| limit | No | Results (1-100, default 25). | |
| to_date | No | Optional window end YYYY-MM-DD. Omit for the drug's whole schedule. | |
| from_date | No | Optional window start YYYY-MM-DD. Omit for the drug's whole schedule. |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| exclusivities | Yes | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses meaningful behavior: it returns earliest/latest dates, counts and dates back excluded items, and warns that expiration alone does not guarantee generic approval or launch. This adds useful context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no fluff: purpose is front-loaded, usage guidance follows, and a necessary caveat closes it. Every sentence 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?
For a read-only query tool with zero required params and an output schema already present, the description covers purpose, parameter usage, and an important interpretation caveat. The only minor flaw is slight ambiguity in 'anything excluded is counted', but overall it is complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds semantics beyond the schema by explaining the interaction between drug and date parameters ('Ask by drug alone... add from_date/to_date only when you want a window') and clarifies drug can be brand or ingredient. This elevates it above 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?
The description clearly states the tool's function: it returns FDA marketing exclusivity expiration dates for a drug, with earliest and latest across the schedule. This specific verb+resource combination distinguishes it from sibling tools like orange_book_patent_expirations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear parameter guidance: ask by drug alone for everything, add from_date/to_date for a window. However, it does not explicitly contrast this tool with alternatives in the sibling list, so it lacks explicit exclusion criteria for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_expiry_cliff_calendarOrange Book Expiry Cliff CalendarARead-onlyIdempotentInspect
Create a combined calendar of FDA Orange Book patent and regulatory-exclusivity expirations. Returns dated events with ingredient, trade name, applicant, application, patent/use-code, and exclusivity-code context for cliff monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | Optional ingredient, trade name, or applicant filter. | |
| limit | No | Events (1-100, default 50). | |
| to_date | Yes | ||
| from_date | Yes | ||
| event_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | Yes | |
| source | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose read-only, idempotent, non-destructive behavior. The description adds that the tool returns dated events with ingredient, trade name, applicant, application, patent/use-code, and exclusivity-code context, which is useful beyond the schema. It omits minor details like limit clamping or event_type filtering, but the annotation coverage lowers the burden.
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 concise sentences with no filler. The core action is front-loaded and the return-value context is summarized efficiently.
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 read-only annotations and an output schema present, the description provides enough context for an agent to understand the tool's purpose and output. Date format is demonstrated in the schema example, and event_type is enumerable. Minor gaps around filtering behavior exist but do not block correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description does not compensate. from_date and to_date have no schema descriptions and the description does not explain date range semantics or event_type filtering. It only implicitly references patent and exclusivity event types.
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 action and resource: it creates a combined calendar of Orange Book patent and regulatory-exclusivity expirations. By emphasizing 'combined,' it clearly differentiates this tool from sibling tools like orange_book_patent_expirations and orange_book_exclusivity_expirations.
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 'combined calendar' and 'cliff monitoring' imply usage for a broad patent/exclusivity expiration view, but the description does not explicitly say when to prefer this tool over dedicated patent-only or exclusivity-only siblings. Usage guidance is present by implication, not by direct contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_generic_entry_timelineOrange Book Generic Entry TimelineARead-onlyIdempotentInspect
Chronologically summarize FDA-approved ANDA applications matching an ingredient or trade name, deduplicated across strengths and products. Returns first approval dates, applicants, dosage forms, TE codes, and active-product counts for generic-entry analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | Yes | ||
| limit | No | Unique ANDA applications (1-100, default 50). | |
| include_discontinued | No | Include applications with only DISCN products (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| anda_approvals | Yes | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds meaningful behavioral detail beyond annotations: results are deduplicated across strengths and products, ordered chronologically, and include specific fields like first approval dates, TE codes, and active-product counts.
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 carry all necessary information with no filler. The first sentence front-loads the core function and dedup behavior; the second enumerates return fields. Every clause 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?
Given the output schema exists and annotations cover safety and idempotency, the description provides the missing context: what the tool returns, how it deduplicates, and what input means. No critical information for selecting or invoking the tool 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?
The schema covers limit and include_discontinued with descriptions, but the required drug parameter has no schema description. The description compensates by clarifying that drug matches an ingredient or trade name, which is essential for correct invocation.
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 specifies a precise operation (chronologically summarize), a clear resource (FDA-approved ANDA applications matching ingredient or trade name), and a distinctive analytic goal (generic-entry analysis). It is clearly differentiated from sibling tools like orange_book_product_search or orange_book_application_detail by its timeline focus and deduplication behavior.
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 'for generic-entry analysis' implies when the tool should be used, and the name signals it is the generic counterpart to purple_book_biosimilar_entry_timeline. However, it never explicitly names alternatives or states when not to use this tool, so the agent must infer routing from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_loss_of_exclusivity_profileOrange Book Loss Of Exclusivity ProfileARead-onlyIdempotentInspect
Build an FDA Orange Book loss-of-exclusivity evidence profile for a drug. Returns reference applications, approved ANDA counts and timing, plus active and elapsed listed patent and regulatory-exclusivity date ranges for LOE diligence.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | Yes | Ingredient or trade name. | |
| limit | No | Rows per evidence list (1-100, default 50). | |
| as_of_date | No | YYYY-MM-DD cutoff for active versus elapsed listings (default today). |
Output Schema
| Name | Required | Description |
|---|---|---|
| drug | Yes | |
| source | Yes | |
| patents | Yes | |
| as_of_date | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| exclusivities | Yes | |
| interpretation | Yes | |
| dataset_updated | No | |
| dataset_age_days | No | |
| matched_products | Yes | |
| listed_patent_range | Yes | |
| earliest_anda_approval | Yes | |
| reference_applications | Yes | |
| listed_exclusivity_range | Yes | |
| approved_anda_applications | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds meaningful behavioral scope by specifying 'approved ANDA counts' (excludes unapproved/tentative) and distinguishing 'active and elapsed' date ranges, which informs the agent about what the tool filters or computes. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with no redundancy. The first sentence front-loads the action and resource; the second lists the return contents. Every clause contributes useful 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 a full input schema, an output schema, and annotations covering safety, the description is sufficient for correct invocation. It clearly states what the tool does and what it returns. It is slightly incomplete for tool selection because it does not explicitly distinguish among the many Orange Book siblings, but overall it is adequate.
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 parameters are already documented (drug, limit, as_of_date). The tool description does not add new parameter meaning beyond the schema; it only restates the overall purpose. 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 uses a specific verb and resource: 'Build an FDA Orange Book loss-of-exclusivity evidence profile for a drug.' It also lists concrete outputs such as reference applications, approved ANDA counts, and patent/exclusivity date ranges. However, it does not explicitly differentiate this tool from siblings like orange_book_exclusivity_expirations or orange_book_patent_expirations, relying on the unique 'loss-of-exclusivity evidence profile' wording.
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 'for LOE diligence' gives a clear intended context, and the output list implies when an agent would need this tool. But there is no explicit when-to-use-versus-alternatives guidance or exclusions, which is a notable gap given many similar Orange Book siblings such as orange_book_competition_profile and orange_book_generic_entry_timeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_patent_expirationsOrange Book Patent ExpirationsARead-onlyIdempotentInspect
When do the patents on a drug expire — the listed Orange Book patent expiration dates for a brand or ingredient, in order, with the earliest and latest across the whole schedule. Ask by drug alone ("Xarelto", "semaglutide") to get its full expiry schedule; add from_date/to_date only when you actually want a window, and anything the window excludes is counted and dated back to you so a filtered view is never mistaken for the full picture. Covers small-molecule drugs; biologics are in the Purple Book. Dates are sponsor-submitted FDA listings and do not establish freedom to operate or a certain launch date.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | No | Ingredient, trade name, or applicant, e.g. "Xarelto" or "rivaroxaban". | |
| limit | No | Results (1-100, default 25). | |
| to_date | No | Optional window end YYYY-MM-DD. Omit for the drug's whole schedule. | |
| from_date | No | Optional window start YYYY-MM-DD. Omit for the drug's whole schedule. |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| patents | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description reveals the exclusion-counting behavior: anything the date window excludes is counted and dated back so a filtered view is not mistaken for the full picture. It also discloses that FDA listings are sponsor-submitted and do not establish freedom to operate or launch date, adding meaningful caveats beyond annotation-provided hints.
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 dense sentences, each earning its place: purpose and ordering in the first, usage guidance in the second, and scope/caveats in the third. The content is front-loaded and free of 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 an output schema present, return values are already covered. The description supplies the remaining context an agent needs: what the tool does, when to use it, the small-molecule vs biologic boundary, filter semantics, and important data limitations. No critical information 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 the baseline is 3. The description adds value by clarifying that drug alone returns the full schedule, that from_date/to_date create a window, and that excluded results are still reported. Limit is not discussed in the description, but the schema fully documents it, so this is not a major gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: it returns Orange Book patent expiration dates for a drug, organized in order with earliest and latest across the schedule. It also distinguishes itself from Purple Book biologics tools, which is enough to separate it from sibling tools like orange_book_exclusivity_expirations and purple_book_biosimilars.
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 explicit when-to-use guidance: ask by drug alone for a full schedule, add from_date/to_date only for a window, and notes that biologics belong in the Purple Book. This tells the agent when to use this tool versus alternatives, including a pointer to a different resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_product_searchOrange Book Product SearchARead-onlyIdempotentInspect
Search FDA Orange Book products by ingredient, trade name, applicant, or application number. Returns NDA/ANDA status, therapeutic-equivalence codes, RLD/reference-standard flags, strength, route, and approval date.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results (1-100, default 25). | |
| query | No | Ingredient, trade name, or applicant substring. | |
| application_number | No | Exact NDA/ANDA application number. | |
| include_discontinued | No | Include DISCN products (default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| products | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context by enumerating the returned data fields, which is valuable beyond the annotations. It does not disclose behavioral details like pagination behavior, result-limit defaults, or how partial matches are handled, but with the safety profile fully covered by annotations, a 3 is appropriate.
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 economical sentences. The first front-loads the action and search scope; the second enumerates return fields. No filler, no repetition of schema content, and every clause adds information an agent needs.
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?
Strongly complete for a search tool: it covers what can be searched, what is returned, and an output schema exists so return structures need no further explanation. Minor gaps remain — no guidance on combining query with application_number, and no note on result-limit behavior — but these are covered partly by the schema, so they only mildly detract from completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, query, application_number, include_discontinued) are already documented in the schema. The description's 'ingredient, trade name, applicant, or application number' loosely maps to query and application_number but adds no new format or usage detail beyond what the schema states (including the substring vs exact-match distinction already present in 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 ('Search'), a specific resource ('FDA Orange Book products'), enumerates the search keys (ingredient, trade name, applicant, application number), and lists the returned fields (NDA/ANDA status, TE codes, RLD/reference-standard flags, etc.). This clearly distinguishes it from siblings like orange_book_application_detail and purple_book_product_search, since the Orange Book scope and search-oriented behavior are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Search FDA Orange Book products by...' implies when to use it, and the Orange Book vs Purple Book scope in sibling names gives natural context. However, there is no explicit when-to-use vs alternatives guidance (e.g., when to prefer orange_book_application_detail for a single application, or purple_book_product_search for biologics), and no mention that this is the general-purpose entry point versus the more specialized orange_book_* siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
orange_book_reference_drug_landscapeOrange Book Reference Drug LandscapeARead-onlyIdempotentInspect
Map FDA Orange Book reference listed drugs and reference standards to approved ANDA competition by dosage-form/route and therapeutic-equivalence code. Returns reference applications, ANDA counts and applicants, and TE-code groupings.
| Name | Required | Description | Default |
|---|---|---|---|
| drug | Yes | ||
| limit | No | Dosage-form/route groups (1-100, default 25). | |
| include_discontinued | No | Include DISCN products (default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| drug | Yes | |
| groups | Yes | |
| source | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| interpretation | Yes | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only, open-world, idempotent, and non-destructive, so the bar for additional behavioral disclosure is lower. The description adds what outputs are returned (reference applications, ANDA counts/applicants, TE-code groupings) and the grouping dimensions, but does not disclose limitations such as data currency, filtering behavior, or how 'open-world' results may vary.
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 no filler. The primary action and target are front-loaded, and the return payload is summarized compactly. Every phrase 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?
Given the rich annotations (read-only, idempotent, open-world), an output schema, and a clear two-sentence description, the definition is largely complete for a safe query tool. It loses a point only because it does not guide selection among the numerous closely related Orange Book tools and leaves the drug parameter format 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 coverage is 67%, with 'limit' and 'include_discontinued' adequately described in the schema, but the required 'drug' parameter has no schema description and the tool description only hints at 'reference listed drugs' without specifying acceptable formats (brand name, generic name, NDC). The description adds little clarity for the core parameter, leaving agents to guess how to pass the drug value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Map') and identifies the exact resource (FDA Orange Book reference listed drugs and reference standards) and the mapping target (approved ANDA competition by dosage-form/route and TE-code). It also lists the concrete returns, making the tool's function distinct from related Orange Book siblings like product_search or application_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?
The description implies the use case of analyzing competitive ANDA landscape for reference drugs, but it does not explicitly state when to choose this tool over the many overlapping Orange Book siblings (e.g., orange_book_competition_profile, orange_book_generic_entry_timeline) or when not to use it. Guidance is only implicit in the 'landscape' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeworx_feedbackSend Pipeworx FeedbackAInspect
Tell the Pipeworx team something is broken, missing, or needs to exist. Use when a tool returns wrong/stale data (bug), when a tool you wish existed isn't in the catalog (feature/data_gap), or when something worked surprisingly well (praise). ONLY for tools served by this Pipeworx connection — if the tool came from a different MCP server in your client (another vendor's Gmail, Splunk, Slack, etc. connector), we cannot fix it and reporting it here only delays you; file it with that server instead. Not sure? Pipeworx tool names are the ones this connection lists. Describe the issue in terms of Pipeworx tools/packs — don't paste the end-user's prompt. Filing without an account returns a claim_token; pass it back later as pipeworx_feedback({claim_token:"pwfb_…"}) to read whether it was fixed and what changed. The team reads digests daily and signal directly affects roadmap. Rate-limited to 5 per identifier per day. Free; doesn't count against your tool-call quota.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | bug = something broke or returned wrong data. feature = a new tool or capability you wish existed. data_gap = data Pipeworx does not currently expose. praise = positive note. other = anything else. | |
| context | No | Optional structured context: which tool, pack, or vertical this relates to. | |
| message | No | Your feedback in plain text. Be specific (which tool, what error, what data was missing). 1-2 sentences typical, 2000 chars max. | |
| claim_token | No | Read the reply to a report you filed earlier: pass the `pwfb_…` token that filing returned, with no other arguments. Returns the status and, once resolved, what actually changed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no useful hints (all false), so the description carries the burden—and it delivers. It discloses rate limiting (5/day), quota impact (free, no call quota), the token-return behavior, how to read the resolution status, and the scope boundary. This goes well beyond what annotations offer.
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?
Although the description is long, every sentence carries actionable information: use cases, scope exclusions, token mechanics, rate limit, and quota note. It is front-loaded with the purpose and never wanders into filler. The structure follows a logical flow from 'what' to 'when' to 'how'.
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, yet the description covers the essential output behavior: filing returns a claim_token, and passing that token later returns status/fix information. It also addresses rate limits, scope boundaries, and content best practices. For a feedback tool with four optional params, this is fully sufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful context beyond the schema: it explains that filing without an account returns a claim_token and how to use it later with the example pipeworx_feedback({claim_token:"pwfb_…"}). It also gives content guidance ('describe in terms of Pipeworx tools/packs') that clarifies message and context parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Tell the Pipeworx team something is broken, missing, or needs to exist.' It enumerates distinct feedback categories (bug, feature/data_gap, praise), and this clear scope differentiates it from sibling tools like ask_pipeworx or forget, none of which serve as a feedback channel.
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 'Use when' conditions (wrong/stale data, missing tool, praise) and explicit exclusions: ONLY for Pipeworx-served tools, not other MCP servers, with a named alternative ('file it with that server instead'). It also explains when to use claim_token for follow-up, leaving no ambiguity about when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pipeworx_trendingPipeworx TrendingARead-onlyIdempotentInspect
What other AI agents are calling on Pipeworx right now. Returns the top tools, top packs, and total call volume over a recent window (24h, 7d, or 30d). Useful for: (1) discovering what data sources are hot for current events, (2) confirming a popular tool is the canonical choice before asking your own question, (3) seeing whether your use case aligns with what most agents need. Self-aggregating signal — derived from CF analytics-engine, no PII, just (pack, tool, count). Cached 5min-1h depending on window.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | 24h (default) | 7d | 30d. Shorter windows surface what's hot right now; longer windows show steady-state demand. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. The description adds valuable details: data source (CF analytics-engine), no PII, and caching behavior (5min-1h). No contradictions.
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 tight sentences, front-loaded with main purpose, every sentence adds value. No redundancy or fluff.
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 one optional parameter, no output schema, and rich annotations, the description fully covers return values, privacy, caching, and use cases. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and schema description already explains parameter meaning. The description adds minimal extra context (e.g., shorter windows for hot, longer for steady), but this is not substantial beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns top tools, packs, and call volume over recent windows, distinguishing it from siblings like discover_tools or entity_profile by focusing on aggregated trending data from other agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three explicit use cases are provided, but no when-not-to-use or alternative tools are mentioned. Context is clear enough for effective selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_arbitragePolymarket ArbitrageARead-onlyIdempotentInspect
Find arbitrage opportunities on Polymarket via monotonicity violations + partition-sum checks. Call with NO args for a trending_scan of the top ~200 markets by weekly volume; pass event for the strongest per-event partition_check, or topic for a themed cross-event scan. event (recommended for a specific market): pass a Polymarket event slug like "fed-decision-may-2026" or "when-will-bitcoin-hit-150k"; walks child markets, checks date-axis / threshold-axis ordering AND computes the partition_check (sum of YES prices across mutually-exclusive legs — should ≈1; deviations >3pp emit a BUY/SELL EVERY LEG signal). topic (for cross-event scanning): pass a seed question like "Strait of Hormuz traffic returns to normal" or "Fed rate decision"; searches related events across the platform, flattens markets, runs the comparator on the union. Cross-event mode catches "...by May 31" vs "...by Jun 30" patterns that single-event misses. SEMANTIC ANCHOR: cross-event pairs require ≥0.30 Jaccard similarity on question tokens (prevents Powell-Fed-Pause being paired with Powell-DOJ-probe); skipped_low_similarity surfaces the rejected pair count. PARTITION FILTER: drops will-person-X / will-manager-Y / will-someone-else- placeholder slugs; partitions with >20% placeholder fraction return null arb signal. Response: opportunities[] (gap_pp, suggested_trade, reasoning, monotonicity violation context), and in event mode partition_check{sum_yes_prices, gap_from_1, placeholders_filtered, suggested_trade}. FILL CHECK: when the partition signal fires, arbitrage.fill_check prices it against live CLOB depth (theoretical_edge_pp_at_book vs realizable_edge_pp at 1000 shares/leg, thin_legs[]) — realizable_edge_pp ≤ 0 means the overround exists only at last-trade, not in the book; do not trade it. For custom sizing use polymarket_fill_risk.
| Name | Required | Description | Default |
|---|---|---|---|
| event | No | Single-event mode (use this if you know the specific Polymarket event): event slug like "fed-decision-may-2026" or "when-will-bitcoin-hit-150k". Full Polymarket URLs also accepted. | |
| topic | No | Cross-event mode (use this if you want to scan related events across the platform): a topic or seed question like "Fed rate decision" or "Strait of Hormuz traffic returns to normal". Tool searches Polymarket for related events and checks monotonicity across them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, non-destructive behavior. The description adds extensive behavioral context: scan logic, partition filter, placeholder rejection, fill check, and return structure. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed and well-structured with clear sections (SEMANTIC ANCHOR, PARTITION FILTER, FILL CHECK). It is front-loaded with the main purpose. However, it is somewhat lengthy and could be slightly tighter without losing essential 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?
Given the complexity of the tool (multiple modes, algorithmic filters, output structure) and the lack of an output schema, the description covers all necessary aspects: input modes, algorithm, filters, return format, and even a caution about fill check. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds significant meaning beyond the schema: clarifies mode differences, provides example inputs (slugs, URLs), and explains the semantic anchor and partition filter. This helps the agent select and invoke the correct parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: finding arbitrage opportunities via monotonicity violations and partition-sum checks. It distinguishes three modes (no args, event, topic) and contrasts with siblings like polymarket_edges and polymarket_fill_risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given for each mode: no args for trending scan, event for specific markets, topic for cross-event scanning. It also explains when to use polymarket_fill_risk for custom sizing and warns against trading when fill check shows zero realizable edge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_edgesPolymarket EdgesARead-onlyIdempotentInspect
Scan top Polymarket markets and return opportunities where Pipeworx data disagrees with market price. Built for "what should I bet on today" — agents discover opportunities without paging hundreds of markets. FIVE MODEL FAMILIES grouped into three response segments under by_segment: (1) MODEL_DRIVEN — crypto_price (lognormal barrier from 90d FRED log-returns) and news_momentum (GDELT 7d/21d article-volume ratio, soft signal w/ halved Kelly). (2) STRUCTURAL_ARBITRAGE — partition_overround on mutually-exclusive events; per-leg favorite-longshot bias correction with per-sport α (tennis 1.02, soccer 1.10, MMA 1.15, default 1.0); placeholder-slug filter drops will-person-X / will-team-Y / will-manager-Z / will-someone-else- backstops; partitions with >20% placeholder fraction skipped entirely. (3) CONCENTRATED_LONGSHOT — basket trade when one leg ≥75% AND ≥2 longshots ≤8% AND portfolio return ≥25:1; rare-by-design (gates relaxed Run 8 from prior 85%/5%/50:1). EVERY OPPORTUNITY carries edge_pp_net (after slippage), kelly_fraction + kelly_fraction_half (capped at 0.25), market.liquidity, market.spread_pp, market.volume, plus a 24h-move warning ("Market moved X.Xpp in 24h") when the recent move alone exceeds the edge — your edge may already be in the price. TRADEABLE-EDGE KNOBS: min_liquidity / max_spread_pp drop opportunities where edge isn't realizable; min_partition_leg_kelly filters partitions by best per-leg Kelly. RESPONSE TOP-LEVEL: by_segment{model_driven,structural_arbitrage,concentrated_longshot}, fed_candidates/fed_note (Fed bets surface here, excluded from ranking — 1m-T vs EFFR signal is unreliable at meeting-month horizons without paid OIS/SOFR-futures data), and _diagnostics{concentrated_longshot:{...funnel counters},category_counts,filter_skips} so callers can see WHY a segment is empty (top-N stale, all candidates failed gates, knob dropped them). Cached 1h at the KV level keyed on all knobs.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Top N edges to return after ranking. Default 10, max 25. | |
| window | No | Polymarket volume window to filter markets. Default 1wk. | |
| min_kelly | No | Minimum half-Kelly fraction (as decimal, e.g. 0.005 = 0.5% of bankroll) to include single-leg opportunities. Default 0 (no filter). Skips opportunities that are too small to bet sensibly even if the edge is large. | |
| min_edge_pp | No | Minimum |edge| in percentage points to include (default 0.5). Edge is evaluated NET of slippage. | |
| slippage_pp | No | Assumed execution slippage in percentage points per leg (default 0.3). Subtracted from raw |edge| before ranking and Kelly sizing. Polymarket has zero trading fees as of 2024 but bid/ask + thin depth typically eats 20-50bp per trade. Bump for very thin partitions; drop to 0 if you have a smarter fill model. | |
| max_spread_pp | No | Tradeable-edge filter. Maximum bid/ask spread in percentage points on the representative market. Default null (no filter). Set to 2 to require tight books — anything wider eats most plausible edges. | |
| min_liquidity | No | Tradeable-edge filter. Minimum $ liquidity on the representative market (or for partition_overround, on at least one top_leg). Default 0 (no filter). Set to 5000 to drop thin-book opportunities where executing the edge would walk the book past breakeven. | |
| category_filter | No | Comma-separated list to restrict the output: "model_driven" (crypto_price + news_momentum), "structural_arbitrage" (partition_overround), "concentrated_longshot". Combine like "model_driven,structural_arbitrage". Default: all. | |
| min_partition_leg_kelly | No | Minimum BEST per-leg half-Kelly fraction across a partition_overround opportunity's top_legs (or longshot_basket legs). Default 0 (no filter). Partition arbs always return kelly_fraction_half=0 at the parent level by design (basket trades don't compose to single-leg Kelly), so min_kelly never filters them — this knob applies to the per-leg Kelly inside top_legs instead. Use to suppress thin partitions whose individual leg edges aren't worth the per-leg slippage cost. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses extensive behavioral traits beyond annotations: three segments with model details, response structure including diagnostics, caching behavior (1h KV-level), Fed bet exclusion rationale, and edge/Kelly field definitions. All consistent with readOnlyHint, idempotentHint, and openWorldHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thorough and well-structured with sections, but somewhat verbose. Every sentence serves a purpose, providing necessary detail for a complex tool. Could be tightened slightly but maintains clarity.
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 tool with 9 parameters and no output schema, the description is remarkably complete. It covers purpose, all parameters with usage advice, response structure with segments and diagnostics, caching, and edge cases like empty segment reasons. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful extra context for parameters like slippage_pp (suggesting bump for thin partitions), min_liquidity, max_spread_pp, and min_partition_leg_kelly (explaining behavior with partition arbs). This enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans top Polymarket markets and returns opportunities where Pipeworx data disagrees with market price, using a specific verb and resource. It distinguishes from siblings by highlighting its unique discovery purpose for 'what should I bet on today' without paging hundreds of markets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (opportunity discovery) and includes detailed guidance on tradeable-edge knobs and parameter settings. However, it does not explicitly state when not to use it compared to alternative tools like polymarket_arbitrage or polymarket_fill_risk.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_edge_trackerPolymarket Edge TrackerARead-onlyIdempotentInspect
Edge persistence and decay telemetry built from daily polymarket_edges snapshots. Answers "how long has this edge existed and is it shrinking?" — a fresh wide edge and a 3-week-old wide edge are different trades (the latter is wide for a reason nobody is willing to take). Args: days (lookback, default 14, max 30), window (snapshot family, default "1wk"). RESPONSE: tracked[] = every opportunity in the LATEST snapshot with its full edge_pp_net time-series across prior snapshots, first_seen, trend (new | widening | stable | decaying) and decay_pp_per_day (both computed on |edge_pp_net| — the value itself is signed by trade direction, negative = SELL YES); expired[] = opportunities that appeared in earlier snapshots but are GONE from the latest (closed, resolved, or arbed away) with their lifespan_days — the median lifespan is your competition clock; snapshot_dates[] = which days actually have data (snapshots are written when polymarket_edges runs on a cache-miss, so gaps mean nobody scanned that day). LIMITS: history depth is bounded by the 60-day snapshot TTL and starts from when snapshotting was enabled; decay numbers come from daily closes of edge_pp_net (net of default slippage), not intraday.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback in days (default 14, clamp 2-30). | |
| window | No | Which polymarket_edges window family to read snapshots for: 24hr | 1wk | 1mo (default 1wk). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, open-world, idempotent, non-destructive behavior. The description adds significant context by explaining the return structure (tracked, expired, snapshot_dates) and limitations (60-day TTL, daily closes). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is comprehensive but slightly verbose. It is well-structured with clear sections for args, response, and limits. However, some sentences could be merged for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description fully details the return format (tracked, expired, snapshot_dates) and covers limitations. It provides all necessary context for a tool with two optional parameters and a rich response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning by explaining the 'days' parameter as lookback with default and max, and 'window' as snapshot family with examples. It also mentions defaults, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool provides 'edge persistence and decay telemetry' and answers a specific question about edge freshness. It clearly distinguishes from siblings like 'polymarket_edges' by focusing on historical time-series and decay analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (e.g., to differentiate between a fresh edge and an old one) but does not explicitly mention when not to use it or provide direct alternatives. The context of sibling tools provides implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_fill_riskPolymarket Fill RiskARead-onlyIdempotentInspect
Realizable-vs-theoretical edge check against live CLOB order-book depth. REQUIRES one of market (single-market mode) or event (basket/partition mode). SINGLE-MARKET: pass a market slug/URL + side (buy_yes|sell_yes|buy_no|sell_no, default buy_yes) + size_usd (default 1000 — max spend on buys, target proceeds on sells); walks the ladder and returns top_of_book, vwap_fill_price, slippage_pp, shares_filled, max_fillable_usd, and a verdict (clean|degraded|cannot_fill). BASKET: pass an event slug/URL + side (sell_yes = capture overround by selling every leg, buy_yes = capture underround; default auto from partition sum) + size_usd interpreted as settlement notional S (shares per leg; each share pays $1); returns theoretical_sum vs realizable_sum (top-of-book vs VWAP across all legs), capture_ratio, profit_usd at executed size, per-leg fill detail, thin_legs[], max_clean_notional_usd, and forced_directional_risk naming the legs most likely to strand you unhedged. USE THIS before acting on any polymarket_arbitrage SELL/BUY-EVERY-LEG signal or any polymarket_edges trade above ~$500 — theoretical overround on thin books is not capturable, and partial basket fills convert an arb into an unhedged directional position (the dominant loss mode in real arb-bot P&L).
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | Single-market: buy_yes | sell_yes | buy_no | sell_no (default buy_yes). Basket: sell_yes | buy_yes (default auto — sell if partition sum > 1, buy if < 1). | |
| event | No | Basket mode: event slug or full polymarket.com URL — checks every leg of the partition. | |
| market | No | Single-market mode: market slug or full polymarket.com URL. | |
| size_usd | No | Single-market: USD to spend (buys) or target proceeds (sells). Basket: settlement notional — shares per leg, each paying $1 at resolution. Default 1000, clamp 10–1,000,000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint: true, etc.) already indicate a safe read operation. Description adds useful behavioral context: walks the order-book ladder, returns fill details, slippage, and risk warnings like forced_directional_risk. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is long but well-structured with clear section labels (SINGLE-MARKET, BASKET). All sentences add value; no filler. Could be slightly shorter but complexity justifies length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description thoroughly lists return fields for both modes, including risk indicators and verdicts. It covers prerequisites (requires market or event), explains edge cases (thin books, partial fills), and provides enough detail for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but description adds significant value: clarifies market vs event mutual exclusivity, explains side defaults per mode, and defines size_usd interpretation (max spend vs target proceeds vs settlement notional). This goes well beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Realizable-vs-theoretical edge check against live CLOB order-book depth'. It distinguishes from siblings by explicitly directing use before acting on polymarket_arbitrage signals or polymarket_edges trades above ~$500, differentiating it from those 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?
Description provides explicit when-to-use guidance: before acting on polymarket_arbitrage signals or polymarket_edges trades above ~$500. It explains why (unrealizable edge, unhedged directional risk) and implicitly defines when not needed (small trades). Alternatives are named in sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
polymarket_kalshi_spreadPolymarket–Kalshi SpreadARead-onlyIdempotentInspect
Cross-venue spread between Kalshi and Polymarket for the same resolving question. The two venues sometimes price the same outcome 2-25pp apart because their participant pools differ — when the bet shapes are equivalent that delta is a real signal, when they aren't the tool says so. TWO MODES: (1) topic — 10 pre-mapped macro shortcuts ("fed", "btc", "cpi", "gdp", "sp500", "recession", "next_pope", "next_uk_pm", "next_israel_pm", "2028_president") auto-fetch the matching event on each venue. (2) explicit kalshi_event_ticker + polymarket_event_slug for custom pairings — BOTH modes run the identical token-overlap matcher, so the same disclosures apply to both. RESPONSE: each venue's leg-by-leg prices (raw probability 0-1) plus matched spread[].top_spreads_pp (Kalshi − Polymarket) where the same outcome shows up on both sides. SAFETY FIELDS: compatibility_warning is a sentence and compatibility_codes[] the machine-readable form; BOTH can be non-empty on returned pairs, so read them even when matched_pairs>0. Codes: event_subject_mismatch (the two event titles share no subject words — probably not the same question), temporal_mismatch (they resolve in different months), temporal_alignment_unknown (the resolution month could not be parsed on one or both sides — NOT the same as confirmed-aligned; check each event's close/strike date yourself), non_equivalent_bet_shapes, no_candidate_pairs, unclassified_legs_excluded, pairing_unverified (set in EITHER mode whenever pairs are returned: the legs were matched by keyword and word overlap, not a shared resolution source). Each entry in top_spreads_pp carries its own flags[] (temporal_mismatch, temporal_alignment_unknown, event_subject_mismatch, low_token_overlap). A leg whose metric_type or match_subtype is "unknown" is NEVER paired — those comparisons land in spread.skipped_unclassified and, when the wording lined up, in spread.low_confidence_pairs[] for inspection only. temporal_alignment{polymarket_month,kalshi_month,aligned} tells you whether the two events resolve in the same calendar period, in EITHER mode; null means it could not be computed (see temporal_alignment_unknown), not that the two sides align. spread.fees_note is a standing disclosure: Kalshi charges per-contract trading fees, Polymarket does not, and this tool does not model Kalshi's fee schedule — every spread_pp is gross, not a net tradeable edge. skipped_cross_type / skipped_cross_subtype counters expose how many leg-pair comparisons were dropped (cross-type = metric_type mismatch like MoM vs YoY; cross-subtype = inequality mismatch like cum_ge vs cum_le). Real cross-venue spreads are rarer than the macro-shortcut list suggests — most pre-mapped topics return compatibility_warning today; pre-mapped ≠ tradeable.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Pre-mapped: fed | btc | cpi | gdp | sp500 | recession | next_pope | next_uk_pm | next_israel_pm | 2028_president | |
| kalshi_event_ticker | No | Explicit Kalshi event ticker, e.g. "KXFED-26OCT". Overrides the topic-mapped Kalshi side. | |
| polymarket_event_slug | No | Explicit Polymarket event slug, e.g. "fed-decision-in-june-825". Overrides the topic-mapped Polymarket side. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description goes far beyond that by explaining the matching method (keyword/word overlap, not shared resolution source), the meaning of every compatibility code, the fee disclosure (Kalshi fees not modeled, spreads are gross), and the behavior for unclassified legs. It also clarifies that compatibility codes can appear on returned pairs, preventing misinterpretation. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (several paragraphs) and covers many nuances, but it is well-structured with clear sections (modes, response, safety fields, codes, fees note, skipped counters). Some points are repeated (e.g., temporal_alignment_unknown explained twice, compatibility warning emphasized twice), but the complexity of the tool justifies most of the length. Front-loaded with the core purpose and modes, so agents get the gist quickly.
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 must fully specify the response shape and edge cases. It does: explains the spread array, top_spreads_pp, per-entry flags, temporal_alignment object, fees_note, skipped_cross_type/subtype counters, and the handling of unclassified legs (never paired, placed in skipped_unclassified/low_confidence_pairs). It also covers required parameter behavior and caveats about pre-mapped topics. Nothing essential is missing for an agent to call the tool correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a clear description (e.g., topic enumerates the shortcuts, ticker/slug specify overrides). The description adds crucial behavioral context about how parameters interact (both modes run identical matcher, explicit overrides the mapped side), and it notes that topic is 'pre-mapped' but not guaranteed to resolve. This enriches the schema without repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific statement of purpose: 'Cross-venue spread between Kalshi and Polymarket for the same resolving question.' It clearly distinguishes this from sibling tools (polymarket_arbitrage, polymarket_edges, etc.) by focusing on the spread between venues, and it details what the tool returns and its safety caveats. No ambiguity.
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 defines two usage modes ('topic' for pre-mapped shortcuts, explicit ticker/slug for custom pairings) and explains when to use each. It warns that pre-mapped topics often return compatibility_warning and are not necessarily tradeable, guiding the agent to interpret results cautiously. It also clarifies that both modes run the same matcher, so usage expectations are consistent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purple_book_biosimilar_entry_timelinePurple Book Biosimilar Entry TimelineARead-onlyIdempotentInspect
Chronologically summarize unique FDA-licensed 351(k) BLAs associated with a reference biologic. Returns approval dates, applicants, product names, reference products, and biosimilar versus interchangeable designations for entry analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Unique 351(k) BLAs (1-100, default 50). | |
| reference_product | Yes | Reference proper/proprietary name or related product name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| entries | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description adds genuinely useful behavioral context beyond those hints: 'unique' signals deduplication of 351(k) BLAs, and 'chronologically summarize' signals temporal ordering and aggregation rather than a raw list.
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 no filler: the first front-loads the core behavior and resource, the second lists return fields and the use case. Every sentence earns its place and nothing is redundant with 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?
For a simple two-parameter, read-only query tool with 100% schema coverage and an output schema, the description plus structured fields cover invocation and expectations well. The one gap is the missing routing guidance relative to the purple_book_* sibling family, but nothing essential for calling the tool correctly 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% — limit (1-100, default 50) and reference_product (proper/proprietary or related name) are both documented in the schema. The description's 'reference biologic' loosely echoes the reference_product parameter but adds no new parameter-level 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?
States a specific verb (chronologically summarize), a precise resource (unique FDA-licensed 351(k) BLAs associated with a reference biologic), and lists the returned fields (approval dates, applicants, product names, reference products, designations). The 'entry timeline' angle distinguishes it from the seven purple_book_* siblings covering biosimilar lists, interchangeables, and product search.
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 'for entry analysis' implies a use case, but no alternatives or when-not-to-use guidance is provided. With seven purple_book_* siblings, including purple_book_biosimilars and purple_book_competition_profile, an agent gets no explicit cue for choosing this tool over them. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purple_book_biosimilarsPurple Book BiosimilarsARead-onlyIdempotentInspect
List FDA-licensed 351(k) biosimilar and interchangeable products for an optional reference product, applicant, or product name. Approval/licensure does not establish commercial launch or current availability.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows (1-100, default 50). | |
| query | No | ||
| include_interchangeable | No | Include interchangeable products (default true). |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| products | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, idempotent, and non-destructive behavior. The description adds a valuable real-world caveat: FDA licensure does not mean commercial launch or current availability, which is exactly the kind of behavioral context an agent needs when interpreting 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?
The description is two tight sentences: the first states the action and scope, the second provides a necessary interpretive caveat. No wasted words, and the most important 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?
For a read-only listing tool with an output schema and strong annotations, the description covers the core purpose, filter semantics, and an important data-quality caveat. It is slightly less complete because it does not route the agent toward more specialized sibling tools, but nothing essential 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?
The description defines what 'query' means (reference product, applicant, or product name), compensating for the schema's undocumented 'query' property. Both other parameters are already documented in the schema, so the description adds meaningful value without fully specifying matching behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('FDA-licensed 351(k) biosimilar and interchangeable products') and names the optional filters (reference product, applicant, product name). This distinguishes it from sibling tools like purple_book_interchangeables or purple_book_reference_product.
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 makes clear this is a list-oriented search with optional filters, and the approval-versus-availability caveat adds important usage context. However, it does not explicitly name sibling alternatives or state when to prefer a more specialized tool like purple_book_product_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purple_book_competition_profilePurple Book Competition ProfileARead-onlyIdempotentInspect
Profile FDA-licensed biologic competition around a proper, proprietary, or reference-product name. Counts unique BLAs as sponsors/applications and separates reference products, biosimilars, and interchangeables. It does not measure launches, availability, sales, or market share.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Product rows (1-100, default 50). | |
| biologic | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| biologic | Yes | |
| products | Yes | |
| applicants | Yes | |
| unique_blas | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| interpretation | Yes | |
| reference_blas | Yes | |
| biosimilar_blas | Yes | |
| dataset_updated | No | |
| dataset_age_days | No | |
| matched_products | Yes | |
| interchangeable_blas | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnly and idempotent, and the description adds meaningful behavior: it counts unique BLAs and separates product categories rather than measuring market activity. The explicit exclusions (launches, availability, sales, market share) give an agent a clear model of what this tool can and cannot tell it.
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: purpose, method, and limitations are front-loaded. Every sentence earns its place, and the key exclusion is placed at the end as a useful caveat rather than cluttering the core definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only profile tool with an output schema available, the description covers the input semantics, output categories, and known limitations. It could be slightly stronger with an explicit nod to the sibling Orange Book tool for small-molecule equivalents, but it is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The required 'biologic' parameter has no schema description, but the tool description fills this gap by defining the accepted name forms (proper, proprietary, or reference-product name). The 'limit' parameter is documented in the schema with range and default, so the description does not need to repeat it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Profile'), a specific resource ('FDA-licensed biologic competition'), and a precise input ('proper, proprietary, or reference-product name'). It also states the output categories (reference products, biosimilars, interchangeables), distinguishing it from sibling tools like purple_book_biosimilars or purple_book_reference_product.
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 indicates when to use: when you need a competitive profile around a named biologic, and explicitly lists what it does not provide (launches, availability, sales, market share). It does not name an alternative sibling for those other needs, so it stops short of fully explicit substitution guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purple_book_interchangeablesPurple Book InterchangeablesARead-onlyIdempotentInspect
List FDA Purple Book products designated 351(k) Interchangeable, optionally filtered by reference product, applicant, or product name. Interchangeability is an FDA designation; pharmacy substitution remains subject to applicable law and circumstances.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| products | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
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 a useful caveat about the legal meaning of interchangeability, but does not disclose any additional behavioral details 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 concise sentences with no filler. The first sentence states the action and scope, and the second adds a necessary regulatory caveat without diluting the core message.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and rich annotations, the description covers the core purpose and query semantics adequately. It would be slightly stronger if it explicitly positioned this tool against the related purple_book_* siblings, but nothing essential to invoking it 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 0%, but the description compensates by explaining that the query can filter by reference product, applicant, or product name. The limit parameter is not described, though its meaning is largely self-evident from the example and parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('List') and a precisely defined resource ('FDA Purple Book products designated 351(k) Interchangeable'). It clearly distinguishes this from sibling tools like purple_book_biosimilars by foregrounding the interchangeability designation.
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 explains optional filtering by reference product, applicant, or product name, which gives some usage context. However, it does not explicitly state when to choose this tool over related sibling tools such as purple_book_biosimilars, purple_book_product_search, or purple_book_reference_product.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purple_book_product_searchPurple Book Product SearchARead-onlyIdempotentInspect
Search FDA Purple Book biologic products by proper/proprietary name, applicant, reference product, or BLA. Returns licensure and product-level attributes. A licensed biosimilar is not necessarily launched, available, interchangeable, or substitutable under state law.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Rows (1-100, default 25). | |
| query | Yes | Name, applicant, reference product, or BLA substring. | |
| license_type | No | ||
| include_discontinued | No | Include discontinued products (default false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| products | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the operation's safety profile is established. The description adds valuable context by stating that it returns licensure and product-level attributes, and it includes an important interpretive caveat that a licensed biosimilar is not necessarily launched, available, interchangeable, or substitutable. This goes beyond the structured metadata without contradicting it.
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 three sentences with no filler. The primary action and searchable fields are front-loaded, followed by a brief return-type statement and a useful legal caveat. Every sentence contributes meaning.
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 that an output schema exists, the description does not need to detail return values. The presence of annotations covers safety and idempotency, and the description covers search scope and data interpretation caveats. It could be more complete by naming sibling tools or clarifying when the specialized Purple Book views should be preferred, but nothing essential is missing for invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the schema already documents most parameters. The description mirrors the query parameter's allowed search fields (name, applicant, reference product, BLA) and adds 'proper/proprietary' specificity, but it does not materially extend the schema's parameter semantics for limit, license_type, or include_discontinued.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb (search), the resource (FDA Purple Book biologic products), and the search dimensions (name, applicant, reference product, BLA), making the tool's purpose easy to grasp. It is distinguishable from the sibling tools by its general product-search scope, though it does not explicitly name any sibling to differentiate itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching Purple Book products by name or BLA, but it provides no explicit guidance on when to choose this tool over the many related sibling tools such as purple_book_biosimilars or purple_book_interchangeables. There are no exclusions or alternative recommendations, so usage context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purple_book_recent_changesPurple Book Recent ChangesARead-onlyIdempotentInspect
Return the changes section of FDA’s latest monthly Purple Book report: N=newly approved, R=added in current release, U=updated. Updated or added does not necessarily mean newly licensed.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| change_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| changes | Yes | |
| returned | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| dataset_updated | No | |
| dataset_age_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the safety profile is already carried by annotations. The description adds value beyond that: 'latest monthly' scoping and the semantic caveat that R/U codes do not necessarily mean newly licensed, which prevents misinterpretation of results. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences and roughly 35 words with the core action front-loaded, followed by code decoding and a domain caution. Every clause earns its place, and nothing repeats what the schema or annotations already state.
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?
An output schema exists so return values are covered elsewhere, annotations carry the behavioral profile, and the description handles the domain-specific codes and scoping. The only residual gap is what the query parameter searches across, which is minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It fully explains the ambiguous change_type enum (N=newly approved, R=added in current release, U=updated), which is the highest-value parameter, but says nothing about limit or query, leaving their semantics to be inferred from name and type.
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: 'Return the changes section of FDA's latest monthly Purple Book report.' It also decodes the N/R/U change codes and adds the important caveat that updated/added does not necessarily mean newly licensed, which clearly differentiates it from siblings like purple_book_product_search or the generic recent_changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool serves change-history queries for the latest monthly Purple Book report, so an agent can infer when to reach for it. However, it names no sibling alternatives or exclusion conditions (e.g., when to prefer purple_book_biosimilars or recent_changes), leaving differentiation to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purple_book_reference_productPurple Book Reference ProductARead-onlyIdempotentInspect
Find a reference biologic and its FDA-licensed 351(k) products by proper or proprietary name. Product rows and BLA counts must not be interpreted as market participants, launches, or market share.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| reference_product | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| source | Yes | |
| dataset_note | No | |
| dataset_stale | No | |
| interpretation | Yes | |
| dataset_updated | No | |
| dataset_age_days | No | |
| unique_351k_blas | Yes | |
| reference_product | Yes | |
| reference_products | Yes | |
| related_351k_products | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds valuable context by warning that 'Product rows and BLA counts must not be interpreted as market participants, launches, or market share,' preventing misinterpretation of regulatory data. This goes beyond the basic safety profile provided by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler: the first states the core action and target, the second provides an essential interpretive warning. Both sentences earn their place, and the key function 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?
Given the tool's simplicity, the presence of an output schema, and comprehensive read-only annotations, the description is largely complete. It covers the search action and an important caveat about data interpretation. The main missing elements are explicit guidance on when to use this tool versus similar purple_book tools and any explanation of the limit parameter.
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 0% schema description coverage, the description must compensate. It does add meaning to reference_product by specifying lookup 'by proper or proprietary name.' However, limit is left completely unexplained, including its purpose, default, or constraints, leaving a gap for one of the two parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Find' and clearly identifies the resource: a reference biologic and its FDA-licensed 351(k) products, searched by proper or proprietary name. This distinguishes it from sibling tools like purple_book_biosimilars or purple_book_product_search, which focus on broader listings rather than a reference product and its associated products.
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 usage scenario (lookup by name for a reference biologic and its 351(k) products) but does not explicitly state when to prefer this tool over alternatives like purple_book_biosimilars or purple_book_product_search. It also provides no exclusions or routing guidance, which is notable given the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recallRecallARead-onlyIdempotentInspect
Retrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonymous IP, BYO key hash, or account ID). Pair with remember to save, forget to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Memory key to retrieve (omit to list all keys) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the tool's safety is clear. The description adds value by explaining scoping ('scoped to your identifier') and the behavior of omitting the key to list all keys, which is not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the core action. Every sentence adds value: purpose, usage guidance, and scoping/pairing. No redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature (one optional parameter, no output schema), the description covers the tool's purpose, usage context, scoping, and relationship with siblings. It provides enough information for an agent to correctly invoke the tool without needing additional details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter schema has 100% coverage with a description for 'key'. The description adds meaningful context by providing examples of what keys might contain (target ticker, address, research notes), enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves values saved via 'remember' or lists all keys when the key argument is omitted. It specifies the verb 'retrieve' and resource 'values saved via remember', distinguishing it from sibling tools like 'remember' and 'forget'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases (e.g., retrieving a target ticker, address, research notes) and explains why to use it (avoid re-deriving context). It also mentions pairing with remember and forget. However, it does not explicitly state when not to use this tool or compare it to other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_alertsRecent AlertsARead-onlyIdempotentInspect
Pull fired events from your subscription feed. Returns the most recent alerts the evaluator has written to your persisted feed — each carries source, citation_uri (pipeworx:// when available), and the raw event payload. Filter by type (e.g. "sec_8k") and/or since (ISO timestamp). Set mark_read:true to flag returned events read so the next call only shows newer ones. Polls work fine; the same feed is also at GET registry.pipeworx.io/alerts.json for scripts and dashboards.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Optional — filter to one subscription type. | |
| limit | No | Max events to return (1-200, default 50). | |
| since | No | Optional ISO timestamp — return events fired_at >= this time. | |
| mark_read | No | Flag the returned events read in the same call (default false). | |
| unread_only | No | Return only events where read_at is null (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, idempotent, openWorld. Description adds critical behavioral detail: setting mark_read:true flags events as read to affect future calls. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first states purpose, second details features, third adds usage tips. Every sentence adds value, front-loaded, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description explains return structure (source, citation_uri, raw payload) and key behaviors (filtering, mark_read, polling). Completely adequate for a read-only retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 5 parameters with descriptions (100% coverage). Description adds examples (e.g., 'sec_8k' for type, ISO timestamps) and clarifies mark_read effect, providing meaning beyond 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?
Clearly states it pulls fired events from the subscription feed, specifies returned fields (source, citation_uri, raw payload), and mentions filtering options. Distinguishes itself from sibling tools like list_subscriptions.
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 states polling works fine and provides an alternative REST endpoint for scripts/dashboards, guiding when to use the tool vs. direct API. Does not explicitly compare to siblings but offers clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_changesRecent ChangesARead-onlyIdempotentInspect
"What's new with X" / "latest on Y" / "what happened to Z this week / month / quarter" / "updates on Acme" / "news on Tesla recently" / "what's happening with Apple" — change feed for a company in the last N days/weeks/months in ONE parallel call. Fans out to SEC EDGAR (filings since since), GDELT→GNews fallback (news mentions in window — GDELT preferred, GNews when rate-limited or 5xx), USPTO (patents granted; PatentsView API sunset May 2025 so this soft-fails until reactivated). since accepts ISO date ("2026-04-01") or relative shorthand ("7d", "30d", "3m", "1y"). Returns structured changes[] grouped by source + total_changes count + pipeworx:// citation URIs. Use entity_profile instead when you want the static profile (filings + fundamentals + LEI + patents) regardless of window.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Entity type. Only "company" supported today. | |
| since | Yes | Window start — ISO date ("2026-04-01") or relative ("7d", "30d", "3m", "1y"). Use "30d" or "1m" for typical monitoring. | |
| value | Yes | Ticker (e.g., "AAPL") or zero-padded CIK (e.g., "0000320193"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool fans out to multiple sources, with a fallback from GDELT to GNews when rate-limited or on 5xx, and a soft-fail for USPTO due to API sunset. Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the description adds useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, parameter explanations, usage examples, and a sibling differentiation. Every sentence adds value without unnecessary fluff, making it both informative and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple data sources, fallback logic, parameter options, no output schema), the description is remarkably complete. It covers data sources, fallback behavior, parameter formats, and provides an explicit alternative tool, leaving no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant meaning: explains `since` accepts ISO dates or relative shorthand (e.g., '7d', '1y'), `value` can be ticker or CIK, and `type` is currently limited to 'company'. This goes well beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides a change feed for a company over a time window, aggregating from SEC EDGAR, GDELT/GNews, and USPTO. It gives example queries like 'What's new with X' and distinguishes from the sibling tool 'entity_profile'.
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 when to use this tool vs. 'entity_profile' (static profile). Provides parameter guidance for `since` (ISO date or relative shorthand) and examples for `value` (ticker or CIK). Also explains fallback behavior between GDELT and GNews.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberRememberAIdempotentInspect
Save data the agent will need to reuse later — across this conversation or across sessions. Use when you discover something worth carrying forward (a resolved ticker, a target address, a user preference, a research subject) so you don't have to look it up again. Stored as a key-value pair scoped by your identifier. Authenticated users get persistent memory; anonymous sessions retain memory for 24 hours. Pair with recall to retrieve later, forget to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Memory key (e.g., "subject_property", "target_ticker", "user_preference") | |
| value | Yes | Value to store (any text — findings, addresses, preferences, notes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key traits beyond annotations: 'Stored as a key-value pair scoped by your identifier', 'Authenticated users get persistent memory; anonymous sessions retain memory for 24 hours.' Adds context on scoping and retention that annotations alone don't provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Multiple sentences but tightly written with no waste. Front-loaded with core purpose, followed by usage triggers, then storage details, then pairing instructions. Every sentence 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?
For a simple write-only tool with no output schema and clear annotations, the description provides all necessary context: purpose, when to use, storage behavior, scoping, retention, and sibling relationships. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds extra meaning: explains that key-value is scoped by identifier, gives example patterns in key description ('subject_property', 'target_ticker'), and defines value as 'any text'. This goes beyond bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save data the agent will need to reuse later', specifying the verb 'save' and resource 'data'. It distinguishes from sibling tools 'recall' and 'forget' by naming them for retrieval and deletion.
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 when to use: 'when you discover something worth carrying forward'. Provides clear alternatives: 'Pair with recall to retrieve later, forget to delete.' This gives solid guidance on selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_entityResolve EntityARead-onlyIdempotentInspect
"What's the ticker for…" / "find the CIK for…" / "what's the LEI for…" / "what's the RxCUI for…" / "look up the ID for…" / "what is X's official identifier" / "who owns X" / "is X a subsidiary of Y" — resolve a user-spoken NAME to the canonical/official identifiers other tools require as input. Use FIRST whenever you have a name but need an ID. SUPPORTED TYPES: "company" (cross-source identity spine: 10-digit CIK + ticker + company_name from SEC EDGAR, legal-entity LEI from GLEIF with parent/ultimate-parent/children ownership when the LEI resolves, and security FIGI from OpenFIGI — by exact ticker map when a ticker is implied, and otherwise by name search, so NON-EQUITY instruments that never have a ticker (municipal and corporate bonds, notes, authority debt) DO resolve here; when a name matches more than one instrument it asserts nothing and returns figi_candidates to pick from, which is the correct answer to an issuer name that does not identify a single bond; every identifier is labelled with the source that established it, and an identifier that could NOT be resolved is stated explicitly under unresolved rather than omitted — accepts ticker, CIK, ISIN, or company name as input; an ISIN like "CH0038863350" resolves to the LEGAL ENTITY that issued the security via the GLEIF ISIN-to-LEI mapping, covering non-US issuers EDGAR cannot reach), "drug" (returns RxCUI + ingredient + brand from RxNorm + pipeworx://rxnorm/concept/{rxcui} citation; accepts brand or generic name). LEI/FIGI enrichment degrades gracefully — if GLEIF or OpenFIGI is unavailable, the EDGAR identifiers still return. Each call cascades through several lookup endpoints internally — using resolve_entity replaces 2-3 manual lookups.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Entity type: "company" or "drug". | |
| value | Yes | For company: ticker (AAPL), CIK (0000320193), or name. For drug: brand or generic name (e.g., "ozempic", "metformin"). Pass the ENTITY NAME ONLY — for a bond that is the ISSUER exactly as printed ("NEW YORK ST DORM AUTH"), never the question's full noun phrase ("NEW YORK ST DORM AUTH revenue bonds"): the FIGI lookup matches instrument names, so trailing security-class words match nothing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds substantial behavioral disclosure beyond that: it explains the internal cascade ('cascades through several lookup endpoints internally'), graceful degradation ('if GLEIF or OpenFIGI is unavailable, the EDGAR identifiers still return'), and how ambiguous matches are handled ('asserts nothing and returns figi_candidates'). This meaningfully exceeds the baseline, though it doesn't cover every edge case (e.g., rate limits), so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense, but every clause carries important information—edge cases, source labeling, fallback behavior. It front-loads examples and the primary directive ('Use FIRST'), then flows into details. While it could be trimmed, the length is justified by the tool's complexity. It's well-structured and readable, so a 4 is fair.
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 must explain return behavior, and it does thoroughly: it mentions returned identifiers are source-labelled, unresolved ones appear under 'unresolved', multiple security matches yield 'figi_candidates', and drug lookups return RxCUI + ingredient + brand. It even covers the non-US issuer case. An agent calling the tool knows what to expect and how to interpret results, making it complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100% (both parameters have descriptions), the description adds critical meaning beyond the schema. For the 'value' parameter, it warns against passing the full noun phrase for bonds ('never the question's full noun phrase'), which is a crucial semantic distinction. For 'type', it enriches the enum with detailed behavior for each type. This goes well beyond the baseline 3 for 100% coverage, so a 5 is justified.
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 concrete example queries and then states the precise purpose: 'resolve a user-spoken NAME to the canonical/official identifiers other tools require as input.' It names the resource (identifiers) and distinguishes itself from 30+ sibling tools by being the only one focused on name→ID resolution. No ambiguity 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?
The description explicitly directs 'Use FIRST whenever you have a name but need an ID,' which is a clear when-to-use instruction. It also explains what it replaces ('2-3 manual lookups'), giving useful context. However, it does not explicitly state when NOT to use it or name alternative tools (e.g., 'for a full entity profile use entity_profile'). The guidance is strong but lacks explicit exclusions or sibling comparisons, so a 4 is warranted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_competitor_ai_presenceScan Competitor AI PresenceARead-onlyIdempotentInspect
Compare AI visibility across multiple entities side-by-side. Probes each entity (your brand + N competitors) with ai_visibility_check, ranks by score, surfaces which is most/least recognized. Useful for competitive AI-marketing audits: "does Claude know about us as well as our competitors?". Returns ranked list with score, confidence, signal density per entity.
| Name | Required | Description | Default |
|---|---|---|---|
| models | No | Which models to probe. Supported: "workers-ai" (free default), "anthropic" (requires _apiKey). Omit for just workers-ai. | |
| _apiKey | No | Optional Anthropic API key — only if "anthropic" is in models. Passed to api.anthropic.com per probe. | |
| context | No | Optional shared context applied to every probe (e.g. "B2B SaaS", "Boston restaurant"). Disambiguates common names. | |
| entities | Yes | Array of 2-8 entities to compare (brand/business/product names). First entry treated as the "subject" for narrative; rest are competitors. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool internally calls ai_visibility_check for each entity, ranks results, and surfaces most/least recognized. Adds behavioral context beyond annotations (readOnlyHint, openWorldHint, etc.) such as the probing process and output format. No contradictions.
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, each serving a distinct purpose: purpose, process, use case, output. No redundancy. Front-loaded with the core action.
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 4 parameters all described in schema and enriched by description, and no output schema needed because return type is clearly stated (ranked list with score, confidence, signal density per entity), the description is fully sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond the schema: explains that the first entity is the 'subject' for narrative purposes, gives examples for the context parameter, clarifies free default for models, and notes API key usage. Schema coverage is 100%, and description enriches it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Defines the tool as comparing AI visibility across multiple entities side-by-side, with clear verbs (compare, scan, probe) and a specific resource (AI presence). Distinguishes from sibling ai_visibility_check by emphasizing multi-entity comparison and ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit use case (competitive AI-marketing audits) and a concrete example question. Implies when to use this tool over ai_visibility_check (single vs. multiple entities), though does not explicitly list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_dependencyScan DependencyARead-onlyIdempotentInspect
Composite "should I add this npm package to my project" check in ONE call — fans out across deps.dev (license + advisories + version history) and bundlephobia (gzipped/minified bundle size, dependency count, ESM/tree-shake support). Use whenever an agent asks "is X safe / popular / small" or "what does adding lodash cost me". Returns a summary block (is_latest, license, published_at, advisory_count, bundle_kb_min, bundle_kb_gz, dependency_count, has_esm, tree_shakeable), per-advisory detail, links, and a list of recent alternative versions. NPM ecosystem only in v1; PyPI / Maven / Cargo / Go fall under deps.dev:version directly. Partial failures degrade gracefully — bundlephobia's first measurement on a new version can take 5-30s; sources_failed will list it if it times out, the rest still returns.
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | npm package name. Scoped packages (e.g. "@types/node") are accepted. | |
| version | No | Specific version to check (e.g., "18.3.1"). Defaults to the latest published version when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds valuable behavioral details: partial failures degrade gracefully, bundlephobia first measurement can take 5-30s, sources_failed lists timeout. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with purpose, but slightly verbose with inline details. However, every sentence adds value. Could be tightened slightly, but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description thoroughly explains return format: summary block with specific fields, per-advisory detail, links, alternative versions. Also covers ecosystem scope, partial failure, and timing. Complete for complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description adds no additional meaning beyond what schema provides (package name and version). No extra guidance on default behavior or formatting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a composite check for npm packages covering license, advisories, version history, bundle size, etc. It uses specific verb 'scan' and resource 'dependency', and distinguishes from related tools like deps.dev:version.
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: 'whenever an agent asks 'is X safe / popular / small' or 'what does adding lodash cost me''. Also specifies limitations: 'NPM ecosystem only in v1; PyPI / Maven / Cargo / Go fall under deps.dev:version directly.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_withinSearch Within a SourceARead-onlyIdempotentInspect
Semantic search INSIDE a fetched record. Pass the text you already pulled (e.g. a SEC 10-K body, an article, a long tool result) plus a natural-language query; get back the top-N passages with character offsets and similarity scores. Use when the record is too big to cram into the prompt — search_within saves context, returns only the passages that matter, and every passage carries an offset so the agent can verify a verbatim quote. Pairs with ask_pipeworx_grounded: fetch with the gateway, ground over the relevant passages instead of the whole document. BGE-base-en embeddings + cosine over 500-char overlapping windows; cap is 200K chars (longer inputs are truncated and flagged).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The document text to search inside (max ~200K chars). | |
| limit | No | Max passages to return (1-20, default 5). | |
| query | Yes | Natural-language query — what passages do you want? E.g. "supply-chain risk", "fiscal year 2024 revenue", "drug interactions with warfarin". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint as true. The description adds beyond annotations: BGE-base-en embeddings, cosine similarity over 500-char overlapping windows, 200K char cap with truncation flag. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is 4-5 sentences, front-loads purpose and usage, then pairs with a sibling, then adds technical details. Every sentence adds value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, the description covers purpose, usage, behavioral specifics, and parameter semantics. Mentions what is returned (passages with offsets and similarity scores). Adequate for a complete understanding.
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%. Description adds examples for the query parameter and explains the limit parameter's range and default. Adds nuance like 'text to search inside' and 'natural-language query' beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Semantic search INSIDE a fetched record' and provides specific examples (SEC 10-K, article, long tool result). It distinguishes itself from siblings by mentioning its pairing with ask_pipeworx_grounded, differentiating it from general search or retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when the record is too big to cram into the prompt' and explains that it returns top-N passages with offsets. It also pairs with ask_pipeworx_grounded for grounding. No explicit when-not or alternatives, 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.
subscribeSubscribe to AlertsAIdempotentInspect
Create a proactive monitoring subscription to a live-data event stream. Returns the new subscription id. Requires a Pipeworx OAuth account (anonymous + BYO cannot persist subscriptions). Supported types: "sec_8k" (8-K filings matching ticker + item codes — e.g. items:["5.02"] = officer change), "polymarket_edge" (Polymarket↔Kalshi cross-venue mispricings — params:{topic:"fed"}), "fred_series" (new FRED observations — params:{series_id:"UNRATE"}). Delivery channels: feed (always on — pull via recent_alerts or GET registry.pipeworx.io/alerts.json), and optionally email (set delivery:{email:"you@x.com"}) or sms (delivery:{sms:"+15551234567"} — phone must be verified at /account first; 10/day cap).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Subscription type. | |
| params | Yes | Type-specific filter. sec_8k: {ticker:"AAPL", items?:["5.02","1.01"]}. polymarket_edge: {topic:"fed", min_spread_bps?:500}. fred_series: {series_id:"UNRATE"}. patent_grant: {applicant:"Apple Inc."}. clinical_trial: {sponsor?:"Pfizer", condition?:"lung cancer", phase?:"PHASE3"} (sponsor or condition required). | |
| delivery | No | Optional delivery channels in addition to the always-on persistent feed. {email:"you@x.com"} sends a templated alert per fired event. {sms:"+15551234567"} sends an SMS per event — must match the verified phone on the caller's account (verify at https://pipeworx.io/account first; 10/day cap). {webhook:"https://..."} POSTs each event JSON to your endpoint, HMAC-signed — the response includes delivery.webhook_secret (whsec_…) ONCE; verify X-Pipeworx-Signature = sha256 HMAC of "<X-Pipeworx-Timestamp>.<raw body>". Auto-disabled after 10 consecutive failing runs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behavioral traits: idempotentHint from annotations is consistent with 'create' semantics. Adds context about delivery limits (10 SMS/day), webhook auto-disable after 10 failures, and verification requirements for phone. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph, which packs a lot of information. Every sentence adds value, but it could benefit from bullet points or section breaks for readability. Still, front-loading with the purpose is good.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 params, nested objects, no output schema), the description covers all necessary aspects: requirements, supported types with examples, delivery options with limits and verification, and return value. It is self-contained and leaves no major 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?
Even though schema coverage is 100%, the description adds substantial meaning: concrete examples for each type's params (e.g., sec_8k items codes, polymarket_edge topics) and detailed delivery channel behavior including webhook HMAC signing. This goes well beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Create a proactive monitoring subscription to a live-data event stream'—a specific verb+resource combo. It clearly distinguishes from sibling tools like 'list_subscriptions' and 'unsubscribe' by focusing on creation.
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 states that a Pipeworx OAuth account is required and that anonymous/BYO cannot persist subscriptions. Provides examples for each subscription type and delivery channel. However, it doesn't explicitly advise against using this tool vs. alternatives like 'recent_alerts' for simple polling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_questionsWhat Can I Ask Pipeworx?ARead-onlyIdempotentInspect
What can I ask Pipeworx? / what is Pipeworx good for? / what can you do? / give me ideas / show me examples / getting started / what data do you have? — the onboarding entry point for an agent that just connected and wants to know what is worth asking. Returns category-bucketed example questions (company financials, drugs & clinical trials, economics, real estate, prediction markets, weather, government & patents, science & academia, news) — each with the exact tool + argument shape that answers it, drawn from the live catalog of thousands of tools. Call with no arguments for the full spread, or pass topic (e.g. "finance", "pharma", "betting") to focus. Use this FIRST when you do not yet know what Pipeworx can do for you, or to learn how to call the meta-tools (ask_pipeworx, entity_profile, compare_entities, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Optional focus area: finance | pharma | economics | real-estate | betting | weather | government | science | news. Omit for a cross-category spread. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context: it returns 'category-bucketed example questions' with 'exact tool + argument shape', drawn from the live catalog, and that calling with no arguments gives a full spread. No contradictions.
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 somewhat long but front-loaded with example queries and uses bullet-like structure (categories in parentheses). Every sentence adds value, though it could be slightly more concise without losing 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?
Despite no output schema, the description fully explains what the tool returns: category-bucketed example questions with tool and argument shapes. It covers the onboarding use case and how to focus via topic, making it complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of the topic parameter. The description adds meaning beyond the schema by listing example topic values and explaining that omitting yields a cross-category spread, which is useful for an agent.
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 the tool returns category-bucketed example questions for what to ask Pipeworx, listing specific categories. It clearly identifies the verb-resource 'returns example questions' and distinguishes from sibling tools like ask_pipeworx by positioning it as an onboarding entry point.
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 says 'Use this FIRST when you do not yet know what Pipeworx can do for you, or to learn how to call the meta-tools.' It also explains when to omit the topic argument for a full spread or pass a specific topic to focus, providing clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unsubscribeUnsubscribe from AlertsAIdempotentInspect
Cancel a subscription by id. Ownership is enforced — you can only cancel your own subscriptions. The row is deactivated (not deleted) so its historical events stay available via recent_alerts.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Subscription id (uuid) returned by subscribe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the row is deactivated not deleted, and historical events remain available via recent_alerts. Annotations already indicate non-destructive and idempotent, so description adds valuable context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences front-loaded with core action, followed by key constraints and behavior. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with complete annotations and no output schema, the description fully covers purpose, usage condition, and behavioral side-effect. 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 coverage is 100% for the single parameter 'id'. Description adds no extra meaning beyond the schema's own description, meeting baseline for high 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?
Clearly states 'Cancel a subscription by id'. Verb and resource are specific. Distinguishes from sibling 'subscribe' and 'list_subscriptions'.
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 states ownership enforcement: 'you can only cancel your own subscriptions'. Provides clear usage condition but doesn't explicitly mention alternative tools for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_claimValidate ClaimARead-onlyIdempotentInspect
"Is it true that…" / "fact check" / "verify the claim that…" / "did X really…" / "was Y actually…" / "confirm or refute" / "true or false" — natural-language claim verification against authoritative sources. Use whenever the agent needs to check whether something a user said is factually correct. Company-financial claims (revenue, net income, cash for public US companies) verify via the structured SEC EDGAR + XBRL fast path with exact percent-delta math; ANY OTHER factual claim (macro statistics, rates, prices, drug data, records) automatically falls through to the grounded pipeline — routed to the right live source, answered with verbatim evidence, then judged. Returns a verdict (confirmed / approximately_correct / refuted / inconclusive / unsupported / could_not_verify), the grounded or structured actual value with pipeworx:// citation, and reasoning. IMPORTANT for callers: could_not_verify means the check did not happen (our LLM or source failed) and carries verification_error{stage,detail} — it is NOT evidence for or against the claim, and must not be shown as one. unsupported means we looked and cover no source for it. Replaces 4–6 sequential calls (NL parsing → entity resolution → data lookup → comparison).
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | Natural-language factual claim, e.g., "Apple's FY2024 revenue was $400 billion" or "Microsoft made about $100B in profit last year". | |
| tolerance_pct | No | Max percent deviation still graded approximately_correct (0.5–50). Overrides the tolerance implied by the claim wording — set 1–2 for hallucination detection where any material error must be refuted. Default: implied by wording, capped at 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the readOnlyHint and idempotentHint annotations by disclosing nuanced behavior: the distinction between 'could_not_verify' (verification did not happen, not evidence) and 'unsupported' (no source exists), the two routing paths, the return format with citations, and the tolerance math. This is critical behavioral context that the annotations do not provide, and it is consistent with 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?
The description is longer than average but well-structured: it leads with natural-language triggers, then explains the purpose, routing, output, and a clearly flagged 'IMPORTANT' caller note. Every sentence adds value, and the formatting (dashes, capitalization) improves scannability. It could be trimmed slightly, but it is not bloated.
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?
Since there is no output schema, the description fully specifies the return value: verdict types, actual value with citation, reasoning, and the meaning of two ambiguous verdicts. It also explains the two execution paths and covers the tool's scope. For a complex verification tool with nuanced outcomes, this is highly 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 coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond the schema; it mentions 'exact percent-delta math' and 'tolerance implied by the claim wording' which are already captured in the parameter descriptions. The schema itself fully documents both parameters, so no additional semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'natural-language claim verification against authoritative sources.' It names specific verbs ('verify', 'confirm or refute', 'true or false') and the resource (claims), plus distinguishes two distinct processing paths (SEC EDGAR for company-financial claims, grounded pipeline for all others). This is a specific, actionable purpose that stands apart from generic research tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use whenever the agent needs to check whether something a user said is factually correct,' providing a clear trigger. It also explains routing for different claim types and notes that it 'Replaces 4–6 sequential calls,' implying efficiency. However, it does not explicitly name alternative tools to use instead for different scenarios, so it lacks the when-not-to-use exclusions that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
- Changed
entity_profile3 fields changed- changed
Input schema / properties / type / descriptionPrevious value: -"Entity type. Only \"company\" supported today; person/place coming soon."New value: +"\"company\" or \"ticker\" — both are accepted and behave identically; `value` can be a ticker, CIK, or company name either way. person/place coming soon." - changed
Input schema / properties / type / enumPrevious value: -[ - "company" -]New value: +[ + "company", + "ticker" +] - changed
Input schema / properties / value / descriptionPrevious value: -"Ticker (e.g., \"AAPL\") or zero-padded CIK (e.g., \"0000320193\"). Names not supported — use resolve_entity first if you only have a name."New value: +"Ticker (e.g., \"AAPL\"), zero-padded CIK (e.g., \"0000320193\"), or company name (e.g., \"Moderna\") — names resolve via SEC EDGAR company-name match."
14 tool updates
- Changed
orange_book_exclusivity_expirations3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
orange_book_expiry_cliff_calendar3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
orange_book_generic_entry_timeline3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
orange_book_loss_of_exclusivity_profile3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
orange_book_patent_expirations3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
orange_book_product_search3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
orange_book_reference_drug_landscape3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
purple_book_biosimilar_entry_timeline3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
purple_book_biosimilars3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
purple_book_competition_profile3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
purple_book_interchangeables3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
purple_book_product_search3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
purple_book_recent_changes3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
- Changed
purple_book_reference_product3 fields changed- added
Output schema / properties / dataset_age_daysAdded value: +{ + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / dataset_noteAdded value: +{ + "type": "string" +} - added
Output schema / properties / dataset_staleAdded value: +{ + "type": "boolean" +}
1 tool update
- Changed
resolve_entity1 field changed- changed
Input schema / properties / value / descriptionPrevious value: -"For company: ticker (AAPL), CIK (0000320193), or name. For drug: brand or generic name (e.g., \"ozempic\", \"metformin\")."New value: +"For company: ticker (AAPL), CIK (0000320193), or name. For drug: brand or generic name (e.g., \"ozempic\", \"metformin\"). Pass the ENTITY NAME ONLY — for a bond that is the ISSUER exactly as printed (\"NEW YORK ST DORM AUTH\"), never the question's full noun phrase (\"NEW YORK ST DORM AUTH revenue bonds\"): the FIGI lookup matches instrument names, so trailing security-class words match nothing."
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity – fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge – works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge – works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
FDA medical-device regulatory intelligence from keyless openFDA datasets.
Search and export FDA drug labels by brand name, generic ingredient, or UNII code.
FDA drug approvals, 510(k) device clearances, recalls and adverse-event reports.
Clean FDA regulatory data: company resolution, facilities, recalls, inspections, approvals.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides comprehensive pharmaceutical intelligence by integrating real-time openFDA data with locally-cached Orange Book and Purple Book databases. It enables users to analyze drug safety, patents, generic equivalents, biosimilars, and regulatory information through natural language queries.3MIT
- AlicenseNot gradedqualityBmaintenancePharmaceutical R\&D Pipeline Intelligence for AI Agents — Clinical trials, FDA approvals, drug information & publications in one MCP server.5MIT
- FlicenseNot gradedqualityCmaintenanceProvides unified access to drug formulary data from US ACA marketplace health insurance plans, enabling drug search, coverage details, restriction info, and plan comparison across thousands of plans.-
- FlicenseNot gradedqualityDmaintenanceEnables querying FDA drug approvals, device clearances (510(k)), recalls, and adverse events via the openFDA API, providing tools for clinical and pharmaceutical research.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.