Skip to main content
Glama
Invoket
by Invoket

@invoket/mcp

One line to give your AI agent paid access to the Invoket APIs.

@invoket/mcp is a Model Context Protocol server that turns every paid Invoket endpoint into a typed MCP tool and pays for calls automatically over x402 — the agent never has to know the protocol. It runs on your machine over stdio, launched by your MCP host (Claude Desktop, Claude Code, Cursor, any MCP client). Invoket hosts nothing and never sees your key or your funds.

  • Discovery-driven — tools are generated from the gateway's discovery surfaces. Nothing is hard-coded; endpoints added or removed on the gateway appear or disappear on their own, and your host is notified of the change within the running session (tools/listChanged) — no package update, no restart.

  • Non-custodial, BYOK — your payer key lives only in this process's environment, is used solely to sign locally, and never appears in any output. Unlike hosted x402 bridges or servers built on exchange API keys, there is no account, no API key, and no third party that can move your funds.

  • Spend-capped — per-call and per-session ceilings, plus a check that the 402 challenge never exceeds the published price, refuse any overspend before signing.

  • Free to explore — with no key it starts in discovery-only mode; the first call of the day to a trial-enabled endpoint is free.


Quickstart

You need Node.js ≥ 20. No install step — your MCP host runs npx -y @invoket/mcp.

To make paid calls you also need a funded EVM wallet (USDC on Base — see Funding the payer wallet). To only browse the catalog and try free trial calls, you can skip the key entirely.

Use a dedicated, low-balance wallet. Your real exposure ceiling is that wallet's balance (on top of the spend caps below). Never point this at a primary wallet.

Every host below launches the same command; only the config file changes. Omit PAYER_PRIVATE_KEY anywhere to run in discovery-only mode.

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "invoket": {
      "command": "npx",
      "args": ["-y", "@invoket/mcp"],
      "env": {
        "PAYER_PRIVATE_KEY": "0xYOUR_DEDICATED_WALLET_KEY",
        "MAX_PRICE_USD": "10.00",
        "SESSION_BUDGET_USD": "10.00"
      }
    }
  }
}

Restart Claude Desktop.

Claude Code

claude mcp add invoket \
  --env PAYER_PRIVATE_KEY=0xYOUR_DEDICATED_WALLET_KEY \
  --env MAX_PRICE_USD=10.00 \
  --env SESSION_BUDGET_USD=10.00 \
  -- npx -y @invoket/mcp

Cursor

Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):

{
  "mcpServers": {
    "invoket": {
      "command": "npx",
      "args": ["-y", "@invoket/mcp"],
      "env": {
        "PAYER_PRIVATE_KEY": "0xYOUR_DEDICATED_WALLET_KEY",
        "MAX_PRICE_USD": "10.00",
        "SESSION_BUDGET_USD": "10.00"
      }
    }
  }
}

A project-level .cursor/mcp.json lives inside your repo — make sure it (or your key) is gitignored, or prefer the global file.

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json (same mcpServers shape as Cursor above), then reload the MCP servers from the Cascade panel.

VS Code (GitHub Copilot)

Create .vscode/mcp.json. VS Code can prompt for the key at startup instead of storing it in a file — recommended:

{
  "inputs": [
    {
      "id": "invoket-payer-key",
      "type": "promptString",
      "description": "Dedicated Invoket payer wallet private key (0x…)",
      "password": true
    }
  ],
  "servers": {
    "invoket": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@invoket/mcp"],
      "env": {
        "PAYER_PRIVATE_KEY": "${input:invoket-payer-key}",
        "MAX_PRICE_USD": "10.00",
        "SESSION_BUDGET_USD": "10.00"
      }
    }
  }
}

OpenAI Codex CLI

Add to ~/.codex/config.toml (note the snake_case mcp_servers):

[mcp_servers.invoket]
command = "npx"
args = ["-y", "@invoket/mcp"]
env = { PAYER_PRIVATE_KEY = "0xYOUR_DEDICATED_WALLET_KEY", MAX_PRICE_USD = "10.00", SESSION_BUDGET_USD = "10.00" }

Gemini CLI

Add to ~/.gemini/settings.json. $VAR values are resolved from your shell environment, so the key never has to be written into the file:

{
  "mcpServers": {
    "invoket": {
      "command": "npx",
      "args": ["-y", "@invoket/mcp"],
      "env": {
        "PAYER_PRIVATE_KEY": "$INVOKET_PAYER_KEY",
        "MAX_PRICE_USD": "10.00",
        "SESSION_BUDGET_USD": "10.00"
      }
    }
  }
}

Any other MCP host

Any host that speaks MCP over stdio can launch:

{
  "command": "npx",
  "args": ["-y", "@invoket/mcp"],
  "env": {
    "PAYER_PRIVATE_KEY": "0xYOUR_DEDICATED_WALLET_KEY",
    "MAX_PRICE_USD": "10.00",
    "SESSION_BUDGET_USD": "10.00"
  }
}

Related MCP server: GenTech Agent Kit

Funding the payer wallet

Paid calls settle in USDC on Base (chain id 8453). To set up:

  1. Create a fresh wallet used for nothing else and export its private key.

  2. Send it a few dollars of USDC on the Base network (from an exchange that supports Base withdrawals, or bridged from another chain).

  3. That's it — no ETH needed. Payments use signed EIP-3009 authorizations; the x402 facilitator submits the transaction and covers gas, your wallet only ever spends USDC.

Most endpoints cost $0.01 per call, and the price of every tool is stated in its description, so a couple of dollars goes a long way.


How a paid call works

When your agent invokes a paid tool, the server:

  1. Calls the endpoint; the gateway answers 402 Payment Required with a signed challenge.

  2. Checks the challenge against discovery: the amount must not exceed the published price, and must pass MAX_PRICE_USD and the remaining SESSION_BUDGET_USD. Any violation is refused before signing.

  3. Signs the payment authorization locally (EIP-712 / EIP-3009) with your key and retries the call with the payment attached.

  4. Reports the result to the agent with an explicit payment outcome.

The gateway only settles on success (its own rule: a 2xx means the call actually delivered), so you are not charged for upstream failures.


What your agent sees

  • One typed tool per paid endpoint, generated from discovery: the name is derived from the path, the input schema from the endpoint's published schema, and the price is stated in the description.

  • Free platform tools, always available (never charge):

    • search_endpoints — full-text search over the discovered catalog; go from an intent to the right paid tool.

    • wallet_status — payment mode, payer public address, configured caps and session spend (never the private key, never an on-chain balance).

    • submit_review — send feedback (a gap, a bug, a pricing concern) to Invoket.

    • platform_info — gateway origin, number of discovered endpoints, snapshot freshness, the last discovery error (use it to diagnose an empty tool list), and any published entry that could not be turned into a tool, with the reason (skippedCount / skipped[]).

Every tool result starts with an explicit payment outcome, so you always know whether a call cost anything:

  • Paid — paid: true with the amount, network, and the settlement transaction hash, e.g. Paid $0.01 in USDC on eip155:8453 (tx 0x…).

  • Trial — paid: false, trial: true: the gateway verified the payment authorization but did not settle it; the call was free.

  • Not charged — paid: false for free calls and no-charge results.

Try it

Once connected, ask your agent things like:

"Use search_endpoints to find a tool that validates an IBAN, then check FR7630006000011234567890189."

"Call wallet_status — how much has this session spent and what are my caps?"

"What's the weather forecast for Paris this weekend?" (the agent finds and calls the matching paid tool on its own)


Environment variables

Variable

Default

Meaning

PAYER_PRIVATE_KEY

(none → discovery-only)

EVM private key of your dedicated, low-balance payer wallet. Used only to sign locally (EIP-712 / EIP-3009). Never transmitted, logged, or echoed. Without it, paid calls are disabled.

MAX_PRICE_USD

10.00

Max price accepted for a single call, in USD. Any 402 challenge above it is refused before signing. The default clears the priciest call in the published catalog — $2.505, a 500-item batch; set it lower explicitly if you want a tighter bound.

SESSION_BUDGET_USD

10.00

Total USD budget for the whole session (in-memory, per process). Same figure as the per-call cap: at worst one maximal call, or many small ones.

PREFER_TRIAL

true

Select the free trial requirement when the gateway offers it (first call/day free). Set false to always settle on the paid rail.

INVOKET_BASE_URL

https://api.invoket.com

The single origin every tool calls. HTTPS required except on localhost. No arbitrary URL is ever fetched.

HTTP_TIMEOUT_MS

30000

HTTP request timeout to the gateway, in milliseconds.

DISCOVERY_TTL_SECS

300

How long a discovery snapshot is reused before a lazy refresh. The tool list follows the gateway catalog with no package update: an endpoint added (or repriced, or retired) shows up at most DISCOVERY_TTL_SECS after the next tool call, and your host is notified (tools/listChanged) so it re-lists on the spot. Refreshes are lazy — an idle session makes no background traffic.

LOG_LEVEL

info

Log verbosity on stderr only: debug, info, warn, error.

See .env.example for the annotated list.


Troubleshooting

The tool list is empty. Call platform_info: it reports the gateway origin, the number of discovered endpoints, and the last discovery error. Typical causes: no network, a proxy blocking api.invoket.com, or a custom INVOKET_BASE_URL that doesn't expose the discovery surfaces.

A newly published endpoint isn't in my tool list. No package update is needed: the tools are generated from the gateway's discovery surfaces. The snapshot is refreshed lazily, so make one tool call (platform_info is free) once DISCOVERY_TTL_SECS has elapsed — the server then notifies your host that the list changed and the new tool appears. Hosts that ignore tools/listChanged pick it up on their next restart.

If it still isn't there, call platform_info and read skipped[]: an endpoint the gateway publishes without an input schema, a price, or a description can't be turned into a usable tool, so it is skipped — the entry names it and gives the reason (no_input_schema, no_price, …). Nothing is guessed on your behalf; report it with submit_review and it gets fixed gateway-side.

Every paid call is refused. Check wallet_status. If it reports discovery-only mode, PAYER_PRIVATE_KEY isn't reaching the process (some hosts require a full restart after editing config). If a cap is the reason, the error says which one — raise MAX_PRICE_USD / SESSION_BUDGET_USD deliberately, or start a new session to reset the in-memory session spend.

TRIAL_EXHAUSTED on a call I expected to be free. The free trial is one call per endpoint per day. Fund the wallet to keep going, or come back tomorrow. With a funded wallet the same call settles normally.

SETTLEMENT_FAILED on a paid call. The payment authorization was valid but on-chain settlement failed — most often an insufficient USDC balance on the payer wallet. You were not charged.

Timeouts on heavy endpoints. A few endpoints (large batches, cold caches) can take longer than most; the server-side default of HTTP_TIMEOUT_MS=30000 accommodates them. If you lowered it, raise it back.

Server won't start under npx. Check node --version ≥ 20, and look at stderr in your host's MCP logs — all diagnostics go there (never stdout, which carries the protocol).


FAQ

Where does my private key go? Nowhere. It is read from this process's environment, turned into a viem account in memory, and used only to produce EIP-712 signatures locally. It is never written to disk, never sent over the network, and a global scrubber redacts it from every log and error. The facilitator submits the signed transaction — the key itself never leaves your machine. See SECURITY.md.

What's the most it can spend? Bounded three ways, all enforced before signing: MAX_PRICE_USD per call, SESSION_BUDGET_USD per session, and a check that the 402 challenge amount never exceeds the price published by discovery. On top of that, your hard ceiling is the balance of the dedicated wallet you provide.

How do I test without paying? Run with no PAYER_PRIVATE_KEY to browse the catalog and read schemas in discovery-only mode. With a key, the first call each day to a trial-enabled endpoint is free (PREFER_TRIAL defaults to true) and reports paid: false.

Which chains / assets? USDC on Base in v1. The payment rail is selected from the gateway's 402 challenge; unsupported requirements are refused with a clear message.

How is this different from other x402 MCP servers? Two design choices: it is strictly non-custodial (a bare EVM key in your local environment — no hosted service, no exchange API keys, nothing that can custody or move funds beyond the signatures you cap), and it is fully discovery-driven (tools, schemas, and prices come from the gateway's published surfaces at runtime, so the server never lies about a price and never ships a stale, hard-coded tool list).


Security

This is a payer package: trust is the product. Read SECURITY.md for the full threat model, then audit the source — it's small and dependency-light on purpose. Publishing is done with npm provenance, linking each release tarball to its source commit on Invoket/mcp.

License

MIT © Invoket

Available Tools

70 tools
climate_aggregateGet climate summaries for a locationA

Before your agent writes a seasonal report, audits an ESG claim or reconciles a weather-linked contract: period climate summaries for any GPS point or city over a date range — mean, min and max temperature, total precipitation and mean wind — from the Copernicus ERA5 reanalysis (temperature and precipitation: rolling 30-year window; wind: rolling ~5-year window), with the served grid cell and a coverage flag. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/climate-aggregate

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
fromYes
countryYesOptional ISO 3166 alpha-2 country code narrowing the place-name lookup (e.g. country=CH keeps only Swiss matches); only meaningful together with location=/city=
locationYesCity or place name, resolved against the embedded GeoNames cities500 gazetteer: exact name match (case- and accent-insensitive, no fuzzy matching), ties broken by population (most populous wins). Alias: city. Alternative: pass lat + lon directly instead. The resolved place is echoed back as data.location.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral detail: the rolling window semantics differ by metric type (30-year vs ~5-year), the response includes a served grid cell and coverage flag (useful confidence signal), and the place-name resolution rules (GeoNames cities500, exact match only, no fuzzy matching, ties broken by population) are disclosed. The location input's resolution behavior is transparent. With no annotations present, the description carries the behavioral burden well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the purpose and trigger scenarios. The pricing, trial, and docs URL are useful operational details. It's a single dense paragraph rather than scannable bullets, which slightly hurts readability, and the location details could arguably belong in the schema rather than the description. Still, every sentence earns its place with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 4 required params, no output schema, and no annotations, so the description must carry the burden. It explains location semantics (place name vs lat/lon, aliases, resolution rules), window behavior, output elements (grid cell, coverage flag, data.location echo), pricing, and docs link. It stops short of detailing the exact output structure or units for each metric, but the description is reasonably complete for an aggregation tool targeting selective decision use-cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only `country` and `location` have descriptions). The description compensates substantially: it documents the date-range semantics (rolling aggregation windows), explains that location can be a place name OR lat/lon, and clarifies the alias `city` for location. The `from`/`to` parameters remain underexplained in the description but the window semantics partially cover them. Given the coverage gap, the description adds real value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'climate summaries for any GPS point or city over a date range', followed by concrete metrics (mean/min/max temp, total precipitation, mean wind) and data source (Copernicus ERA5). It clearly distinguishes this aggregate tool from siblings like climate_point, climate_degree_days, and climate_indices by specifying it returns aggregated period stats with a served grid cell and coverage flag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists concrete trigger scenarios ('before a seasonal report, audits an ESG claim or reconciles a weather-linked contract') signaling appropriate contexts. It also specifies the rolling window behavior (30-year for temp/precip, ~5-year for wind), which helps an agent know what the aggregate actually represents. It doesn't explicitly enumerate sibling alternatives or say when NOT to use it, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

climate_anomalyGet climate anomalies for a locationA

Before your agent verifies a 'hotter than normal' claim, reports climate exposure or settles an anomaly-based trigger: how far observed temperature, precipitation and wind departed from the WMO 1991-2020 climatological normal, for any GPS point or city over a date range within the ingested Copernicus ERA5 window (rolling 30 years for temperature and precipitation, rolling ~5 years for wind). Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/climate-anomaly

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
latYesLatitude in decimal degrees. Alternative: pass city=<name> (alias location=, optional country= ISO 3166 alpha-2) instead of lat+lon — resolved via the embedded GeoNames gazetteer (exact match, most populous wins) and echoed back as data.location
lonYes
fromYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses practical behavioral details like the price per call, first-call-free trial, 'rolling 30 years for temperature/precipitation and ~5 years for wind' data window, and links to docs. However, it doesn't disclose what the response/return format looks like (units, anomaly direction conventions, error cases like unmapped city) — moderate value but gaps remain on output behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is one dense, front-loaded sentence covering data dimensions and normal window, followed by practical pricing/doc info. Pricing and doc link are arguably outside the tool's semantic description but useful. Slightly dense but well organized; no wasted filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multi-variable anomalies, rolling windows, city-or-coordinate addressing) and low schema coverage with no output schema, the description explains the anomaly semantics, normal baselines, and addressing alternatives well. It could detail the return format and error/edge behavior, but the core usage is adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% — only 'lat' has a description. The description compensates substantially: it explains lat/lon can be replaced by city=<name> with aliases location=, country= ISO 3166 alpha-2, resolved via GeoNames with 'exact match, most populous wins' and echoed back as data.location. From/to necessity and the date range is implied. This adds meaningful semantics beyond the sparse schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes how observed temperature, precipitation, and wind departed from the WMO 1991-2020 climatological normal for any GPS point or city over a date range. It has a specific verb (get/compute anomalies), resource (climate anomalies), and distinguishes scope. Sibling tools like climate_point (single point data), climate_aggregate, and climate_indices are differentiated by phrasing focused on anomaly-normal comparison, though it doesn't explicitly name siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states 'before your agent verifies a hotter than normal claim, reports climate exposure or settles an anomaly-based trigger' which gives clear when-to-use context. It does not explicitly name alternative tools for when NOT to use it, but the meteorological anomaly verification intent is clear and specific enough to guide selection among the climate_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

climate_degree_daysGet degree-days for a locationB

Before your agent sizes heating or cooling demand, settles an energy contract or models crop growth: heating, cooling and growing degree-days (HDD/CDD/GDD) for any GPS point or city over a date range, computed from Copernicus ERA5 daily mean temperature (rolling 30-year window) with the NWS/EIA/WMO mean-temperature method. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/climate-degree-days

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
latYesLatitude in decimal degrees. Alternative: pass city=<name> (alias location=, optional country= ISO 3166 alpha-2) instead of lat+lon — resolved via the embedded GeoNames gazetteer (exact match, most populous wins) and echoed back as data.location
lonYes
baseYes
fromYes
kindYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. It discloses the computation methodology (ERA5 daily mean temp, 30-year rolling window, NWS/EIA/WMO method) and pricing, but does not describe what the response contains, whether it's a read-only operation, rate limits beyond first-call-free, or error behavior. The pricing disclosure is helpful but the safety/behavioral profile of a query tool is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise with one purpose sentence followed by pricing and docs info. The opening line is front-loaded with the purpose and use cases. Pricing and docs are appropriately placed at the end. Slight bloat in listing all three degree-day types in prose, but this is informative rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 params, 17% schema coverage, no output schema, and no annotations, this description has significant gaps. It doesn't explain parameter semantics for kind/base/from/to, doesn't describe return format, and doesn't cover pagination, limits, or error cases. The computation methodology disclosure is a strength, but for a 6-param API point tool with no structured docs, the description should provide substantially more guidance to an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 17%, so the description must compensate significantly. The description adds the era5 rolling-window method context and pricing but does not explain the key parameters: what 'kind' values are acceptable (HDD/CDD/GDD are mentioned in prose but not mapped to the kind param), what format 'from'/'to' should take, or what 'base' means. The lat description in schema handles latitude/city aliasing well, but the other five params remain undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb+resource: 'Get degree-days for a location', and elaborates that HDD/CDD/GDD are computed from ERA5 data for any GPS point or city over a date range. It distinguishes from siblings like climate_indices, climate_anomaly, and weather_forecast by specifying degree-day computations specifically. It doesn't explicitly name alternatives, but the specific metric (degree-days) is clearly different from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use it ('Before your agent sizes heating or cooling demand, settles an energy contract or models crop growth: heating, cooling and growing degree-days'). This frames the use case well. It doesn't explicitly state when NOT to use it or name alternative tools, but the open-hand context of use is well established.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

climate_indicesGet climate-event indices for a locationA

Before your agent prices or settles a parametric-insurance trigger, or screens weather risk for agriculture and construction: climate-event indices for any GPS point or city over a date range — frost and summer days, tropical nights, dry spells, heavy-rain days, max one-day rainfall, total precipitation and peak gust — ETCCDI/Climdex definitions on true daily Tmin/Tmax from the Copernicus ERA5 reanalysis (precipitation-based indices: rolling 30-year window; Tmin/Tmax- and gust-based indices: rolling ~5-year window). Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/climate-indices

ParametersJSON Schema
NameRequiredDescriptionDefault
toYes
latYesLatitude in decimal degrees. Alternative: pass city=<name> (alias location=, optional country= ISO 3166 alpha-2) instead of lat+lon — resolved via the embedded GeoNames gazetteer (exact match, most populous wins) and echoed back as data.location
lonYes
fromYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses meaningful behavioral details: 30-year rolling window for precipitation indices vs ~5-year window for Tmin/Tmax and gust indices, true daily Tmin/Tmax from Copernicus ERA5, pricing per call, and the free daily trial. It doesn't describe output format or pagination, but given the richness of the disclosed behavior, this is strong. It does not contradict any annotations (none exist).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the use-case guidance and index list efficiently, then packs pricing, trial, and docs links into a compact footer. However, the primary description sentence is long and dense, with nested parentheticals listing many indices, and the rolling-window clarification is intricate. While there's no waste, the density slightly hurts scannability. The lat parameter description is verbose but necessary given the schema gap. Overall compact but heavy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter read tool with no output schema and no annotations, the description is quite complete: it defines the resource, data source, standard (ETCCDI/Climdex), custom windows, pricing for cost-aware agents, and docs links. It omits output format/return structure, but with an output-like list of computed indices given, an agent can infer the result content. A small gap is lacking explicit date-format expectations for from/to. Strong overall for its complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (only 'lat' has a description), so the description must compensate heavily. The lat description's own content is excellent, explaining the alternative city=name alias, location=, optional country= ISO code, GeoNames resolution behavior (exact match, most populous wins), and the data.location echo. The main description's scope statement (GPS point or city over a date range) gives context for lat/lon/from/to. Minor gap: 'from' and 'to' date formats aren't specified beyond 'date range.' Given the low schema coverage and the strong compensation in both blobs, a 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes climate-event indices (explicitly naming frost days, summer days, tropical nights, dry spells, etc.) for any GPS point or city over a date range, grounded in ETCCDI/Climdex definitions from ERA5. It uses a specific verb ('gets') with a clear resource (climate-event indices) and strongly differentiates from siblings like climate_aggregate, climate_anomaly, climate_point, and climate_return_period.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description opens by spelling out exact use contexts: pricing/settling parametric-insurance triggers, or screening weather risk for agriculture and construction. It names the data source and standard definitions, and distinguishes from sibling climate tools by the specific index types returned. Pricing and documentation links provide operational context for when the agent should (or can) call this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

climate_pointGet historical weather for a locationA

Before your agent verifies a weather-dependent claim, backtests a parametric trigger or checks what conditions a site or shipment faced: daily 2 m temperature, total precipitation and 10 m wind at any GPS point or city for a past date, from the Copernicus ERA5 reanalysis — temperature and precipitation cover a rolling 30-year window, wind a rolling ~5-year window — with the served grid cell and a coverage flag. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/climate-point

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity or place name, resolved against the embedded GeoNames cities500 gazetteer: exact name match (case- and accent-insensitive, no fuzzy matching), ties broken by population (most populous wins). Alias: location. Narrow with country=<ISO 3166 alpha-2>. Alternative: pass lat + lon directly instead. The resolved place is echoed back as data.location.
dateYesCalendar day (YYYY-MM-DD) within the ingested ERA5 window: rolling 30 years for temperature and precipitation, rolling ~5 years for wind (a deep date returns the covered families and flags the rest via coverage); a date outside the widest window returns 400 with the covered range

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It transparently discloses data coverage windows (30 years for temp/precip, ~5 years for wind), the served grid cell and coverage flag outputs, pricing, the daily free trial, and exact-vs-out-of-range error behaviors. Only minor gap: it doesn't detail request volume/rate limits, but it discloses the most operationally relevant traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the use case in the first clauses and is well-structured. It's a bit dense with supporting facts (pricing, docs URL, grid cell, coverage flag), but every sentence carries value and the density reflects genuine behavioral richness rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 2-parameter tool with full schema coverage, this description is thorough: it covers the data source, coverage windows, output signals (grid cell, coverage flag), error behaviors, pricing, and even cross-references alternatives (lat+lon). No output schema exists, so the description's disclosure of returned data (covered families, coverage flag, resolved location) provides necessary completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema coverage is 100%, the description adds substantial meaning beyond the schema: it clarifies city resolution uses an embedded GeoNames cities500 gazetteer with exact (non-fuzzy) matching and population tie-breaking, mentions the location alias and country narrowing option, describes resolved-place echoing, and details date window/out-of-range error handling. This significantly enriches bare schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Get historical weather for a location') and lists exact data (daily 2 m temperature, total precipitation, 10 m wind) and the source (Copernicus ERA5 reanalysis). It clearly distinguished from sibling tools like climate_point_batch (batch variant), weather_forecast (future), and climate_aggregate/anomaly which do different processing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening sentence explicitly states three usage contexts: verifying weather-dependent claims, backtesting parametric triggers, and checking site/shipment conditions. It also distinguishes the past-focused scope with a coverage window, and siblings like weather_forecast/weather_forecast_daily imply a future-oriented alternative, which the 'historical' framing implicitly excludes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

climate_point_batchGet historical weather for many locationsA

Before your agent backtests parametric triggers over a site portfolio, verifies claims across parcels or scores weather exposure for an asset fleet: daily 2 m temperature, total precipitation and 10 m wind for up to 500 point/date queries in one call, from the Copernicus ERA5 reanalysis (temperature and precipitation: rolling 30-year window; wind: rolling ~5-year window). Each query takes lat+lon or a city name; an uncovered item is flagged via per-item coverage instead of failing the batch. Price: $0.005 base + $0.005 × N items, max 500 (field "queries") Docs: https://invoket.com/docs/api/climate-point-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesArray of point/date queries resolved in one call. Its length is priced per unit (base + N x unit), capped at 500; a batch over 500 is rejected with 400. Each item takes a point (lat + lon, or a city name) and a date (YYYY-MM-DD) within the ingested ERA5 window (rolling 30 years for temperature and precipitation, rolling ~5 years for wind).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does well: discloses pricing formula ($0.005 base + $0.005×N), the 500 cap, per-item coverage flagging behavior, the rolling 30-year vs ~5-year window distinction by variable, city-name resolution rules (exact match, case/accent-insensitive, no fuzzy, population tie-break), and unknown-city degradation. It also notes a 400 for unknown variable families and over-500 batches. Rich behavioral disclosure given zero annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact lead sentence with a clear skip-if not applicable preamble, followed by dense but organized technical details including pricing and documentation link. It front-loads the core purpose before diving into mechanics. Slightly dense with mixed concerns (pricing, coverage, windows, city rules) packed together, but each sentence earns its place and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 1 parameter, 100% schema coverage, and no output schema, the description plus schema together are quite complete: date format (YYYY-MM-DD), point forms (lat+lon or city), variable families, coverage semantics, pricing, caps, and error handling are all covered. The absence of an output schema means the description doesn't detail the return-value shape beyond location echo and coverage.complete, which is a minor gap but acceptable given the schema's own descriptive richness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% because there's only one parameter (queries), and the schema provides detailed descriptions. The description adds meaningful value beyond the schema: pricing per unit, the 500-item cap, the rolling window semantics (30 years temp/precip, ~5 years wind), and the E5 dataset source. The variables field's 'coverage/price unaffected' semantics and the city resolution fallback are well documented in the schema and reinforced contextually.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides daily 2m temperature, total precipitation and 10m wind from Copernicus ERA5 for up to 500 point/date queries in one call. The verb+resource is specific and it distinguishes from siblings like climate_point (single-point variant) and climate_aggregate (aggregation). The use-case preamble (backtesting parametric triggers, verifying claims across parcels, scoring weather exposure) further grounds the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly frames when to use it: portfolio/parcel/fleet-scale batching scenarios, contrasting implicit with the single-point sibling. It states batch size cap, pricing structure, and error behavior (uncovered items degrade per-item rather than failing). It doesn't explicitly name which sibling tool to use instead for single-point queries, but the batch-vs-single distinction is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

climate_return_periodRank a season in a location's climate historyA

Before your agent underwrites, reinsures or stress-tests a climate exposure: rank a target year's season against 30 years of a location's climate history (Copernicus ERA5 reanalysis, WMO-standard climatological period) — percentile, empirical return period and sample size, for any GPS point or city. Temperature and precipitation cover a rolling 30-year window; every verdict reports its actual sample size via sample_years and coverage. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/climate-return-period

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude in decimal degrees. Alternative: pass city=<name> (alias location=, optional country= ISO 3166 alpha-2) instead of lat+lon — resolved via the embedded GeoNames gazetteer (exact match, most populous wins) and echoed back as data.location
lonYes
yearYes
monthYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It does disclose useful facts: rolling 30-year window, temperature and precipitation coverage, sample_years and coverage reporting, per-call pricing. However, it doesn't disclose whether this is a read-only operation, pagination, or output format structure. For a query tool with no annotations, a modest 3 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured across two tight paragraphs plus pricing/docs lines. The first sentence front-loads purpose and use-case. Some details (price, trial, docs URL) could arguably live elsewhere, but they're compact and useful. A couple of parentheticals are dense but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param query tool with no annotations and no output schema, the description covers the data scope (30-year window, temperature/precipitation, sample size reporting) and one parameter's alternative semantics well. But it leaves return-format specifics, error/edge cases (e.g., year outside the 30-year window), and behavioral details unexplored. Adequate but with clear gaps for a moderately complex financial-risk tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25%, so the description must compensate substantially. It explains lat/lon vs the city/location/country alternative in detail (GeoNames gazetteer resolution, most populous wins), which is strong. However, it adds nothing about month, year, or lon beyond what the schema provides. The description covers about half of the parameters meaningfully, partially offsetting but not fully filling the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb+resource+scope: it ranks a target year's season against 30 years of a location's climate history, computing percentile, empirical return period and sample size. It explicitly names the data source (Copernicus ERA5) and the target use-case (underwriting, reinsurance, stress-testing). It distinguishes from siblings like climate_aggregate and climate_anomaly by focusing on return periods/percentiles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use it (before underwriting, reinsuring, or stress-testing climate exposure) and specifies the 30-year rolling window and WMO-standard period. It does not explicitly name alternatives or when-not-to-use, but the strong use-case framing plus the sibling list (climate_anomaly, climate_aggregate) provides enough differentiation. It also documents the pricing and trial details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_eventsCheck French company legal eventsA

Check a French company for official insolvency, deregistration and business-sale announcements before you invoice or extend credit: dated event timeline and factual flags from the official BODACC gazette, by SIREN. An empty list is a paid answer: no known announcement over the covered window. No account, no key. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/company-events

ParametersJSON Schema
NameRequiredDescriptionDefault
sirenYes9-digit SIREN of the legal unit (required). Malformed input is a 400 (INVALID_INPUT), a failed Luhn checksum is a 400 (INVALID_CHECKSUM, likely a typo). BODACC knows announcements, not companies: a SIREN known to the Sirene register with no announcement is a successful empty timeline (200, billed), never a 404. A well-formed SIREN absent from the Sirene register is a 404 (unbilled, same answer as /company/resolve) - 'unknown to the register' and 'known, no announcement' are different answers
familyYesOptional filter on the served view: 'insolvency' (collective proceedings: safeguard, receivership, liquidation), 'deregistration' or 'sale' (business sales and transfers). Default serves all families. The filter narrows events[], never the flags - facts are derived from the complete timeline

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses pricing ($0.01/call, first free), billing semantics (empty timeline is billed, 404 is unbilled), error behavior (malformed input=400, Luhn failure=400, unknown-to-register=404), and distinguishes 'unknown to register' from 'known, no announcement.' It could add return-format details (structure of the timeline/flags objects) but the core behavioral traits are well disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose and use case, then pricing, then docs link. It's efficient and each sentence carries meaning. However, it packs multiple concerns (pricing, billing semantics, error codes) into somewhat dense prose that isn't strictly about usage — slightly longer than ideal but each clause earns its place. A single trimmed sentence could tighten it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param tool with no output schema, the description covers what it checks, when to use it, how billing works, error semantics, and the family filter's behavior. The main gap is the return payload structure (what an 'event timeline' and 'factual flags' object looks like), but the description is rich enough for an agent to select and invoke correctly with confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While schema coverage is 100%, the description adds significant meaning beyond it: it explains the SIREN validation chain (malformed=400, Luhn=400, unknown register=404 vs empty=200 billed), which is crucial for correct invocations. For family, it enumerates the exact values ('insolvency', 'deregistration', 'sale') with definitions and clarifies the subtle behavior that family filters events[] but never the flags. This materially enhances the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource+outcome: 'Check a French company for official insolvency, deregistration and business-sale announcements...dated event timeline and factual flags from the official BODACC gazette, by SIREN.' It clearly distinguishes the tool by its data source (BODACC), use case (before invoicing/crediting), and output type (timeline + flags). The sibling tools like company_report, company_vat, company_ownership are all distinct in purpose, so there's no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use: 'before you invoice or extend credit.' It also clarifies when the empty result is meaningful ('An empty list is a paid answer: no known announcement over the covered window'), and contrasts a 404 vs empty-list outcome to avoid misinterpretation. It explains the 'No account, no key' access model and pricing context. This is strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_leiIdentify a company worldwide (LEI)A

Identify the company behind a bank identifier, a French SIREN, an ISIN or an exact name before you onboard, pay or invoice it: official GLEIF LEI identity - legal name, jurisdiction, entity and registration status, addresses, national registration number, mapped BICs and ISINs. Lookup by LEI, BIC (8 or 11), ISIN, SIREN, or exact legal name plus country. Homonyms are returned as candidates, never silently resolved. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/company-lei

ParametersJSON Schema
NameRequiredDescriptionDefault
leiYes20-character LEI (ISO 17442, check digits verified). Provide EXACTLY ONE key: 'lei', 'bic' (8 or 11 characters - both forms are looked up, so the BIC-8 of an IBAN resolves), 'isin' (12 characters, Luhn), 'siren' (9 digits, French bridge) or 'name' plus 'country' (ISO 3166-1 alpha-2, exact normalized equality - no fuzzy search). Zero or two keys is a 400; a failed check digit is a 400 INVALID_CHECKSUM; a well-formed key absent from the reference is a 404, unbilled

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries full responsibility. It discloses key behaviors: homonyms are returned as candidates and never silently resolved, check digits are verified, invalid keys return 400 codes, and well-formed but absent entries return 404 unbilled. It also names the returned identity fields (legal name, jurisdiction, status, addresses, national registration number, BICs, ISINs). This is thorough behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary purpose, followed by concise lookup modes, homonym policy, and pricing. Every sentence carries information, and the pricing/docs lines are compact and useful. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having only one parameter and no output schema, the description is complete: it enumerates all valid inputs, explains the exact-match behavior, describes the output contents, and notes billing and error semantics. The agent can confidently invoke this tool without additional external context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema description already provides 100% coverage with detailed semantics for the 'lei' parameter (accepted key types, formats, and error conditions). The main description redundantly lists the lookup options but adds the homonym candidate behavior and 'no fuzzy search' constraint, which are not in the schema. This adds meaning beyond the structured schema, earning a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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: 'Identify the company behind a bank identifier, a French SIREN, an ISIN or an exact name' and states the scope 'worldwide (LEI)'. It clearly distinguishes this tool from siblings like company_vat or company_resolve by naming the specific identifier types and the official GLEIF LEI identity output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides strong context: 'before you onboard, pay or invoice it' and explicitly states that name lookup is exact and normalized, with no fuzzy search. It does not name alternative sibling tools or state when not to use this tool, but the use case is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_ownershipFind who controls a companyA

Find out who controls a counterparty before you onboard, pay or invoice it: the declared control chain from the official GLEIF Level 2 reference, by LEI - direct parent, ultimate parent, the dated chain between them, and direct subsidiaries. A declared absence of parent comes back with its official reason, never as an empty block. This is the accounting consolidation parent, not beneficial ownership. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/company-ownership

ParametersJSON Schema
NameRequiredDescriptionDefault
leiYes20-character LEI (ISO 17442, check digits verified) of the entity to look up - required. Get it from /company/lei if you only hold a SIREN, a BIC or a name. A well-formed LEI absent from the reference is a 404, unbilled, with the same message as /company/lei
depthYesChain depth, 1 to 5 (default 3). A HARD bound: out of range is a 400, never a silent trim - an agent that asks for 7 must know it was not served 7. When the walk stops on the bound, 'chain_truncated' says so, and the declared ultimate parent is still served
directionYes'up' (default) walks the parents, 'down' returns 'direct_children' - the entities declaring this LEI as their direct parent, capped at 100 with 'total_children' exact - and 'both' does both. Only DIRECT subsidiaries are served, there is no multi-level org chart. A block you did not ask for is null, which is distinct from [] meaning 'asked, nothing declared'

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Rich behavioral disclosure beyond what annotations (none provided) offer: a declared absence of parent returns with an official reason, never an empty block; 'chain_truncated' flag signals hard depth bound; 'null' vs '[]' distinction for unasked vs asked-but-empty blocks; out-of-range produces 400 never silent trim; well-formed LEI absent from reference is a 404 unbilled. With no annotations, the description fully carries the behavioral transparency burden and does so excellently.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by return details, disambiguation, then pricing. While dense and information-rich with no waste, it packs a lot into long, somewhat run-on sentences that require careful reading. The commercial/pricing detail is useful but partially extraneous to tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately complex lookup tool with 3 parameters, no output schema, and no annotations, the description is remarkably complete: it explains return semantics, error behaviors (404 unbilled, 400 on range, chain_truncated), the null/[] distinction, the 100-cap on down-walks, the distinction from beneficial ownership, and points to docs. Nothing critical is missing for correct invocation and interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial meaning beyond the schema: depth explains it's a HARD bound with 400 behavior and 'chain_truncated' semantics; direction clarifies the down-walk returns only DIRECT subsidiaries capped at 100, and disambiguates null vs [] semantics. The lei param is cross-referenced to the companion /company/lei tool. This is textbook parameter enrichment.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource: 'Find out who controls a counterparty' using the GLEIF Level 2 reference by LEI. It distinguishes its scope (declared control chain vs beneficial ownership) and enumerates exactly what it returns (direct parent, ultimate parent, dated chain, direct subsidiaries), clearly separating it from sibling tools like company_events, company_report, and company_vat.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance: 'before you onboard, pay or invoice it.' It names the data source (GLEIF Level 2), clarifies this is accounting consolidation parent not beneficial ownership (avoiding misuse), and references companion tool /company/lei for deriving an LEI from other identifiers. The billing note and docs link add practical usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_peppolCheck Peppol e-invoicing reachabilityA

Check whether a company can receive e-invoices on the Peppol network before you send one: participant identifiers and accepted document types from the official Peppol Directory export, by SIREN, SIRET or explicit Peppol participant ID. 'Not registered' is a paid, dated answer. No account, no key. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/company-peppol

ParametersJSON Schema
NameRequiredDescriptionDefault
sirenYes9-digit SIREN of the French legal unit. Provide exactly one of 'siren', 'siret' (14 digits, matched on its SIREN prefix) or 'participant' ('<icd>:<value>', explicit Peppol participant ID, any country - e.g. '0009:33328563300033'). Malformed input is a 400 (INVALID_INPUT), a failed Luhn checksum is a 400 (INVALID_CHECKSUM, likely a typo). An identifier absent from the directory is NOT a 404: it is a successful 'reachable: false' answer (200, billed). The only 404 on this route is a well-formed 'siret' or 'siren' that does not exist in the Sirene register (a mistyped number, or an ERP filler value such as 000000000) - not billed, same answer as /company/resolve; 'participant' has no existence check (any country)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does an excellent job. It discloses billing behavior ($0.01, first call free), the nuanced status semantics (absent from directory is a successful 200, not a 404; only non-existent Sirene identifiers are 404 and not billed), error codes (400 INVALID_INPUT, INVALID_CHECKSUM), and Luhn checksum validation. This is exceptional depth for a description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized. The first sentence front-loads the core purpose, followed by pricing and docs link. The parameter detail lives in the schema where it belongs. It's lengthy but every clause carries meaning; the behavioral details earn their place given the complexity of the paid/404 nuances.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with a 100% schema-covered parameter and no output schema, the description fully covers what's needed: the check itself, the billing model, error cases, and identifier variants. There's no output schema, but the description mentions what's returned (participant identifiers, accepted document types, reachable flag) adequately. Very complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage with a single detailed parameter description. The description reinforces format requirements (9-digit SIREN, 14-digit SIRET, ICD:value participant format) and error semantics. It primarily defers to the schema for parameter detail, which is appropriate given full coverage, but the description itself doesn't add much beyond the schema's rich parameter text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: check whether a company can receive e-invoices on the Peppol network, specifying the data source (official Peppol Directory export) and the output (participant identifiers and accepted document types). The title 'Check Peppol e-invoicing reachability' reinforces the purpose precisely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use before sending an e-invoice, and specifies the identifier types accepted (SIREN, SIRET, participant ID). It explains the 'Not registered' paid answer versus free/404 scenarios. However, it doesn't explicitly contrast with sibling tools like invoice_validate or preflight_supplier, though the paid-vs-not-paid distinction provides useful guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_reportGet a full company due-diligence reportA

Full counterparty due-diligence on a French company in one paid call, by SIREN: Sirene identity and status, dated BODACC insolvency/deregistration/sale announcements, live EU VAT validation (VIES) and Peppol e-invoicing reachability - each block with its own provenance. The pre-action check before you invoice, pay or onboard. No account, no key. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/company-report

ParametersJSON Schema
NameRequiredDescriptionDefault
sirenYes9-digit SIREN (Luhn-checked, 400 on a typo). Optional 'include=identity,events,vat,peppol,lei' trims the report; dropping 'vat' makes it fully offline. Unknown SIREN = 404, no empty report billed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the paid nature, unbilled behavior on unknown SIREN (404, no empty report billed), the Luhn check (400 on typo), offline mode when 'vat' is dropped, and per-block provenance. This is rich behavioral detail, though it doesn't describe output format or whether the report is synchronous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core value proposition, then pricing and docs. Every sentence earns its place covering purpose, scope details, use case, and commercial terms. Slightly more verbose than strictly needed but each clause adds useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param tool with 100% schema coverage and no output schema, the description is quite complete. It covers what data is returned, error behavior, pricing, and use-case guidance. Could add output format/timing, but the tool is sufficiently scoped that the description is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter (siren) is well-documented in the schema itself with Luhn-check, error codes, and optional include flags. The description doesn't add meaning beyond what's already in the schema, meeting the baseline 3 for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Full counterparty due-diligence on a French company... by SIREN' and enumerates the exact data blocks (Sirene, BODACC, VIES, Peppol). It clearly distinguishes itself from sibling tools like company_vat, company_events, company_peppol which each cover single data sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: 'The pre-action check before you invoice, pay or onboard.' It provides pricing, free trial, documentation link, and the alternative to use individual company_* tools implicitly by covering a superset. It also notes there's no account/key needed as an onboarding guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_resolveResolve a French companyA

Verify a French company before you invoice, pay or onboard it: legal name, active/ceased status, legal form, NAF activity, workforce band, creation date and head-office address from the official INSEE Sirene register (30M+ legal units, monthly snapshot). Lookup by SIREN or SIRET. No account, no key, pay per call. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/company-resolve

ParametersJSON Schema
NameRequiredDescriptionDefault
sirenYes9-digit SIREN of the legal unit. Provide exactly one of 'siren' or 'siret'. Malformed input is a 400 (INVALID_INPUT), a failed Luhn checksum is a 400 (INVALID_CHECKSUM, likely a typo), a well-formed SIREN absent from the register is a 404 (unbilled)

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: data source freshness (monthly snapshot), no authentication required, and pay-per-call pricing with a free daily trial. It also implies a read-only verification operation. It does not explicitly state that it is non-destructive, but the 'verify' verb and the listing of returned fields make this clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-organized paragraph that leads with the core purpose, then lists data fields, source, lookup method, and finally pricing/docs. Every sentence adds some value, though the pricing and docs link could be considered tangential for an AI agent. It is appropriately sized and front-loaded with the most critical info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the business context, source, and expected outputs, and the schema provides error handling information. However, the unresolved SIREN/SIRET ambiguity is a significant gap: an agent cannot confidently construct the correct request. Additionally, with no output schema, the description lists returned fields but does not describe the response structure or format. This is a simple tool, so it does not require extensive documentation, but the contradiction prevents full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a detailed description for the single parameter 'siren' (including error codes for malformed input, Luhn checksum, and 404 handling), so baseline coverage is high. However, the description's claim 'Lookup by SIREN or SIRET' actively contradicts the schema, which only defines 'siren' as the sole required parameter and does not include a 'siret' property. This misleading statement could cause an agent to attempt invoking a non-existent 'siret' parameter or to pass a SIRET in the 'siren' field, undermining correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Verify') and resource ('a French company'), enumerates the returned data fields (legal name, status, legal form, NAF, workforce, creation date, address), and identifies the authoritative source (INSEE Sirene register). It distinguishes itself from sibling tools like company_vat or company_report by focusing on official register verification for pre-invoice/pay/onboarding use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage context: 'before you invoice, pay or onboard it', which tells the agent when this tool is appropriate. It also specifies the lookup method (by SIREN or SIRET) and the official register. However, it does not explicitly mention alternative tools or when not to use this one, so it falls short of the highest bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_vatValidate an EU VAT numberA

Validate any EU VAT number live against the official European Commission VIES service before you invoice cross-border, or derive and check the French VAT number from a SIREN. Returns valid/invalid or an honest 'unverifiable' when the member state is down - syntax check always included. No account, no key. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/company-vat

ParametersJSON Schema
NameRequiredDescriptionDefault
vatYesComplete VAT number with its country prefix, any EU member state plus XI (Northern Ireland), EL for Greece. Provide exactly one of 'vat' or 'siren' - 'siren' (9 digits) derives the French VAT number by pure computation, traced in derived_from_siren. Malformed number or unknown prefix is a 400 (INVALID_INPUT), an inconsistent FR key or Luhn checksum is a 400 (INVALID_CHECKSUM, likely a typo). There is no 404

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses honest 'unverifiable' result handling when the member state is down, syntax check always included, no account/key needed, and importantly documents that there is no 404 response. The pricing and trial info is bonus transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well organized with the main capability in the lead sentence, then return behavior, then pricing, then docs link. The pricing and docs URL are arguably peripheral to tool selection but useful metadata. No redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a single-parameter validation tool with no output schema and no annotations. The description covers purpose, return semantics (valid/invalid/unverifiable), error behavior (400 codes, no 404), authentication needs (none), and the dual-input model. Exceptionally complete for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial meaning: explains 'vat' vs 'siren' exclusivity, both accepted formats (XI, EL), the derived_from_siren tracing, and specific 400 error codes (INVALID_INPUT, INVALID_CHECKSUM) with likely-typo interpretation. This goes well beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb+resource: 'Validate any EU VAT number live against the official European Commission VIES service' — very specific about what it checks and the live/official nature. It also mentions the secondary SIREN-to-FR-VAT derivation capability, distinguishing its unique value from siblings like invoice_vat_treatment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'before you invoice cross-border' giving clear business context for when to use it. However, it doesn't explicitly name alternative tools (e.g., invoice_vat_treatment) or state when NOT to use it, only implying the cross-border invoicing trigger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iban_repairFix a broken or garbled IBANA

Before your agent pays an IBAN taken from OCR or invoice ingestion: fix a broken or garbled IBAN — recompute check digits, recover unreadable characters (?) and rank candidates by known bank from national bank registries Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/iban-repair

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It does disclose that this is a paid tool ($0.01 per call) and mentions first-call-free trial and documentation. However, it doesn't disclose what happens on failure (e.g., if check digits can't be recomputed), the format of the returned candidates, or any rate limits. The pricing disclosure is useful transparency beyond what annotations would provide, but the description is silent on failure modes and return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient, front-loading the core use case ('Before your agent pays an IBAN... fix a broken or garbled IBAN') then detailing capabilities. The pricing and doc lines are useful but arguably squeezed into the same description field rather than being cleanly separated. For a single-paragraph description it's well organized with a natural flow from use case to capabilities to logistics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-output-schema tool, the description covers the input use case well. However, the tool has meaningful complexity (check digit recomputation, candidate ranking by bank registry) that begs for some disclosure of expected output format or failure behavior. With no output schema and 0% schema coverage, the description should compensate more. The what-it-does is well specified, but the what-happens-next (return format, error semantics) is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only 1 parameter (iban) with 0% schema description coverage. The description implies the 'iban' parameter can contain unreadable characters (?), which adds semantic meaning beyond the bare string type in the schema. However, it doesn't specify the expected format of the input beyond implication (OCR-derived), nor whether the ? character has a special meaning that must be preserved exactly in the input. The description adds a bit of value but doesn't fully compensate for the 0% schema coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (fix/repair), the resource (IBAN), and the specific context (broken or garbled IBAN from OCR or invoice ingestion). It details what the tool does: recompute check digits, recover unreadable characters, and rank candidates by known bank. The purpose is specific and distinguishes itself from siblings like iban_screen (screening) and iban_resolve (resolving).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear when-to-use context: 'Before your agent pays an IBAN taken from OCR or invoice ingestion.' This establishes the use case clearly. It doesn't explicitly name when NOT to use it or name alternative sibling tools, but the context signal is strong enough that an agent could infer when iban_screen (vetting) or iban_resolve would be the alternative. The OCR/ingestion pointing is specific and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iban_repair_batchFix a list of broken IBANsA

Before a payment run over OCR or invoice data: fix up to 500 broken or garbled IBANs in one call, within a total repair-effort budget — recompute check digits, recover unreadable characters and rank candidates by known bank from national bank registries. A batch whose combined '?' search space is too large is rejected with 400 BATCH_BUDGET_EXCEEDED and never charged: send fewer IBANs per call, or fewer '?' per IBAN Price: $0.005 base + $0.005 × N items, max 500 (field "ibans") Docs: https://invoket.com/docs/api/iban-repair-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
ibansYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It covers the 'never charged' on rejection, the repair-effort budget constraint, and the pricing model ($0.005 base + $0.005 × N). It explains the recovery capabilities (check digit recomputation, unreadable character recovery, bank ranking from registries). It doesn't describe the return format, but the main behavioral traits are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a reasonably compact paragraph with useful front-loaded usage context and a separate pricing/docs line. It's slightly dense with multiple clauses in one long sentence, but the key behavioral and cost information is conveyed efficiently. The '?' quotes insertion mid-sentence is a minor structural hiccup.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch mutation tool with no annotations and no output schema, the description provides good coverage: the error/handling behavior (400 on budget exceed), the max batch size (500), the pricing model, and the recovery capabilities. Gaps include the return format/structure (no output schema exists) and what happens to successfully repaired vs unrecoverable items, but the essential context for correct invocation is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (the 'ibans' parameter has no schema description), so the description must compensate. The description does provide context about the ibans field (up to 500 items, '?' as unreadable character marker, budget implications tied to the number of items). However, it doesn't explicitly describe the format expected for each IBAN string beyond the '?' marker, and the details are somewhat spread throughout the prose rather than being param-focused. Given the 0% schema coverage and single simple param, this is reasonably good compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as fixing broken/garbled IBANs in batch, with a specific scope (up to 500 items before a payment run over OCR/invoice data). The verb 'fix' + resource 'IBAN batch' distinguishes it from siblings like iban_repair (singular), iban_screen (validation/checking), and iban_resolve (resolving).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Before a payment run over OCR or invoice data'. It also provides concrete guidance on recovery behavior: if the batch budget is exceeded it returns 400 BATCH_BUDGET_EXCEEDED and is not charged, advising to send fewer IBANs or fewer '?' per IBAN. This gives clear operational guidance on how to use the tool correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iban_resolveVerify an IBAN and resolve its bankA

Before your agent pays a new bank account: validate the IBAN (all countries), resolve its bank and BIC from national bank registries, and check SEPA reachability per scheme (SCT, SCT Inst, SDD Core/B2B) against the EPC register Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/iban-resolve

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYesIBAN to verify, any SEPA or non-SEPA country; spaces are tolerated

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose geographic coverage (all countries, SEPA and non-SEPA), reference registries used (national bank registries, EPC register), and scheme checks (SCT, SCT Inst, SDD Core/B2B). However, it omits return format, error behavior (e.g., for invalid IBANs), and any rate-limit constraints beyond the flat pricing note. Useful but incomplete behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core functional description is a single dense sentence that packs the full scope. The pricing, trial, and docs-link lines are somewhat off-topic for behavioral guidance but are compact and easily skippable, so they don't significantly harm conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should note what is returned — it mentions what is resolved (bank, BIC, SEPA scheme reachability) which implies the output. For a single-parameter tool with full schema coverage, the description covers the functional scope well. It could state response shape/error handling, but the listed registries and scheme checks sufficiently frame expected results for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'iban' parameter, and the description adds meaningful context that the IBAN can be from 'any SEPA or non-SEPA country' and that spaces are tolerated. The description reinforces the parameter scope even though the schema already documents the tolerance for spaces.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+action ('validate the IBAN'), resource (all countries), and specific multi-step outcome (resolve bank/BIC, check SEPA reachability per scheme). It clearly distinguishes from siblings like iban_screen and iban_repair by naming the resolution and reachability aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a concrete use-case trigger ('Before your agent pays a new bank account'), which effectively tells when to use this tool. It doesn't explicitly name alternatives/exclusions, but the 'before paying' context clearly scopes it as a pre-payment validation step rather than repair or screening.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iban_resolve_batchVerify a list of IBANsA

Before a payment run: validate up to 500 IBANs in one call, resolve bank and BIC from national bank registries, and check SEPA reachability per scheme (SCT, SCT Inst, SDD Core/B2B) against the EPC register Price: $0.005 base + $0.005 × N items, max 500 (field "ibans") Docs: https://invoket.com/docs/api/iban-resolve-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
ibansYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the maximum batch size (500), pricing structure ($0.005 base + $0.005 × N), and the field name ('ibans'). It does not disclose what happens on mixed valid/invalid input, error behavior for the max limit, or response format, which would be valuable for a validation tool. However, the core behavioral facts (limits, cost) are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose in the first sentence, followed by pricing and docs in two additional lines. Every sentence adds value. The pricing and docs info could arguably be moved out of the description proper, but it's still efficiently presented.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there's no output schema, the description doesn't explain what results look like or how to interpret failure states, and it doesn't address batch error handling for a tool that validates up to 500 items. It covers purpose, limits, and cost well, but the absence of mention of return format or per-item vs batch-level failures is a gap for a tool that could produce partial results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and only one parameter (ibans), the description partially compensates by naming the field and stating the max 500 items. The description adds the count/limit context that the schema alone doesn't provide. However, it doesn't explain the expected format of array items (raw IBAN strings, format variations) or batch splitting strategy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb+resource: 'validate up to 500 IBANs', resolving bank/BIC, and checking SEPA reachability. It distinguishes from sibling iban_resolve (singular/batch distinction) and iban_screen (screening vs resolution) by specifying the batch context ('Before a payment run') and the SEPA scheme checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear usage context ('Before a payment run') and specifies capabilities (validate, resolve bank/BIC, check SEPA reachability) that distinguish it from iban_screen and iban_repair siblings. It doesn't explicitly state when NOT to use it (e.g., use iban_resolve for single items), though the batch naming makes that reasonably inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iban_screenScreen an IBAN for sanctionsA

Before your agent onboards or pays a counterparty: screen the bank account for sanctions — flags sanctioned banks (BIC) and high-risk jurisdictions against the official OFAC, EU, UN and FATF lists, for KYB/AML compliance Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/iban-screen

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the tool's screening behavior (checks BIC and jurisdictions against official lists) and its purpose. It omits operational specifics such as whether the results include a pass/fail status, risk scores, or recommendation output — with no output schema and no annotations, the agent is blind to the response format. However, the core behavioral contract (screening against sanctions lists) is stated clearly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise: a single framing sentence covering purpose and compliance context, plus pricing and docs links. The price and trial info add practical value for cost-sensitive agents. It's front-loaded with the when-to-use framing. Slightly more verbose than necessary with the pricing block, but each part serves a purpose for an agent deciding whether to invoke this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter screening tool, the description is mostly complete. It establishes the compliance context, what's screened, and against which lists. However, with no output schema and no annotations, the agent has no idea what the response looks like — does it return a boolean, a risk score, a list of matches? This gap matters for an agent that must interpret results. It also doesn't mention edge cases like non-European IBANs or invalid IBAN format handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 1 parameter (iban) and 0% schema description coverage, the single parameter is entirely undocumented. However, the parameter name 'iban' is semantically self-evident — an IBAN string — and the description already indicates it's a bank account being screened. The description adds context about what the screening covers (BIC, jurisdiction), which enriches the meaning of the input. For a single self-explanatory parameter, the description compensates adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool screens an IBAN for sanctions, flagging sanctioned banks and high-risk jurisdictions against OFAC/EU/UN/FATF lists. It's a specific verb+resource with concrete scope. While it doesn't explicitly differentiate from siblings like iban_resolve or iban_repair, the purpose is clearly distinct given the sanctions focus and the 'screen' verb distinguishes it from 'repair'/'resolve' siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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 it: 'Before your agent onboards or pays a counterparty.' It's framed for KYB/AML compliance scenarios. It doesn't explicitly mention when NOT to use it or name alternative tools, but the compliance context is well-established and distinct from sibling tools like iban_resolve (which likely resolves IBAN details).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iban_screen_batchScreen a list of IBANs for sanctionsA

Before onboarding or a payment run: screen up to 500 IBANs in one call for sanctioned banks (BIC) and high-risk jurisdictions against the official OFAC, EU, UN and FATF lists, for KYB/AML compliance Price: $0.005 base + $0.005 × N items, max 500 (field "ibans") Docs: https://invoket.com/docs/api/iban-screen-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
ibansYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses pricing, the 500-item maximum, and the field name ('ibans'), which is genuinely useful operational context. However, it doesn't disclose what the response shape looks like, failure modes for invalid IBANs, or compliance context beyond naming lists. For an unannotated tool, moderate disclosure but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with high information density: purpose, databases, pricing, max items, field name, docs link. Front-loads the purpose. The pricing formula and docs URL add real value without bloat. Could be trimmed slightly but every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Single-parameter tool with no output schema and no annotations, so the description must carry a lot. It covers purpose, compliance scope, limits, pricing, and a docs reference. It doesn't describe the output format (matches, risk flags, result structure), which is a notable gap for an unannotated tool with zero output schema, but for a relatively simple batch screening description the coverage is solid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there is only one parameter ('ibans'). The description compensates by naming the field, specifying the 500-item max, the array-of-strings nature implicitly, and providing a pricing formula tied to N items. This adds meaning (limits, cost) well beyond the bare schema. Slight credit held for not stating that each array element should be a standard IBAN string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource+scope: 'Screen a list of IBANs' for sanctioned banks/high-risk jurisdictions against named official lists (OFAC, EU, UN, FATF). Distinguishes from sibling 'iban_screen' by the batch nature and explicit 500-item cap in one call. Title adds context (sanctions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the use case ('Before onboarding or a payment run') and explicit list sources/databases. It doesn't explicitly contrast with the sibling 'iban_screen' single tool, but the use-case framing plus the 500-item batch distinctiveness provides clear context. Slight gap: no explicit 'when not to use / use iban_screen instead' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_generateGenerate a conformant EN 16931 e-invoice (CII XML)A

Generate a guaranteed EN 16931-conformant e-invoice: post simple business JSON (parties, lines, VAT) and get XML that has already passed the full official rule set - totals computed for you, inconsistent inputs rejected with actionable field-level errors. Default output is CII (Factur-X EN 16931 profile URN); set syntax=ubl for a UBL 2.1 invoice, and add ruleset=peppol for a guaranteed-conformant Peppol BIS Billing 3.0 document (Belgium mandate, live since 2026-04). Ready for the French 2026-2027 reform. No account, no key. An optional vat_treatment block also determines the VAT treatment (reverse charge, intra-Community exemption) and writes the compulsory legal mention into the invoice. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/invoice-generate

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerYes
linesYesInvoice lines (BG-25), required non-empty. Line ids (BT-126) are numbered for you; each line net (BT-131) is computed as qty x unit_price with the official EN 16931 rounding. Document totals (BG-22) and the VAT breakdown (BG-23) are computed from the lines; an optional top-level `totals` object is VERIFIED against that computation and rejected with code inconsistent_totals if it diverges - never silently repaired
sellerYes
paymentYes
currencyYesInvoice currency (BT-5), ISO 4217, required. It must be usable for billing: XXX (no currency) and XTS (test) are a 400 implausible_currency although BR-CL accepts them - a restriction no BR rule states; metals and units of account (XAU, XAG, XPD, XPT, XDR, XUA) are accepted
due_dateYes
issue_dateYesIssue date (BT-2), required, YYYY-MM-DD AND a real calendar date - 2026-13-99 fits the pattern but is a 400 invalid_date. Optional due_date (BT-9, same check) and type_code (BT-3, default 380 commercial invoice, 381 credit note)
invoice_numberYesInvoice number (BT-1), required. The whole input is the simple business JSON shown here - unknown or misspelled fields are refused (400 INVALID_INVOICE_INPUT), a typo is never silently ignored. Max body 10 MB (413 beyond). Optional syntax: 'cii' (default, Factur-X CII D16B) or 'ubl' (UBL 2.1 Invoice). Optional ruleset: 'peppol' guarantees a Peppol BIS Billing 3.0 document (Belgium mandate) - it requires syntax='ubl' (else 400 ruleset_requires_ubl), a buyer_reference (BT-10), and on both seller and buyer an electronic_address {value, scheme} whose scheme is an EAS code (e.g. 0208 Belgian company number, 0009 SIRET); an unknown scheme is a 400 invalid_eas_scheme. The generated document is re-validated against the requested ruleset before being served. Under ANY ruleset, a supplied electronic_address is form-checked: a value repeating its own EAS code, or malformed for the declared scheme, is a 400 implausible_identifier

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It does disclose key behaviors: outputs auto-computed totals, rejects inconsistent inputs with field-level errors, never silently repairs totals (code inconsistent_totals), enforces implausible identifiers via Luhn checks, and re-validates the document before serving. It also reveals pricing, rate limits, and that no account/key is required. This is thorough, though it could disclose the exact response structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and information-rich but quite long and sprawling, with configuration details (syntax, ruleset, electronic_address constraints) packed into what is effectively one long paragraph under invoice_number. It front-loads the core purpose well, but the structure becomes hard to scan—some critical behavior (re-validation, BR enforcement) is buried mid-sentence. A more structured breakdown of options would improve scannability without losing substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 required params, nested buyer/seller/line/payment objects, and no output schema, the description adds rich detail about validation behavior, EN 16931 BR rule enforcement, rounding, identification checks, pricing, and ruleset options. It covers most semantic gaps. It doesn't describe the XML response structure (which, absent an output schema, would be helpful), but overall it is remarkably complete for such a complicated tool with zero annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%, and the description meaningfully compensates for the gaps. It explains semantic details the schema doesn't: that qty x unit_price computes net per line with EN 16931 rounding, that document totals and VAT breakdown are auto-computed, the optional totals object verification behavior, the IBAN Mod-97 checksum, the VAT category codes (BT-151, S/Z/E/AE) with BR rule enforcement, EAS scheme requirements for peppol, and the implausible_currency restriction on XXX/XTS beyond what BR rules state. This adds substantial value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates a conformant EN 16931 e-invoice in CII XML (or UBL), and it names the concrete output formats, profiles (Factur-X, Peppol BIS), and legal mandates. It distinguishes itself from siblings like invoice_validate and invoice_generate_pdf by its conversion/generation role producing a conformant XML document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists when to use this tool (generating conformant XML), what inputs it takes (simple business JSON), configuration alternatives (syntax=cii vs ubl, ruleset=peppol), and even cross-references the sibling tool /company/resolve for party verification. It explains output format selection and the Belgium/French mandates that trigger usage, giving clear when-to-use guidance relative to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_generate_pdfGenerate a complete Factur-X invoice (PDF/A-3 + EN 16931 XML)A

Generate a complete Factur-X hybrid invoice: post simple business JSON (parties, lines, VAT) and get a PDF/A-3B document with the EN 16931 CII XML embedded (plus XMP) - the human-readable PDF that IS the structured e-invoice mandated by the French 2026-2027 reform. Already passed the full official rule set, and its embedded XML re-read byte-for-byte by our own reader; totals computed for you, inconsistent inputs rejected with actionable field-level errors. No account, no key. An optional vat_treatment block also determines the VAT treatment (reverse charge, intra-Community exemption) and writes the compulsory legal mention into the invoice. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/invoice-generate-pdf

ParametersJSON Schema
NameRequiredDescriptionDefault
buyerYes
linesYesInvoice lines (BG-25), required non-empty. Line ids (BT-126) are numbered for you; each line net (BT-131) is computed as qty x unit_price with the official EN 16931 rounding. Document totals (BG-22) and the VAT breakdown (BG-23) are computed from the lines; an optional top-level `totals` object is VERIFIED against that computation and rejected with code inconsistent_totals if it diverges - never silently repaired
sellerYes
paymentYes
currencyYesInvoice currency (BT-5), ISO 4217, required. It must be usable for billing: XXX (no currency) and XTS (test) are a 400 implausible_currency although BR-CL accepts them - a restriction no BR rule states; metals and units of account (XAU, XAG, XPD, XPT, XDR, XUA) are accepted
due_dateYes
issue_dateYesIssue date (BT-2), required, YYYY-MM-DD AND a real calendar date - 2026-13-99 fits the pattern but is a 400 invalid_date. Optional due_date (BT-9, same check) and type_code (BT-3, default 380 commercial invoice, 381 credit note)
invoice_numberYesInvoice number (BT-1), required. The whole input is the simple business JSON shown here (identical to /invoice/generate) - unknown or misspelled fields are refused (400 INVALID_INVOICE_INPUT), a typo is never silently ignored. Max body 10 MB (413 beyond). A supplied electronic_address {value, scheme} is form-checked here too: a value repeating its own EAS code, or malformed for the declared scheme, is a 400 implausible_identifier

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does this well: states totals are computed for you, inconsistent inputs rejected with actionable field-level errors, optional vat_treatment writes compulsory legal mention, embedded XML re-read byte-for-byte, pricing ($0.01/call, first free). It does not explicitly state the operation is non-destructive, but as a generator returning a document the safety profile is reasonably clear. Could add what the response structure is, but no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long but front-loaded with the core purpose in the first sentence, then compliance credibility, then behavior/pricing links. Every sentence adds value (regulatory context, reliability claims, error behavior, pricing). Slightly dense with jargon (EN 16931, BT-151, BR-S/E/AE/Z, PDF/A-3B) but that's appropriate for the audience. Could be trimmed slightly but no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's high complexity (8 required params, nested objects, no output schema, no annotations, French regulatory mandate), the description is remarkably complete: it covers input validation specifics, error codes, rounding behavior, VAT treatment, pricing, and links to docs. It addresses most operational concerns an agent would have. Minor gap: no declaration of what the response/return value looks like, and the tax-timing/legal caveats are only lightly touched, but for a document-generator the coverage is strong.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, so the description must compensate. It does substantially: currency explains implausible_currency restrictions beyond BR-CL, issue_date explains invalid_date on real-calendar checks, invoice_number covers INVALID_INVOICE_INPUT/typo refusal and 10MB limit, lines explains EN 16931 rounding and inconsistent_totals rejection, iban explains Mod-97 and BG-16 mapping, seller legal_id explains Luhn and implausible_identifier. The remaining ~50% of params (buyer, payment base, due_date base fields) are adequately covered by schema structure. Strong compensation for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Generate a complete Factur-X hybrid invoice: post simple business JSON... get a PDF/A-3B document with the EN 16931 CII XML embedded'). It clearly distinguishes from the sibling invoice_generate tool (identical business JSON) by highlighting the PDF/XML hybrid output, regulatory mandate, and official rule-set compliance. The purpose is unambiguous and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use it: to get a PDF that IS the structured e-invoice mandated by the French 2026-2027 reform, for the French compliance context. It references alternatives implicitly (invoice_generate for the JSON form, invoice_validate for validation, invoice_read for reading) and explains the no-account/no-key low friction. However, it doesn't explicitly say when NOT to use this vs those siblings, so exclusions are missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_late_paymentCompute late-payment interest and recovery compensation (EU, Directive 2011/7)A

Before your agent sends a dunning letter or books a receivable: what is legally due on an unpaid B2B invoice. Post the claim (amount, currency, country, due date - or invoice date plus agreed terms - and payment date) and get late-payment interest computed PERIOD BY PERIOD under Directive 2011/7/EU: the reference rate changes every 1 January and 1 July, so a claim straddling several half-years is split into tranches, each at the rate of its own half-year - applying today's rate to the whole period is simply wrong. Statutory rate = ECB main refinancing rate (NBP reference rate for Poland) plus the national margin, with the national transposition actually applied: France 10 points, Germany 9 on the Basiszinssatz base, Belgium rounding the reference up to the half point, 8 points elsewhere. Covers FR, DE, ES, IT, NL, BE, PT and PL, with an explicit fallback to the Directive minimum for the other Member States - a national rule is never guessed. Adds the fixed recovery compensation of Art. 6 (EUR 40, tiered in Poland), each component cited to its article. Paying on time is a valid answer, not an error. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/invoice-late-payment

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesPrincipal of the unpaid claim, simple decimal string, strictly positive. currency is ISO 4217 and required (XXX and XTS refused). Interest is computed in the currency of the claim while the fixed compensation is in euros by the Directive: outside the euro, total_due is null and a note says so - NO conversion is performed
countryYesMember State whose transposition applies, ISO 3166-1 alpha-2 (EL accepted for GR), required. FR, DE, ES, IT, NL, BE, PT and PL carry their own national rule; any other Member State gets the Directive minimum, explicitly flagged rule_source eu_minimum_fallback. A third country is refused (unsupported_country): the Directive governs commercial transactions within the Union, and no rule is guessed beyond it
currencyYes
due_dateYesContractual due date. Alternatively supply invoice_date plus payment_terms_days; with neither, the national statutory default applies and the response says so. A term beyond the 60-day legal cap is NOT refused: it is computed as supplied, with a note recalling the cap may make it unenforceable. Dates must be real calendar dates, and a date outside the snapshot coverage (before 2011, or beyond the last published half-year) is a 400 date_out_of_range - the rate of an unopened half-year is never extrapolated
paid_dateYesDate of payment or of the assessment, defaulting to today. Paying on time is a valid, paid answer: days_late 0, total_due 0, flat_fee.source not_due, with the rationale citing art. 3(1). An optional contractual_rate (annual, in points) applies ONLY if it exceeds the statutory rate, which stays a public-policy floor (art. 7); otherwise the statutory rate applies and a note says so

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure and does so richly. It reveals period-by-period tranche computation ('the reference rate changes every 1 January and 1 July'), national margin details (FR 10, DE 9), currency handling (NO conversion, total_due null outside euro), country coverage (FR/DE/ES/IT/NL/BE/PT/PL plus explicit EU-minimum fallback), refusal behavior (third country refused), date bounds (date_out_of_range), and pricing ($0.01/call, free daily trial). It even discloses that a term beyond the 60-day cap is computed as supplied rather than refused—substantial transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core value proposition, then layers in edge cases and disclaimers. Every sentence adds operational information—the only minor deduction is that the pricing and docs block, while useful, couples business pricing with tool semantics, and a couple of behavioral details (NBP for Poland, half-point Belgian rounding) could arguably belong in schema or docs rather than the headline description. Still, it's tightly written with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema and a moderately complex parameter space (5 required params), the description fully specifies inputs, outputs (total_due, flat_fee, day_late, rule_source), behavior under every edge case (on-time, out-of-range dates, term beyond cap, third-country, non-euro), and fallback logic. The legal citation (art. 3(1), art. 6, art. 7) and country rules are all disclosed. Nothing essential is left underspecified for a computation of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, with 4 of 5 parameters carrying rich descriptions. The description adds meaning beyond the schema by explaining the due_date alternatives (invoice_date + payment_terms_days), the statutory default behavior, the date_out_of_range bounds, the paid_date 'on-time is valid' semantics, and the optional contractual_rate override logic. currency's XTS/XXX refusal and total_due-null behavior are explained. Only plain 'currency' and the un-parameterized extras are not enumerated as separate fields, but the description covers them inline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Compute late-payment interest and recovery compensation') and scopes it precisely to EU Directive 2011/7 for unpaid B2B invoices. It distinguishes itself clearly from sibling tools ('Before your agent sends a dunning letter or books a receivable: what is legally due on an unpaid B2B invoice') and is distinct from the invoice_* family which handles validation/generation/reading per the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('Before your agent sends a dunning letter or books a receivable'), what inputs to provide, and clarifies edge cases like 'Paying on time is a valid answer, not an error' and 'a national rule is never guessed.' It distinguishes from the broader invoice_* and legal_* tools by positioning it specifically as the late-payment computation endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_readRead a structured e-invoice (Factur-X, CII, UBL)A

Read any EU structured e-invoice in one call: post a Factur-X PDF, CII or UBL XML and get faithful structured data - parties with SIREN/VAT identifiers, line items, VAT breakdown, totals, payment IBAN and due dates. Covers the three formats mandated by the French 2026-2027 e-invoicing reform (EN 16931). No account, no key, no OCR guesswork. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/invoice-read

ParametersJSON Schema
NameRequiredDescriptionDefault
document_base64YesBase64 (standard alphabet, whitespace tolerated) of the complete document: a Factur-X/ZUGFeRD PDF (PDF/A-3 with embedded XML) or a CII D16B / UBL 2.1 invoice XML. Alternatively, skip JSON entirely and POST the raw bytes with Content-Type: application/pdf or application/xml. Max body 10 MB (413 beyond). Scanned/image PDFs without embedded XML are rejected (400) - this endpoint reads the structured formats of the EN 16931 core, no OCR

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose key behaviors: rejection of scanned PDFs (400), max body size of 10 MB (413 error), no OCR, and no account needed. However, it omits details like whether pricing limits apply per-response, error codes beyond HTTP status, and any rate limits or authentication behavior beyond billing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core value proposition in the first sentence. Format coverage and data returns are listed efficiently. The trailing pricing/docs lines are necessary commercial context. Minor room for improvement: the pricing and trial details could be separated from the behavioral description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite missing an output schema, the description explicitly enumerates the returned data fields (parties with identifiers, line items, VAT breakdown, totals, IBAN, due dates), which is genuinely rare and useful. Combined with the schema documenting the single input and error behaviors, this is reasonably complete for a single-parameter read endpoint. Slight gap: no explicitly stated response format (JSON shape) or pagination, but acceptable for this tool type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single document_base64 parameter, and the description adds meaningful format details (Factur-X/ZUGFeRD PDF, CII D16B, UBL 2.1) and the raw-bytes alternative transport method. However, since there's only one parameter and the schema already documents it thoroughly, the description adds value but the schema does most of the work — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource combination ('Read any EU structured e-invoice') and explicitly lists the covered formats (Factur-X PDF, CII, UBL XML) and the data types returned (parties, line items, VAT breakdown, IBAN, due dates). It clearly distinguishes from siblings like invoice_validate, invoice_generate, and invoice_vat_treatment, and names the regulatory context (French 2026-2027 reform, EN 16931).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool (posting structured e-invoices) and what is NOT supported (scanned/image PDFs rejected with 400), preempting misuse. It doesn't explicitly name alternative sibling tools for comparison, but the rejection of non-XML PDFs and OCR-less framing implicitly scopes its usage clearly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_validateValidate an e-invoice against EN 16931 (verdict + BR rule ids)A

Should you accept this invoice? Post a Factur-X PDF, CII or UBL XML and get a deterministic EN 16931 verdict: XSD conformance, every violated business rule by its official BR id with observed vs expected values, Factur-X profile consistency, and syntax checks on IBAN, SIREN/SIRET and VAT identifiers. The formats mandated by the French 2026-2027 reform. A non-conformant invoice is a paid, documented answer - no LLM guesswork. Add ?ruleset=xrechnung or ?ruleset=peppol to layer a national CIUS pack on top of the EN 16931 base: XRechnung (German BR-DE rules, DE mandate) or Peppol BIS Billing 3.0 (BE mandate, live since 2026-04), each violation sourced by its official id (BR-DE-xx, PEPPOL-EN16931-Rxxx). Each verdict also carries informational VAT consistency checks (INV-VAT-*), never mixed with the normative BR ids. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/invoice-validate

ParametersJSON Schema
NameRequiredDescriptionDefault
document_base64YesBase64 (standard alphabet, whitespace tolerated) of the complete document: a Factur-X/ZUGFeRD PDF (PDF/A-3 with embedded XML) or a CII D16B / UBL 2.1 invoice XML. Alternatively, skip JSON entirely and POST the raw bytes with Content-Type: application/pdf or application/xml. Max body 10 MB (413 beyond). Optional query parameter ?profile=declared|strict (default declared): strict additionally evaluates full EN 16931 conformance even when the declared Factur-X profile is poorer (no-op for UBL). Optional query parameter ?ruleset=en16931|xrechnung|peppol (default en16931, the EN 16931 base alone): additive - the requested national CIUS pack is checked ON TOP of the four base layers, its fatal violations count toward the verdict and its warnings are surfaced separately under data.ruleset. xrechnung applies the German BR-DE rules (UBL or CII); peppol applies Peppol BIS Billing 3.0 (UBL only - a CII document with ?ruleset=peppol is a paid 200 with an invalid verdict and a peppol_requires_ubl violation, never a 4xx). Composable with ?profile=strict; an unknown value is a 400. Scanned/image PDFs without embedded XML are rejected (400) - this endpoint judges the structured formats of the EN 16931 core, no OCR

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations were provided, so the description carries the full burden. It discloses several behavioral traits: deterministic verdicts (no LLM guesswork), paid (non-conformant invoices are paid, documented answers), pricing ($0.01/call), and error conditions (400 for unknown ruleset, 413 for body over 10MB, 200 with invalid verdict for CII+peppol). It's reasonably transparent but doesn't disclose behaviors like rate limits, authentication requirements, or latency expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and information-rich but quite long, spanning the main description plus the single-paragraph parameter description. While every sentence carries meaningful content (formats, rulesets, side effects, pricing, limits), the density makes it harder to skim. The front-loaded content is good (purpose stated first), and there's no waste, but the length is substantial for a single-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 formats, ruleset layers, profile options, error semantics), the description is thorough. No output schema exists, so it partially compensates by describing return content (verdicts, BR rule violations with observed/expected values, VAT checks separated from normative ids). It covers the key user decisions (which ruleset, which profile, JSON vs raw POST) and error states. It's substantively complete for an agent to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, so baseline is 3. The description adds substantial meaning beyond the schema: how to encode the document (base64 standard alphabet, whitespace tolerated), alternative POST raw-bytes approach with specific content-types, accepted formats (PDF/A-3, CII D16B, UBL 2.1), body size limit (10MB, 413 beyond). The query parameters (profile, ruleset) and their values and semantics are also richly documented, going well beyond what the schema alone provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Validate an e-invoice against EN 16931') and resource, plus the expected input formats (Factur-X PDF, CII, UBL XML) and core outputs (XSD conformance, BR rule violations, profile consistency, syntax checks). It distinguishes from many siblings in context (invoice_generate, invoice_read, invoice_late_payment, etc.), though it doesn't explicitly name an alternative for sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides substantial context on when to use this tool: to accept or reject an invoice, mandated by French 2026-2027 reform. It also explains query parameters for rulesets (xrechnung/peppol) and profile (strict/declared). However, it doesn't explicitly state 'when NOT to use' or contrast with sibling tools like invoice_read or invoice_generate, though it does note it rejects scanned/image PDFs (no OCR).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_vat_treatmentDetermine the VAT treatment of a transaction (EU, Directive 2006/112)A

Before your agent issues or books a cross-border invoice: who charges the VAT, under which mechanism, where the supply is taxed and with which compulsory wording. Post one transaction (countries, goods or services, business or consumer customer, supply kind, date, optional amount) and get a determination sourced article by article under Directive 2006/112/EC: place of supply, person liable, standard VAT, reverse charge, intra-Community exemption or out of scope, the rate in force at that date, and the exact invoice mentions to print. An invoice missing its reverse-charge mention passes the EN 16931 rules and is still refused by the tax authority - the check /invoice/validate cannot make. The customer's VAT number is taken AS DECLARED (zero network): verify it live with /company/vat. Uncovered regimes (OSS/IOSS, import VAT, margin schemes, triangulars) come back as a motivated undetermined, never a plausible default. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/invoice-vat-treatment

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate VAT becomes chargeable (YYYY-MM-DD, and a real calendar date): the rate served is the one in force AT THAT DATE, each rate carrying its own validity in the committed TEDB snapshot. Earlier than the snapshot is a 400, never extrapolated
amountYesOptional taxable base (simple decimal string): supplying it triggers computed, and then currency (ISO 4217; XXX and XTS refused) is required. An overflowing amount is a 400, never a 5xx
currencyYes
supply_kindYesClosed enumeration, required: general (domestic), intra_eu_dispatch, export_outside_eu, import, services_b2b_general, services_b2c_general, services_land_related (then add property_country), services_electronic_b2c. A value outside the list is a 400 naming the admitted values - never a fallback to general
customer_typeYes
customer_countryYes
supplier_countryYesWhere the supplier is established, ISO 3166-1 alpha-2 (EL accepted for GR), required - as is customer_country (where the customer is established, or where the goods arrive). Both are checked together, so two bad codes are two issues in one 400. Territories outside the VAT territory of the Union that ISO can express (IC, EA, AX, French overseas departments) are third territories; Monaco is FR
transaction_typeYesgoods | services, required - as is customer_type (business | consumer). Both must be CONSISTENT with supply_kind: a services_b2b_general declared with a consumer customer is a motivated refusal (paid 200, undetermined), never a guess
customer_vat_statusYesvalid | invalid | unknown (default). DECLARED, never verified here: zero network by design. invalid and unknown are treated identically - the Directive does not distinguish them - and both make the intra-Community exemption (Art. 138(1)(b)) and the Art. 196 reverse charge fall away, the supply being taxed at the supplier's rate. Live check: GET /company/vat

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does substantial work: it discloses that the customer VAT number is taken AS DECLARED (zero network), that early dates return 400 (never extrapolated), that overflowing amounts are 400 (never 5xx), that undefined supply kinds are refused rather than defaulted, and that uncovered regimes return as motivated undetermined never a plausible default. It also states error-shape behavior in several places. The only gap is no explicit statement about read-only/non-mutating behavior or output structure, though those are partly implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and packs a lot of genuinely useful information into a compact space: use context, coverage limits, error behavior, cross-tool links, and pricing. Every sentence carries operational content. However, some redundancy exists with the schema (e.g., date explanation partly repeats the schema's description), and the content is front-loaded well with the strongest guidance first. A slight trim on points already covered by the schema would earn a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no output schema and no annotations, the description is remarkably thorough: it covers when to use, what inputs mean, edge cases (third territories, Monaco), error behavior, uncovered regimes, and where to get live verification. It compensates well for the missing output schema by describing the return contents (place of supply, person liable, rate, invoice mentions). The only notable omission is explicit mention of reading/mutation implications and the exact output response structure, but coverage is otherwise strong.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, leaving three parameters (currency, customer_type, customer_country) without schema descriptions. The description compensates for some: supplier_country gets rich detail on formats (EL for GR, Monaco=FR, overseas territories). However, customer_type's values (business|consumer) are only explained in the transaction_type description, and currency's ISO 4217 constraint appears only in the amount text rather than its own parameter. Good compensation overall but slightly fragmented across parameter cross-references.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a very specific verb+resource: it determines the VAT treatment of a cross-border transaction, naming who charges VAT, under which mechanism, place of supply, and invoice wording. It distinguishes itself clearly from siblings like invoice_validate, invoice_generate, and company_vat by referencing the reverse-charge mention gap and the live verification option. The opening line sets scope precisely (EU, Directive 2006/112).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance ('Before your agent issues or books a cross-border invoice') and links to sibling tools for what this tool cannot do: live VAT verification is delegated to /company/vat, invoice-schema validation to /invoice/validate. It also explicitly names uncovered regimes (OSS/IOSS, import VAT, margin schemes, triangulars) that come back as undetermined, so the agent knows when this tool is NOT the answer. This is exemplary alternative/context guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoice_vat_treatment_batchDetermine the VAT treatment of up to 200 transactions (EU)A

A sales ledger or an order book judged in one call: up to 200 transactions, one VAT determination each, one settlement. Same verdicts as /invoice/vat-treatment - place of supply, person liable, standard VAT, reverse charge, intra-Community exemption or out of scope, the rate in force at the date of each line, the compulsory invoice mentions and the articles of Directive 2006/112/EC they rest on. A malformed item is reported at its position instead of failing the batch; only an empty or oversized batch is a 400. Legal bases and caveats are shared across the batch and cited by key, and the summary counts the five mechanisms. Customer VAT numbers are taken AS DECLARED (zero network by design) - verify them with /company/vat; uncovered regimes (OSS/IOSS, import VAT, margin schemes, triangular transactions) come back as a motivated undetermined, never a plausible default. Price: $0.005 base + $0.005 × N items, max 200 (field "items") Docs: https://invoket.com/docs/api/invoice-vat-treatment

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of transactions judged in one settlement. Its length is priced per unit (base + N x unit), capped at 200 (an empty or oversized batch is a 400 invalid_batch_size, never charged). Each item is EXACTLY the body of /invoice/vat-treatment: supplier_country and customer_country (ISO 3166-1 alpha-2), transaction_type (goods | services), customer_type (business | consumer), supply_kind (general, intra_eu_dispatch, export_outside_eu, import, services_b2b_general, services_b2c_general, services_land_related, services_electronic_b2c), date, and the optional customer_vat_status (valid | invalid | unknown, DECLARED - verify it with /company/vat) plus amount and currency. A malformed item is reported at its position; the batch is not rejected for it

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses several important behaviors: malformed items are reported at position instead of failing the batch, empty/oversized batches return 400, prices are pegged to item count, and unfamiliar regimes return as 'motivated undetermined, never a plausible default'. This is substantial behavioral disclosure beyond schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense and mostly well-organized, front-loading the core purpose and mechanisms, then caveats and pricing. It's a longer paragraph but every sentence adds unique value. Minor redundancy with the schema on pricing/cap details, but the structure is effective for a batch tool with many caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex (nested items, 1 param with 100% schema coverage, no output schema). The description compensates well: it details verdict types, error behavior, pricing, verification caveats, and uncovered regimes. Could add what the summary response contains in more concrete terms, but for a no-output-schema batch tool it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the items parameter itself having a rich description covering semantics of each nested field, enums for transaction_type/supply_kind, pricing, and size cap. The description adds the verdicts and mechanism counts as extra context, but parameter meaning is largely already carried by the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool judges up to 200 transactions for VAT treatment in one call, enumerating the specific determinations (place of supply, person liable, standard VAT, reverse charge, etc.). It explicitly distinguishes from the sibling invoice_vat_treatment by framing this as a batch version with shared settlement, and mentions the five mechanism counts and per-line rate in force.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys when to use this (batch of up to 200 transactions) and notes key behaviors: customer VAT numbers are taken as declared and should be verified with /company/vat, uncovered regimes return as 'motivated undetermined'. It does not explicitly name exclusions versus the sibling single-call tool beyond the batch context, but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_chem_classifyGet a substance's harmonised CLP classification (EU)A

Before your agent approves a substance for an EU label or safety data sheet: the harmonised classification and labelling from Annex VI of the CLP regulation (ECHA), by CAS, EC number or exact name - hazard classes with H statements, GHS pictograms, signal word, concentration limits, versioned by ATP: the entry in force at the queried date, plus the upcoming change when a published but not-yet-applicable ATP modifies it. Absence from Annex VI returns an explicit self-classification verdict. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/label-chem-classify

ParametersJSON Schema
NameRequiredDescriptionDefault
atYesOptional date (YYYY-MM-DD, default today) the served classification must be in force at - useful around an ATP applicability switch
casYesCAS number, checksum-validated. Provide exactly ONE key among: cas, ec (EC number, checksum-validated), name (exact Annex VI chemical name). Zero or several keys = 400; bad checksum = 400; valid but not listed = 200 not_harmonised (billed - absence does not mean not hazardous, the verdict says so explicitly)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses pricing, a free trial, ATP versioning behavior, the inclusion of upcoming changes, and the explicit self-classification verdict for substances absent from Annex VI. It does not mention authentication or rate limits, but the provided behavioral details are substantial and useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the use case and packs many specific details into a moderate paragraph. The price and docs link add extra, but arguably useful, context. It is not overly verbose, though it could be restructured slightly for scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description adequately summarizes the return content (hazard classes, H statements, pictograms, signal word, concentration limits, ATP versions, upcoming change) and the absence verdict. It also covers pricing and trial behavior. The main missing piece is a clear statement of output format, but the listed data fields provide enough for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers CAS and date, but the tool description introduces EC number and exact name as alternative identifiers that are not present in the schema. Additionally, the schema marks 'at' as required while its description calls it optional, and the CAS description says to provide exactly one key among cas/ec/name even though ec and name are not defined. This ambiguity undermines correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets a substance's harmonised CLP classification and enumerates specific data elements (hazard classes, H statements, GHS pictograms, signal word, concentration limits, ATP versions). It also specifies the regulatory scope (Annex VI, CLP, ECHA), distinguishing it from sibling tools like label_chem_svhc and batch variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly frames when to use the tool: 'Before your agent approves a substance for an EU label or safety data sheet.' This is clear contextual guidance, though it does not explicitly mention when not to use it or point to label_chem_classify_batch for multiple substances.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_chem_classify_batchScreen a BOM against Annex VI CLP (EU)A

Before your agent clears a BOM or a formulation for the EU market: screen up to 200 substances in one call against Annex VI of the CLP regulation (ECHA) - one harmonised-classification verdict per item (CAS, EC number or exact name) with H statements, GHS pictograms, signal word, and the ATP version in force plus upcoming ATP changes; a malformed item is flagged at its position instead of failing the batch, and an unlisted substance gets an explicit self-classification verdict. Price: $0.005 base + $0.005 × N items, max 200 (field "items") Docs: https://invoket.com/docs/api/label-chem-classify-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
atYesOptional date (YYYY-MM-DD, default today) the whole batch is evaluated at - a BOM is assessed at a single date
itemsYesArray of substance keys screened in one settlement. Its length is priced per unit (base + N x unit), capped at 200; an empty or oversized batch = 400. Each item takes exactly ONE key among cas, ec, name (checksum-validated for cas/ec); a malformed item yields an INVALID_INPUT error at its position without failing the batch

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses key behaviors: partial-failure handling (malformed item flagged at position instead of failing the batch), pricing model, max batch size, and the date-evaluation semantics. The only minor gap is not describing exact return/response format, but with no output schema the coverage is otherwise strong and accurate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately sized but every sentence earns its place. It front-loads the core purpose, then adds pricing, docs link, and error semantics. The pricing line and docs URL are useful but could arguably be trimmed; however they're relevant for a paid tool. Reads efficiently without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with 100% schema coverage and no output schema, the description is quite complete. It covers acceptance criteria, error handling, navigation keys, and pricing. The only shortfall is not detailing the response structure (returned verdict fields), but since the description already enumerates the intended output fields (H statements, GHS pictograms, signal word, ATP), this is adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters (at, items) are documented in the schema. The description adds meaning beyond the schema: it explains the 'at' single-date evaluation semantics ('a BOM is assessed at a single date') and clarifies the items pricing/error behavior. Slight duplication exists (schema already explains the 400 error, item key constraint), but the description does add the pricing-per-unit and batch-capping context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource: 'screen up to 200 substances in one call against Annex VI of the CLP regulation (ECHA)', with clear deliverable detail (verdict per item with H statements, GHS pictograms, signal word, ATP version). It clearly differentiates from sibling label_chem tools (svhc, claims_check, food_additive) by specifying the CLP Annex VI classification scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with explicit when-to-use guidance: 'Before your agent clears a BOM or a formulation for the EU market'. Also specifies the query keys (CAS, EC number or exact name), error handling semantics (malformed item flagged at position, unlisted substance gets explicit self-classification), and the single-date evaluation constraint via the 'at' parameter. This is genuinely useful operational guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_chem_svhcCheck a substance against the SVHC Candidate List (EU)A

Before your agent clears a substance, an article or a supply-chain declaration for the EU market: is it on the ECHA Candidate List of substances of very high concern (SVHC, REACH)? By CAS, EC number or exact name - the published entry with its Article 57 inclusion reasons (CMR, PBT, vPvB, equivalent concern), inclusion date and the ECHA inclusion decisions as published, plus the generic obligations it triggers (REACH Article 33 information duty, SCIP notification above 0.1 % w/w). A not-listed verdict is dated to the served list, never an all-clear. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/label-chem-svhc

ParametersJSON Schema
NameRequiredDescriptionDefault
casYesCAS number, checksum-validated. Provide exactly ONE key among: cas, ec (EC number, checksum-validated), name (exact Candidate List name - the only key for UVCB entries published without CAS/EC). Zero or several keys = 400; bad checksum = 400; valid but not listed = 200 not_listed (billed - the verdict is dated to the served list and absence does not mean no concern)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the pricing behavior ($0.01/call, first call free), the billing-on-not-listed behavior, that results are dated to the served list, and the semantic caution that absence doesn't mean no concern. It doesn't discuss auth/rate limits but covers the meaningful behavioral nuances for this paid-check tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but front-loaded with the purpose statement, then delivers usage context and return-value specifics efficiently. The pricing/docs lines are slightly tangential for agent tool selection but earn their place given they're compliance-relevant billing signals. Structure flows purpose → usage → behavior → caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup tool with 100% schema coverage, the description is thorough. It explains return semantics, obligations triggered, and caveats on the not-listed verdict. The absence of an output schema is compensated by the description's explanation of what's returned. Minor gap: no mention of response speed or failure/network behavior, but this is a well-covered single-query registry lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 substantial value beyond the schema: it explains the mutual-exclusivity rule (exactly one key), the checksum validation, the 400 vs 200 response semantics, billing implications, and the UVCB special case where only name works. This meaningfully enriches the single-parameter schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is specific: 'Check a substance against the SVHC Candidate List (EU)' with clear verb+resource+scope. It specifies the query keys (CAS, EC number, exact name), what's returned (Article 57 inclusion reasons, inclusion date, EC decisions, triggered obligations), and distinguishes a 'not-listed' verdict from an all-clear. This clearly differentiates from sibling tools like label_chem_classify_batch and label_claims_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('Before your agent clears a substance, an article or a supply-chain declaration for the EU market'), naming the concrete workflow trigger. It frames the purpose against the ECHA/REACH compliance context, and the parameter guidance specifies exactly one key among cas/ec/name with error semantics, distinguishing from batch siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_chem_svhc_batchScreen a BOM against the SVHC Candidate List (EU)A

Before your agent clears a BOM, a formulation or a supplier declaration for the EU market: screen up to 200 substances in one call against the ECHA Candidate List of SVHC (REACH) - one verdict per item (CAS, EC number or exact name) with the published Article 57 inclusion reasons, inclusion date and the triggered obligations (REACH Article 33, SCIP notification); a malformed item is flagged at its position instead of failing the batch, and a not-listed substance gets an explicit verdict dated to the served list. Price: $0.005 base + $0.005 × N items, max 200 (field "items") Docs: https://invoket.com/docs/api/label-chem-svhc-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of substance keys screened in one settlement. Its length is priced per unit (base + N x unit), capped at 200; an empty or oversized batch = 400. Each item takes exactly ONE key among cas, ec, name (checksum-validated for cas/ec); a malformed item yields an INVALID_INPUT error at its position without failing the batch

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden of behavioral disclosure. It does disclose the per-item error handling (malformed items flagged not batch-failing), the pricing model, the max batch size of 200, and the verdict contents (Article 57 reasons, inclusion date, triggered obligations). However, it doesn't disclose details about authentication requirements, rate limits, or the exact response structure beyond listing the verdict fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is rich but front-loaded with the core value proposition and usage scenario. The pricing and docs URL details are useful but somewhat verbose; the pricing formula could arguably be considered secondary to the core tool behavior. Still, each sentence earns its place, covering purpose, usage, pricing, error handling and documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch tool with 100% schema coverage and no output schema, the description is fairly complete: it covers verdict structure, pricing, limits, error behavior, and regulatory context. It could add what the exact output fields look like beyond 'Article 57 reasons, inclusion date, triggered obligations', but for a screening tool this is reasonable. The batch nature reduces per-item complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the items array well. The description adds meaningful context: each item takes exactly ONE key among cas/ec/name with checksum validation, the pricing per item, the 200 cap, and empty/oversized batch behavior (400 error). This adds real value beyond the schema's basic array description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a very specific verb+resource: 'screen up to 200 substances in one call against the ECHA Candidate List of SVHC (REACH)' with one verdict per item by CAS, EC number or exact name. It clearly distinguishes itself from its sibling 'label_chem_svhc' (singular) by being the batch variant, and provides specific regulatory context (REACH Article 33, SCIP).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: 'Before your agent clears a BOM, a formulation or a supplier declaration for the EU market', and clarifies the batch use-case (up to 200 items in one call) which differentiates from the singular label_chem_svhc sibling. It also explains malformed items are flagged at position rather than failing the whole batch, and not-listed substances get explicit verdicts—useful guidance for expected behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_claims_checkCheck an EU nutrition or health claim wordingA

Before your agent puts a nutrition or health claim on an EU food label: is the proposed wording an authorised claim (exact legal wording + conditions of use), a non-authorised one (official rejection reason + EFSA opinion), or absent from the EU Register (Regulation (EC) 1924/2006)? Post the label wording (and optionally the nutrient); matching is strict-normalised (case, punctuation, spacing), exact or containment, never fuzzy - zero false positives. The Register carries the REJECTED claims a plain LLM validates by mistake. An absent wording returns the authorised claims for the nutrient plus a limit note (absence is neither authorisation nor prohibition - 'on hold' botanicals are not in the Register). Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/label-claims-check

ParametersJSON Schema
NameRequiredDescriptionDefault
wordingYesThe proposed label wording, required (an empty or punctuation-only wording = 400). Matched after strict normalisation (case, punctuation, HTML, spacing) - exact or containment, never fuzzy. Optional nutrient bounds the search to that nutrient's claims (a provided but empty nutrient = 400); omit it to scan the whole Register
nutrientYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It transparently discloses matching behavior (strict-normalised, never fuzzy, zero false positives), the 400 status for empty/punctuation-only wording, the absence limit note, and the 'on hold' botanicals caveat. It additionally discloses pricing ($0.01/call, first free) and links to docs. Only minor omissions: no stated auth requirements or rate limits explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with the purpose in the first sentence and is dense but well-organized. It front-loads the core decision and packs substantial information efficiently. It is slightly long with pricing/docs details, but those are arguably useful context for a paid tool; no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is conceptually complex (three-way outcome classification, strict matching rules, absence semantics) with no output schema and two params. The description covers the key behavioral aspects thoroughly: matching algorithm, rejection/approval/absence outcomes, errors, nutrient-bound behavior, and absence caveat. Given there's no output schema and no annotations, it does a strong job educating the agent on expected behavior and edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (the 'nutrient' param has no schema description). The description compensates well for the 'wording' param by detailing normalisation behavior and the empty-input 400. For 'nutrient', the description clarifies that providing a nutrient bounds the search, an empty nutrient returns 400, and omitting it scans the whole Register-adding value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-checking a claim-with a clear resource (EU nutrition/health claim wording) and explicitly distinguishes three outcomes: authorised, non-authorised (with rejection reason + EFSA opinion), or absent from the EU Register. It clearly differentiates from sibling 'label_claims_permitted' and 'label_chem_classify' tools by naming the regulatory framework (Regulation (EC) 1924/2006).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: before putting a nutrition/health claim on an EU food label. It also gives strong context on matching semantics (strict-normalised, exact or containment, never fuzzy, zero false positives) and warns about a common pitfall-the Register carries REJECTED claims that plain LLMs wrongly validate. It clarifies absence semantics ('on hold' botanicals are not in the Register).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_claims_permittedList a nutrient's authorised EU health claimsA

List the authorised EU nutrition and health claims for a given nutrient or substance (Regulation (EC) 1924/2006): what your agent may legally write on a food label. Pass the nutrient; get every authorised claim as published - exact legal wording, conditions of use, EFSA opinion and legislation. A known nutrient whose claims are all rejected returns an explicit empty list with the rejected count (not a silent gap); a nutrient absent from the Register returns an empty list with a limit note (absence is neither authorisation nor prohibition - 'on hold' botanical claims are not in the Register). The counterpart of /label/claims/check: check starts from a wording, permitted starts from the nutrient. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/label-claims-permitted

ParametersJSON Schema
NameRequiredDescriptionDefault
nutrientYesThe nutrient or substance to list authorised claims for, required (absent or empty = 400). Queried after strict normalisation (case, punctuation, spacing); the response echoes the normalised key. This is the entry key - no fuzzy search

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses several important behaviors: exact legal wording returned, conditions of use, EFSA opinion and legislation output, explicit empty-list handling for rejected claims, the 'on hold' botanical exclusion, and the pricing ($0.01/call, first free). It does not describe auth requirements or rate limits, but covers the key result semantics thoroughly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with a clear opening sentence, then edge-case behavior, then counterpart differentiation, then pricing. It is informative but somewhat long, with the pricing/docs details arguably better placed in structured metadata. Still, every sentence earns its place and it follows a logical flow from purpose to edge cases to differentiation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with rich edge-case documentation, the description is complete. It covers what the tool returns (exact wording, conditions, EFSA opinion, legislation), how it behaves for rejected vs absent nutrients, what's excluded (botanicals), and how it differs from its counterpart. No output schema exists, so the return-value documentation in the description compensates fully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sole parameter 'nutrient' is well-documented in the schema ('required, absent or empty = 400, strict normalisation, echoes normalised key, no fuzzy search'). The description adds the semantic context that this is the entry key for a claims lookup, reinforcing the schema's 'no fuzzy search' warning. With 100% coverage and a single parameter, the baseline is 3 but the description adds meaningful usage nuance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb+resource: 'List the authorised EU nutrition and health claims for a given nutrient or substance (Regulation (EC) 1924/2006): what your agent may legally write on a food label.' It clearly states what the tool does, identifies the regulatory basis, and distinguishes itself from the sibling tool label_claims_check by stating 'permitted starts from the nutrient' vs 'check starts from a wording.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly states when to use: pass the nutrient, get every authorised claim. Explicitly differentiates from the counterpart tool label_claims_check ('check starts from a wording, permitted starts from the nutrient'). Also explains edge-case behavior (rejected claims return empty list with count, absent nutrient returns limit note) so the agent knows how to interpret results across situations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_cosmetic_ingredientGet an EU cosmetic ingredient's regulatory verdictA

Before your agent clears an ingredient for an EU cosmetic label: is it prohibited (Annex II), restricted (Annex III), or authorised as a colorant (IV), preservative (V) or UV filter (VI) under Regulation (EC) No 1223/2009? By CAS, EC number, INCI name or exact chemical name - every published entry with its maximum concentration, conditions of use and the MANDATORY LABEL WORDING served word for word, versioned by amending regulation: the consolidated version in force at the queried date plus the upcoming change when a published but not-yet-applicable one modifies the entry. CosIng is a legally non-binding information tool: only the Annexes are authoritative, and any divergence is reported, never silently resolved. Absence from the Annexes is not an authorisation - the verdict says so explicitly. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/label-cosmetic-ingredient

ParametersJSON Schema
NameRequiredDescriptionDefault
casYesCAS number, checksum-validated. Provide exactly ONE key among: cas, ec (EC number, checksum-validated), inci (exact INCI name), name (exact chemical name). Zero or several keys = 400; bad checksum = 400. Identity resolved but absent from the Annexes = 200 not_listed (billed - absence is not an authorisation); identity NOT resolved (unknown to the Annexes and to CosIng) = 404, not billed
dateYesOptional date (YYYY-MM-DD, default today): serves the consolidated version in force at that date, not the latest. A date earlier than the oldest ingested version = 400 naming the bound (extrapolating a verdict would be factually wrong)
product_typeYesOptional: keeps only the conditions whose published scope covers that product type, PLUS the conditions not bounded by product type. Each entry reports conditions_omitted_by_product_type - nothing is hidden. Provided empty = 400

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It extensively discloses behavior: returns concentration, conditions, mandatory label wording, versioning by amending regulation, the consolidated version at a queried date, upcoming changes, and the legally non-binding nature of CosIng. It also states that divergence is reported and absence from Annexes is not authorization, plus pricing and docs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but information-dense. Every clause adds value: use case, legal scope, lookup identifiers, output contents, versioning, legal caveats, pricing, docs. The first sentence effectively front-loads the primary use context, and the structure flows from purpose to behavior to practical details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and lack of an output schema, the description provides a solid mental model of the response: every published entry with maximum concentration, conditions of use, mandatory label wording, and version information. It also covers important caveats (absence not authorization, non-binding CosIng, billing). It doesn't enumerate exact JSON fields, but it is sufficiently complete for an agent to know what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema descriptions are already rich: CAS/EC/INCI/name resolution, checksum validation, 400/404 behavior, date defaults, and product_type filtering. The tool description adds little parameter-specific detail beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and description clearly state the tool looks up an EU cosmetic ingredient's regulatory verdict under Regulation 1223/2009, specifying prohibited/restricted/authorised categories (Annexes II–VI). This distinguishes it from sibling tools like label_food_additive or label_chem_svhc by naming the exact domain and legal framework.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description opens with the exact use case: 'Before your agent clears an ingredient for an EU cosmetic label.' This gives clear context for when to invoke the tool. It does not explicitly name alternatives or exclusions, but the context is specific enough to avoid misselection among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_cosmetic_ingredient_batchScreen a cosmetic formulation against EU Annexes II-VIA

Before your agent clears a cosmetic formulation for the EU market: screen a whole INCI list - up to 200 ingredients in one call - against Annexes II to VI of Regulation (EC) No 1223/2009. One verdict per item (prohibited, restricted, authorised colorant/preservative/UV filter, or not listed) with the published entries, maximum concentrations, conditions and MANDATORY label wording served word for word, plus a summary count per verdict. A malformed item or an unresolved identity is flagged at its position instead of failing the batch; the input order is preserved but no conclusion is drawn from it (an INCI list's descending-concentration order is not exploited). This is not a formulation compliance verdict: no concentration in the finished product is computed. Price: $0.005 base + $0.005 × N items, max 200 (field "items") Docs: https://invoket.com/docs/api/label-cosmetic-ingredient-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesOptional date (YYYY-MM-DD, default today) the whole batch is evaluated at - a formulation is assessed at a single date. Earlier than the oldest ingested consolidated version = 400
itemsYesArray of ingredient keys screened in one settlement (an INCI list). Its length is priced per unit (base + N x unit), capped at 200; an empty or oversized batch = 400. Each item takes exactly ONE key among cas, ec, inci, name (checksum-validated for cas/ec). Order is preserved but never interpreted; no de-duplication
product_typeYesOptional, common to the batch: keeps only the conditions published for that product type plus the unbounded ones. Provided empty = 400

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It discloses error handling (malformed items flagged at position), order preservation, de-duplication behavior, pricing, maximum batch size, and the fact that concentration is not computed. This goes well beyond typical descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense with useful information. It front-loads the primary purpose and then covers limitations, output, and pricing. Each sentence adds value, though it could be slightly more streamlined. The structure with price and docs at the end is logical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately explains the return format (verdict per item with entries, concentrations, conditions, label wording, and summary count). It covers batch error behavior and limitations. It does not specify exact JSON field names, but that is acceptable for an API description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 pricing details and clarifies that 'items' is an INCI list with max 200 and that each item takes one key. It also explains the date evaluates the whole batch, which augments the schema without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'screen' with a clear resource: a whole INCI list against EU Annexes II-VI. It differentiates from sibling tools by emphasizing batch capability (up to 200 ingredients in one call) and explicitly states it is not a formulation compliance verdict.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states when to use: 'Before your agent clears a cosmetic formulation for the EU market' and sets limits (up to 200 ingredients). It implicitly contrasts with the singular tool by highlighting batch processing, and notes when not to use it (no concentration computation). It does not explicitly name alternative tools but provides sufficient context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

label_food_additiveCheck a food additive in an EU food categoryA

Before your agent validates a recipe, a food label or an import: is this additive authorised in this food category, at what maximum level and under which conditions (Union list, Regulation (EC) No 1333/2008, Annexes II and III)? By E number or exact published name, WITH a food category code - you get an authorised/not_authorised verdict with the maximum level, restrictions and footnotes served word for word ('quantum satis' as published, never converted), and via_group when the authorisation comes from a published group such as 'E 249 - 250'. WITHOUT a food category you get the inventory of categories where it is authorised and NO verdict: an additive has no status in the abstract. A not_authorised verdict is dated - the Union list is positive. Where the text bounds a line by a 'Period of application', the lines that apply at your date come first and each one carries in_force_at_date: an expired line is flagged, never dropped. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/label-food-additive

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesOptional date (YYYY-MM-DD, default today): serves the consolidated version in force at that date. Earlier than the oldest ingested version = 400 naming the bound
e_numberYesE number, template E + 3 or 4 digits + optional letter and roman numeral ('E 160a(i)'). Provide exactly ONE key among e_number and name (exact published name); zero or both = 400, off-template = 400 before any lookup. An E number unknown to the Union list = 404, not billed
food_categoryYesFood category code AS PUBLISHED ('08.3.2'; Annex III parts are exposed as 'III.1' to 'III.5'). Optional, but it changes the shape of the answer: WITH it you get a verdict plus authorisations[]; WITHOUT it you get NO verdict field at all and instead data.authorised_in {total, truncated, categories[] (code, name, via_group), capped at 100} - an inventory, never an 'authorised' claim in the abstract, since an additive has no status without a food category. A code outside the referential = 400 not billed; provided empty = 400

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full disclosure burden. It richly discloses exact behaviors: 'quantum satis' served word-for-word never converted, via_group for grouped authorisations, dated verdicts, in_force_at_date on lines within a Period of application with expired lines flagged never dropped. Slightly minor gap: doesn't explicitly state it's read-only or safe, but the 400/404/not-billed semantics imply safe query behavior. Very strong transparency overall.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded with the core purpose and use case. The first sentence establishes context and the key question; supporting detail layers in error handling, billing, and edge behaviors. Somewhat long but every clause earns its place given the complexity of the EU additive rules. Could be slightly tighter but justified by the domain complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param tool with no output schema and no annotations, the description is thorough. It covers input constraints, the two distinct output shapes, error codes and billing semantics, date-bound interpretation, and the positive-list framing. The only completeness pinch: it's a dense read, but it does address the pragmatic questions an agent would have (cost, errors, edge cases, 'quantum satis'). No output schema means description carries return-format explanation, which it does well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the bar for adding value is high. The description genuinely supplements the schema: it clarifies the exact e_number template with example 'E 160a(i)', explains the one-key-only constraint and off-template 400, elaborates the food_category AS PUBLISHED format with Annex III mapping, and details the shape shift (verdict+authorisations[] vs authorised_in inventory capped at 100). Adds meaningful meaning beyond parameter names and descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Check' a food additive in an EU food category, grounded in the Union list (Regulation 1333/2008). Clearly distinguishes from the label_chem_* siblings by focusing on additive authorisation verdicts rather than chemical classification or claims. The scope (Annexes II and III) and what you get back (verdict, maximum level, restrictions, footnotes) are explicitly stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Excellent when/when-not guidance: explicitly explains behavior WITH a food category vs WITHOUT one, states the 'provide exactly ONE key' rule, lists error conditions (400 for zero/both/off-template, 404 for unknown E number), and covers billing ($0.01, first call free). Alternative is implicitly different from label_chem_classify_batch by domain focus. Very strong context for agent decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

legal_articleCheck if a French law is in forceA

Before your agent cites, advises on or drafts against a French law: check the article is in force at a given date — consolidated text, status (in force / repealed / deferred) and validity dates, from the official Légifrance LEGI dataset. Covers 12 major French codes and statutes (civil, labor, commercial, tax/CGI and more). Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/legal-article

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesSlug of the French code or statute, resolved against the official Légifrance LEGI consolidated dataset (e.g. code-civil). Covered corpus: Code civil, Code du travail, Code de commerce, Code pénal, Code de la consommation, Code général des impôts (CGI), Code de la sécurité sociale, Code monétaire et financier, Code de l'environnement, Code de la propriété intellectuelle, Code des assurances, plus the Data Protection Act (loi 78-17)
dateYesDate at which the law is read, strict ISO calendar format YYYY-MM-DD (zero-padded: 2026-07-05, not 2026-7-5); optional, defaults to today
articleYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses it returns consolidated text, status, and validity dates, and notes pricing ($0.01/call, first call free) and a docs link. It doesn't describe pagination, rate limits, or the output format structure, but for a data-query tool the core behavioral traits are covered. A small deduction for not explicitly stating it's a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main description is a focused two-sentence block that front-loads the core function and then adds pricing and documentation. The pricing/docs/URLs are useful operational context that earns their place. No wasted sentences, though the pricing details could arguably be in structured metadata rather than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description explains input parameters well (code sliding, date format) and describes the return values at a high level (consolidated text, status, validity dates). The undocumented 'article' parameter is the main gap, and the description doesn't detail the output schema structure. Given no output schema exists and the context signals indicate moderate complexity, the description is reasonably complete but could specify article format expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67% (code and date documented, article with only a label). The description adds value by explaining the code parameter resolves against the Légifrance corpus with examples and the full covered list, and clarifies the date format (ISO YYYY-MM-DD, zero-padded). The article parameter remains undocumented in both schema and description — a gap. Since two of three parameters are well explained and the description enriches the coverage, this is above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is specific and action-oriented: 'check the article is in force at a given date' with clear scope including 'consolidated text, status (in force / repealed / deferred) and validity dates, from the official Légifrance LEGI dataset.' It clearly distinguishes from siblings (legal_deadline, legal_diff, legal_eu_act, legal_history, legal_transposition) by specifying this is the in-force status check tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear guidance on when to use it — 'Before your agent cites, advises on or drafts against a French law.' It names alternatives among siblings implicitly (the dated status check) and defines the corpus coverage (12 codes). It doesn't explicitly state when NOT to use it versus sibling legal tools, but the purpose is clear enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

legal_article_batchCheck if a list of laws is in forceA

Before your agent signs off a contract review or a due-diligence memo: check that up to 50 legal citations are still in force at a given date in one call — consolidated text, status and validity dates per reference, from the official LEGI (French law) and EUR-Lex (EU law) datasets. Covers 12 major French codes and statutes and key EU acts (GDPR, DSA, AI Act, MiCA and more). Price: $0.005 base + $0.005 × N items, max 50 (field "refs") Docs: https://invoket.com/docs/api/legal-article-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
refsYesArray of article references, French ({ code, article, date? }) and EU ({ celex or eli, article?, date? }, e.g. eli=reg/2016/679/oj or the full URI http://data.europa.eu/eli/reg/2016/679/oj) mixed freely. Covered corpus — French law (Légifrance LEGI): Code civil, Code du travail, Code de commerce, Code pénal, Code de la consommation, Code général des impôts (CGI), Code de la sécurité sociale, Code monétaire et financier, Code de l'environnement, Code de la propriété intellectuelle, Code des assurances, plus the Data Protection Act (loi 78-17); EU law (EUR-Lex): GDPR, eIDAS, the e-Commerce Directive, the DSM copyright Directive, DSA, DMA, AI Act, MiCA and NIS2

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the pricing model, the max of 50 items, the data sources (LEGI and EUR-Lex), and the consolidation behavior. However, it doesn't state whether the tool is read-only/safe, what happens on errors (e.g., invalid citation format), rate limits, or whether coverage gaps return errors vs empty results. For a commercial data tool this is partial transparency but doesn't cover failure modes or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the use-case ('Before your agent signs off...'), then pricing and docs link. The corpus enumeration is necessary detail given the schema's large coverage list. One minor note is the nested code/date/article structure in refs could benefit from clearer per-field guidance, but the overall structure is efficient and each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must explain return value expectations — it does so moderately by noting 'consolidated text, status and validity dates per reference'. The parameter format is well-specified with concrete EU URI examples. However, for a paid batch verification tool supporting mixed French/EU formats, it doesn't detail per-item error handling, partial-success behavior, or how date absence is interpreted (current date vs required date). Slightly more completeness would be warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, which sets baseline at 3. The description adds value by explaining the mixed French/EU reference format with concrete celex/eli examples (eli=reg/2016/679/oj or the full URI) and explicitly enumerating the covered codes and EU acts, which greatly aids correct parameter construction beyond the bare schema. Pricing formula using 'field refs' reinforces parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('check'), the resource ('up to 50 legal citations... in force'), the scope (French LEGI and EU EUR-Lex), and the consolidated output (status, validity dates, consolidated text). It clearly differentiates from siblings like legal_article (single) and legal_eu_act by emphasizing batch processing of up to 50 references in one call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong context ('Before your agent signs off a contract review or a due-diligence memo') establishing when to use this tool. It names the covered corpus (12 French codes + key EU acts) which helps an agent decide if a citation falls within scope. It doesn't explicitly say when to use legal_article (single) vs this batch version, though the 'up to 50 in one call' phrasing implies volume-based selection. The pricing model provides practical decision context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

medication_availabilityCheck a medication's shortage status (FR)A

Check a medication's availability before your agent orders or substitutes it: shortage reports from the French ANSM (data.ANSM) by CIS code or substance (INN/DCI) - status (rupture, risque_rupture, tension, remise_a_disposition, arret_commercialisation, or no_known_shortage), report dates, expected return and the official ANSM report URL. Honest by design: ANSM only records reported shortages, so the absence of a report is never a stock guarantee. French market scope: a US NDC key returns an honest FR-only coverage note. No account, no key, pay per call. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/medication-availability

ParametersJSON Schema
NameRequiredDescriptionDefault
cisYes8-digit French CIS code. Provide exactly ONE key among: cis, substance (INN/DCI name; dci= is a synonym), ndc (US product NDC - returns an honest FR-only coverage note). Zero or several keys = 400; malformed key = 400; well-formed CIS with no report = 200 with status no_known_shortage (billed - the absence of a report is the answer, never a stock guarantee)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden and delivers richly: 'Honest by design: ANSM only records reported shortages, so the absence of a report is never a stock guarantee' is an essential behavioral caveat. It also discloses billing behavior (absence-of-report responses are billed), market scope limitations, and the no-account/no-key access pattern. No contradiction with annotations since none exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is substantial but front-loads the core purpose in the first sentence, then layers scope, honesty caveat, and pricing. Some redundancy exists between the schema's CIS description and the tool description (both discuss NDC and 400 codes), but each serves a slightly different discoverability purpose. Overall efficient given the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with 100% schema coverage, the description fully compensates: it covers purpose, market scope, input alternatives, error behavior, billing semantics, honesty caveat, and provides documentation link. No output schema exists, but the description enumerates all possible status values, making the return shape predictable without one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but the description adds substantial value: it explains the exact input formats for cis, the synonym relationship (dci= substance), the NDC behavior (returns an honest FR-only coverage note), and the error semantics (zero/several keys = 400, malformed = 400, well-formed no report = 200). This significantly exceeds what the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource combination ('Check a medication's availability') with an explicit scope (French ANSM data) and lists the exact status values returned. It clearly distinguishes this from sibling medication tools (medication_generics, medication_report) by focusing on shortage/availability status reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('before your agent orders or substitutes it'), what inputs are accepted (CIS code or INN/DCI substance or NDC), and clarifies the French-only market scope with the US NDC caveat. Also mentions price and free trial tier, giving complete usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

medication_genericsFind a medication's generic group (FR)A

Find the French BDPM generic group of a medication before your agent substitutes or sources it: given a CIS code, exact name or DCI substance, returns the group's principle brand (princeps) and every equivalent generic, each with its role (princeps/generique), official name and pack-level public price and reimbursement rate when the BDPM publishes them. French (BDPM) scope: a US NDC key returns an honest FR-only coverage note. No account, no key, pay per call. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/medication-generics

ParametersJSON Schema
NameRequiredDescriptionDefault
cisYes8-digit French CIS code. Provide exactly ONE key among: cis, name (exact medication name, French BDPM scope - no country here), dci (substance INN/DCI name), ndc (US product NDC - returns an honest FR-only coverage note). Zero or several keys = 400; malformed key = 400; well-formed but not genericized = 200 with found:false (billed - the absence of a group is the answer)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that NDC returns an honest FR-only coverage note, that zero/multiple keys yield 400, malformed keys yield 400, and that well-formed-but-not-genericized returns found:false and is still billed. It also discloses pricing ($0.01/call, first daily call free) and no-account/no-key requirements, which are unusual behavioral traits an agent needs to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first phrase, then flows through scope, coverage constraints, and pricing. It is two substantial sentences plus a docs link, all useful. Minor redundancy exists between the description and the input schema (both discuss the cis/name/dci/ndc keys and edge cases), making it slightly longer than strictly necessary, but every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, no annotations, and a single parameter, the description compensates well by specifying return fields (princeps, role, name, pack price, reimbursement rate), error codes (400 vs 200), billing behavior, coverage scope, and pricing. The main gap is that it doesn't describe the exact JSON response shape or pagination, but for a single-input lookup tool this is adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (1 parameter, fully described). The description adds significant meaning beyond the schema by explaining the four mutually-exclusive keys (cis, name, dci, ndc), the exactness of each, the French BDPM scope for names, and error/edge-case behavior (zero or several keys = 400, malformed = 400, well-formed not genericized = 200 found:false). This substantially enriches agent decision-making about parameter selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource+scope: 'Find the French BDPM generic group of a medication before your agent substitutes or sources it.' It explicitly distinguishes from sibling medication tools (medication_availability, medication_report) by focusing on the generic group, princeps, role, price, and reimbursement rate, and by scoping to French BDPM.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly signals when to use it ('before your agent substitutes or sources it') and defines the French BDPM scope, explicitly stating a US NDC returns an FR-only coverage note. It does not explicitly name alternatives like medication_availability or medication_report, but the use-case framing ('before substituting or sourcing') provides clear context and exclusions (no US data).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

medication_interactionsCheck drug-drug interactions (ANSM)A

Check drug-drug interactions against the authoritative French ANSM thesaurus before your agent acts on a prescription or an order: post 2+ medications (CIS code, US NDC, INN/DCI substance or ANSM class) and get every published interaction between them - constraint level (contre_indication, association_deconseillee, precaution_emploi, a_prendre_en_compte), management advice and mechanism exactly as published by ANSM, plus honest coverage of anything that could not be compared. US drugs join via the INN substance bridge. No account, no key, pay per call. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/medication-interactions

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes2 to 50 items, each with EXACTLY one key: cis (8-digit French CIS), ndc (US product NDC, evaluated once resolved to INN substances - the FR-US bridge), dci (INN/DCI substance name), class (ANSM class label). Fewer than 2 items, more than 50 (every pair is evaluated, so the cost is quadratic - the 400 states the limit), several keys on one item or a malformed key = 400; a well-formed list with no interaction = 200 with interactions:[] (billed - no known interaction between the evaluated pairs IS the answer)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It discloses billing ($0.01/call, first free), no account/key required, the INN bridge for US drugs, the constraint levels returned, and even the 200/400 response semantics. The phrase 'honest coverage of anything that could not be compared' indicates it reports uncompared items, a notable behavioral trait.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is multi-sentence but dense, leading with the core purpose and then covering input, output, pricing, and a docs link. Each sentence adds key information; minor redundancy with the schema (e.g., '2+ medications' vs '2 to 50 items') is acceptable and does not bloat the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (billing, pair evaluation, error cases, no output schema), the description covers the essential behavior: return values, cost model, error behavior, and the US bridge. It also links to full docs, making it comprehensive for a drug-interaction API.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes the items array, key types (cis, ndc, dci, class), and validation rules with 100% coverage. The description adds little new about parameters beyond restating that 2+ medications can be posted; its extra value lies in output semantics and pricing, not parameter semantics. Baseline 3 applies per the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks drug-drug interactions against the authoritative French ANSM thesaurus, with a specific use case ('before your agent acts on a prescription or an order'). It lists input types (CIS, NDC, DCI, class) and output details (constraint levels, management advice, mechanism), distinguishing it from sibling medication tools focused on availability, generics, or reports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly frames when to use the tool: 'before your agent acts on a prescription or an order'. It does not name alternatives, but the sibling tools (medication_availability, medication_report, medication_generics, medication_resolve) are clearly for other medication tasks, so the usage context is clear. No explicit when-not-to-use is given, which would warrant a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

medication_reportGet a consolidated medication reportA

One consolidated medication report before your agent acts on a prescription or an order, by French CIS code or US NDC: official BDPM identity with pack-level price and reimbursement, INN-normalized substances, BDPM generic group, ANSM shortage status, and ANSM-thesaurus drug-drug interactions between the subject and an optional co-medication list (with=, comma-separated CIS/NDC/DCI). Every section carries its own source and date; honest coverage. No account, no key, pay per call. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/medication-report

ParametersJSON Schema
NameRequiredDescriptionDefault
cisYes8-digit French CIS code of the subject. Exactly ONE key among cis and ndc (US product NDC); zero or both = 400; well-formed but unknown = 200 with honest empty sections (billed); an NDC subject gets its FR-only sections flagged in coverage, never an error
withYesOptional comma-separated co-medication list, at most 50 elements (beyond, a 400 stating the limit - same quadratic pairing cost as /medication/interactions), auto-typed by closed rules: 8 digits = CIS, digits+dash = NDC (malformed = 400, never requalified), else INN/DCI name. Pass the parameter ONCE: with=a,b - a repeated with=a&with=b is a 400 restating the comma form. Subject-centered: pairs within the with list are not assessed - use /medication/interactions

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations were provided, so the description carries the full burden of behavioral disclosure. It does well: discloses billing behavior (pay per call, first call free), notes that unknown codes return 200 with honest empty sections rather than errors, explains that FR-only sections get flagged in coverage for NDC subjects, and states every section carries its own source and date. It stops short of describing exact response structure, but given the richness provided, this is strong disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary purpose in the first sentence and packs substantial operational detail into the schema parameter descriptions. The main body is telegraphic yet comprehensive. It could be slightly tighter — the inline Notes/style asides and pricing line are useful but could be formatted as separate structured lines. Still, every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, 100% schema coverage, and no output schema, the description is quite complete: it covers the when-to-use, identifier formats, co-medication rules, billing, error semantics, and honest coverage guarantees. There's no output schema to describe, and the tool returns consolidated structured data whose sections are enumerated in the description. Slightly more detail on the response format would push it to 5, but it's not necessary given the section enumeration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 significant value beyond the schema: it explains the one-key exclusivity between cis and ndc (including the 400 case for zero/both), the 'with' parameter's auto-typing rules (8-digit=CIS, digits+dash=NDC, else INN/DCI), the 50-element limit, the pass-once requirement (with=a&with=b is a 400), malformed=400 behavior, and the subject-centered pairing rule. This substantially compensates beyond the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource: 'Get a consolidated medication report' before acting on a prescription or order. It enumerates the exact content (BDPM identity, price, reimbursement, INN substances, generic group, shortage status, DDI) and distinguishes from siblings like medication_availability and medication_generics by specifying the consolidated scope and identifiers used (CIS/NDC).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it ('before your agent acts on a prescription or an order'), specifies the identifier formats (French CIS or US NDC), and gives a detailed co-medication note pointing to /medication/interactions for pairs within the with list — an explicit alternative. It also discloses error-handling expectations (400 vs 200 with honest empty sections) and pricing/pay-per-call context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

medication_resolveResolve a medication (FR + US)A

Resolve a medication before your agent acts on a prescription or an order: official identity from the French BDPM registry (ANSM/HAS) by CIS code, exact name or DCI substance - authorization and marketing status, active substances normalized to INN (the FR-US bridge), pack-level price and reimbursement rate, generic group. Same endpoint resolves US drugs by NDC or name (openFDA/RxNorm). No account, no key, pay per call. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/medication-resolve

ParametersJSON Schema
NameRequiredDescriptionDefault
cisYes8-digit French CIS code. Provide exactly ONE key among: cis, ndc (US product NDC), dci (substance INN/DCI name, pure local computation), name (exact medication name, requires country=FR|US). Zero or several keys = 400; malformed key = 400; well-formed but unknown = 200 with found:false (billed - the absence is the answer)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses behavior well: pricing per call, free trial, no account/key required, and the specific data returned (INN normalization, price/reimbursement, generic group). It stops short of describing error response structure, but the schema covers malformed-key behavior. Overall, it provides substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but remains focused. It leads with the primary purpose, then specifies supported inputs and outputs, and ends with pricing and a docs link. Every sentence adds value, though the pricing/trial lines could be seen as slightly tangential to invocation correctness. Overall, well-structured and not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is comprehensive: it states what the tool returns (authorization status, INN, price, generic group), how it handles FR/US identifiers, and adds billing and trial details. It covers the key facts an agent needs to decide to call the tool and interpret the result, making it complete in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'cis'. The property description already explains the allowed keys (cis/ndc/dci/name) and error handling. The tool description adds only a high-level mention of 'by CIS code, exact name or DCI substance', which does not exceed what the schema already states. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Resolve') with a clear resource ('a medication') and details the scope (FR and US registries). It enumerates concrete outputs (authorization status, INN normalization, pricing, generic group) and distinguishes itself from sibling medication tools like medication_availability and medication_interactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using it 'before your agent acts on a prescription or an order', providing a clear contextual trigger. It also notes that the same endpoint resolves both FR and US drugs, implying dual-usage. However, it does not explicitly mention when to use alternative medication tools or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

phone_validateValidate a phone number offlineA

Before your agent stores or messages a phone number: validate and normalize it offline — E.164 formatting, region, national format and line type from Google's libphonenumber metadata, no network call Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/phone-validate

ParametersJSON Schema
NameRequiredDescriptionDefault
numberYes
countryYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that validation happens offline (no network call), which is useful behavioral context. However, it doesn't state what happens on invalid numbers (response shape, error behavior), whether normalized output replaces the input, or specifics about the return format beyond listing fields. The pricing/cost info is helpful but doesn't cover behavioral edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient and front-loaded with the primary purpose and use case. The pricing and docs info is useful supporting detail. It's a single focused paragraph without redundancy. Slightly could be tightened by removing the pricing block from the description proper, but it's not excessive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only 2 parameters and no output schema, the description covers the core function reasonably well. However, the 0% schema coverage means the description should more explicitly document parameter formats (what 'country' means, what phone number format is expected on input). The absence of any parameter-format guidance is the main gap preventing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 for the two parameters (number, country). The description mentions 'country' implicitly via region detection and 'number' via phone number context, but it doesn't explicitly define what formats each parameter should take (e.g., ISO country code vs country name, whether number needs country code or just digits). This is a partial but not complete compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: validates and normalizes a phone number offline. It specifies the verb (validate/normalize), the resource (phone number), and the concrete outputs (E.164 formatting, region, national format, line type) based on libphonenumber metadata. The purpose is specific and distinguishable from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Before your agent stores or messages a phone number: validate and normalize it.' This tells the agent exactly when to use the tool. It also notes there's no network call, implying it's appropriate for offline/quick validation scenarios. While it doesn't name specific alternative tools, its context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

platform_infoInvoket connection & discovery statusA

Free tool: report the configured gateway origin, the number of discovered endpoints, the discovery snapshot freshness and whether the last refresh succeeded. Use it to diagnose an empty tool list (a failed discovery reports lastError here).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full behavioral burden. It discloses that the tool is free (no cost), is a read-only diagnostic, reports configuration plus discovery health, and surfaces lastError on failure. It accurately conveys the tool is safe, non-destructive, and what failure reporting looks like. The claim that it diagnoses empty tool lists adds valuable behavioral context beyond the name/title.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, information-dense sentence with a clear leading signal ('Free tool:') and a trailing diagnostic use case. Compact and front-loaded with the most salient facts. Slightly verbose with the parenthetical example, but it materially aids usage, so not wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a diagnostic tool with zero parameters and no output schema, the description is appropriately complete. It explains what the agent will receive and how to interpret it (empty tool list diagnosis). It doesn't enumerate exact response field names, but that specificity is not required for a zero-param diagnostic tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters, which per the rubric earns a baseline of 4. No parameter documentation is needed since the input schema is empty and coverage is complete. The description's mention of reported fields (gateway origin, endpoint count, snapshot freshness, last refresh) effectively documents the tool's informative output despite the empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool reports gateway origin, endpoint count, snapshot freshness, and last-refresh success. Specific verb 'report' plus explicit list of four pieces of diagnostic info. It differentiates itself as a diagnostic/status tool distinct from discovery tools like search_endpoints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use it to diagnose an empty tool list, with a concrete example (failed discovery reports lastError). Clear context for when to invoke. Doesn't mention explicit when-not cases or alternatives, but the 'Free tool' prefix and diagnostic framing provide adequate usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preflight_paymentPre-flight a bank transfer before you send itA

Run every check on a bank transfer before your agent executes it, in one call: IBAN validity, bank and BIC from national registries, SEPA scheme reachability from the EPC register, sanctions screening of the bank and of its jurisdiction (OFAC, EU, UN, FATF), and screening of the beneficiary name against the OFAC, EU and UN designation lists. Returns a verdict - stop, review, insufficient_coverage, ok - with every reason attached to its block and its dated source. Price: $0.05 per call First call each day free (trial). Docs: https://invoket.com/docs/api/preflight-payment

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYesThe beneficiary IBAN, up to 64 characters (separators tolerated). A structurally invalid IBAN is a USEFUL answer: HTTP 200 with a motivated 'stop', not an error
include_weakYesWhether weak name matches count towards the verdict; default false. Same semantics as /screen/entity: it changes only the verdict, weak matches are returned either way
beneficiary_nameYesName of the beneficiary, 2 to 200 characters, screened against the designation lists exactly as GET /screen/entity does, except that only person and entity matches can drive the verdict: a designated vessel or aircraft sharing the name is reported, never a 'stop'. Optional - but WITHOUT it the verdict can never be 'ok': the beneficiary was not looked at, and an 'ok' would read as a green light on them

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so excellently. It discloses that an invalid IBAN returns a 'stop' verdict with HTTP 200 (not an error), that weak matches are returned regardless of verdict setting, that designated vessels/aircraft sharing a name are reported but never trigger a 'stop', and that omitting beneficiary_name makes 'ok' impossible. It also discloses pricing ($0.05) and the daily free trial. This is rich behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is detailed but patchy in structure: two dense sentences covering the core functionality are followed by pricing, docs link, and then a third long sentence on beneficiary_name semantics. The beneficiary_name nuance could be tighter, though it's all valuable information. The pricing and docs lines are useful but break the flow slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema and no annotations, the description is comprehensive: it defines the full verdict set (stop, review, insufficient_coverage, ok), explains the output structure (reasons attached to blocks with dated sources), handles edge cases (invalid IBAN, weak matches, designated vessels), discloses pricing, and links to docs. For a 3-param no-schema tool, this is remarkably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 meaningfully adds beyond the schema: it explains that a structurally invalid IBAN is a useful answer rather than an error, and clarifies the nuanced rationale for beneficiary_name being optional-but-affecting-verdict. It also explains the include_weak semantics link to /screen/entity. This earns a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a concrete verb ('run every check') on a specific resource (bank transfer) and enumerates the exact checks performed (IBAN validity, BIC, SEPA reachability, sanctions, beneficiary screening). It clearly distinguishes from siblings like iban_screen or screen_entity by describing the comprehensive pre-flight aggregation scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states it is a pre-flight before executing a transfer, giving clear context for when to use it. It references how beneficiary_name semantics align with /screen/entity, and notes the verdict matrix. However, it doesn't explicitly state when NOT to use this vs alternatives like iban_screen or screen_entity, relying on the scope difference to imply it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

preflight_supplierPre-flight a supplier before you pay itA

Run every check on a supplier before you onboard, pay or invoice it, in one call: identity and status (INSEE Sirene or GLEIF), BODACC insolvency and deregistration announcements, live EU VAT validation (VIES), Peppol e-invoicing reachability, the declared control chain, and OFAC/EU/UN sanctions screening of both the company and its ultimate parent. Returns a verdict - stop, review, insufficient_coverage, ok - with every reason attached to its block and source. Price: $0.05 per call First call each day free (trial). Docs: https://invoket.com/docs/api/preflight-supplier

ParametersJSON Schema
NameRequiredDescriptionDefault
sirenYes9-digit SIREN (Luhn-checked). Give EXACTLY ONE entity key, 'siren' or 'lei' (20 characters); zero or two is a 400. Both keys pre-flight the same company: a 'lei' whose GLEIF record declares an existing SIREN reopens the French blocks (events, Peppol, derived VAT), stated in query.resolved_siren; a foreign entity gets them as 'not_applicable'. Optional: 'iban' adds the bank block, 'vat_number' replaces the derived one. A well-formed key unknown to the register is a 404, unbilled - no empty pre-flight is billed
screen_parentYesScreen the ultimate parent against the sanctions lists too (default true). False makes that block 'not_requested', which does NOT block an 'ok': your explicit choice is not a coverage gap. WARNING: a sanctions hit on the ultimate parent is a 'stop', so false can turn a stop or a review into an 'ok'. When a parent IS declared, the response says so: verdict_reasons then carries a non-blocking 'parent_screening_skipped_by_caller' naming the parent left unscreened - an 'ok' with a non-empty verdict_reasons. Not knowing whether a parent exists is different - that is 'unavailable', and it does block 'ok'

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the return structure (verdict with every reason attached to its block/source), the verdict vocabulary (stop, review, insufficient_coverage, ok), pricing ($0.05/call, first daily free), billing behavior (no charge on 404 for malformed/unknown keys), and the 'no empty pre-flight is billed' guarantee. The schema adds behavioral nuance about parent-screening skip semantics. This is a rich behavioral disclosure, though it doesn't spell out throttling or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a well-structured single paragraph followed by clear pricing and docs lines. It front-loads the purpose and check list, then the verdict output, then pricing. Every sentence earns its place and the schema carries the detailed parameter nuance. It is dense but efficient; slightly long, yet justified given the breadth of checks and output semantics it must convey.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex aggregation tool (8 check categories, multi-source) with a two-parameter schema and no output schema. The description adequately covers what checks run, the verdict output structure, pricing, and billing edge cases. The schema compensates for parameter-level detail. Given no output schema exists, the description's note that reasons attach to blocks/sources is reasonably complete, though it could say a bit more about the output format of each block.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already carries very detailed parameter descriptions. The description adds value by stating the verdict vocabulary and the overall flow, and by tying the verdict semantics to the parameter behavior described in the schema. The schema itself contains the entity-key exclusivity rules, resolved_siren reopening behavior, not_applicable handling, and the parent-screening warning—all highly informative. Given the schema already documents params thoroughly, the description's marginal addition is modest but not nil.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb+resource ('pre-flight a supplier before you onboard, pay or invoice it') and enumerates the full scope of checks in one call (INSEE/GLEIF identity, BODACC insolvency, VIES VAT, Peppol, control chain, sanctions). It distinguishes itself from sibling tools like company_events, company_peppol, company_vat, and screen_entity by framing itself as the aggregate 'run every check in one call' orchestration tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description is explicit about the temporal trigger ('before you onboard, pay or invoice it'). The input schema adds usage context about exactly-one entity key (siren or lei), and the 'well-formed key unknown to register = 404, unbilled' detail guides error handling. However, it doesn't explicitly name alternatives for when the user wants a single check rather than the full suite, though the sibling list implies per-check tools exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_addressScreen a crypto address against sanctions listsA

Before your agent sends funds to a crypto address: check it against the sanctioned addresses published by OFAC (SDN and Consolidated) AND by the EU financial sanctions list - multi-list, where free feeds are OFAC-only - returning the designated entity, its programmes and its designation date behind every hit. Bitcoin, EVM, Tron, Solana and Monero. No transaction analysis, no clustering, no derived addresses, no risk score. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/screen-address

ParametersJSON Schema
NameRequiredDescriptionDefault
chainYesOptional family: 'bitcoin', 'evm', 'tron', 'solana' or 'monero'. Given, it is LAW - an address that does not have that family's shape is refused (400, unbilled), never reinterpreted as another family. Omitted, the family is inferred from the shape, and the answer says so in chain_family_source. 'other' is never inferred: outside the five named families, a value is an address only if a list publishes it verbatim, otherwise 400 UNRECOGNIZED_ADDRESS_FORMAT - unbilled, because a password or a misplaced IBAN must not be billed as a verdict
addressYesCryptocurrency address to screen, up to 128 characters (internal whitespace is collapsed - an address copied out of a PDF carries some). Compared on a normalized form whose rule the chain family dictates: EVM lowercased with 0x enforced, base58 case PRESERVED (it is significant), bech32 lowercased

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses billing behavior (unbilled on 400), shape-law refusal, normalization rules (EVM lowercased, base58 case-preserved, bech32 lowercased), whitespace collapsing, chain inference behavior with chain_family_source, and the 12-char limit. This is substantial behavioral detail. Loses a point for not disclosing the response format/fields beyond entity/programmes/date, though it does name those.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the critical usage trigger ('Before your agent sends funds'), then capabilities, then exclusions, then pricing. The parameter descriptions are dense but every sentence earns its place - the whitespace collapse, normalization rule, and unbilled-400 semantics all justify their length. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param tool with 100% schema coverage and no output schema, the description is quite complete: covers when to use, safety semantics, normalization, billing, list sources, and returned fields. It doesn't describe the output schema structure in detail, but with no output schema available and the returned data (entity/programmes/date) named in the description, this is well-covered for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, which sets the baseline at 3. But the description adds substantial value beyond the schema: the 'Given, it is LAW' contract, the chain_family_source output reference, the unbilled-400 behavior, and the price. The address parameter is further enriched with normalization specifics and whitespace-collapse. This exceeds baseline meaningfully, though the schema alone was already strong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('screen') + resource (crypto address) + clear scope (sanctions lists from OFAC SDN/Consolidated AND EU). It explicitly distinguishes from sibling tools like iban_screen, screen_entity, and various climate tools. The 'No transaction analysis, no clustering, no derived addresses, no risk score' line clearly delimits what the tool does NOT do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit 'when to use': 'Before your agent sends funds to a crypto address: check it against the sanctioned addresses'. It lists exclusions (no analysis/clustering/risk score) and names the alternative distinction (free feeds OFAC-only vs multi-list). 'other is never inferred' and 'a password or a misplaced IBAN must not be billed' gives precise boundary behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_address_batchScreen a list of crypto addressesA

Before a payout run or a sweep: check up to 500 crypto addresses in one call against the sanctioned addresses published by OFAC (SDN and Consolidated) AND by the EU financial sanctions list - multi-list, where free feeds are OFAC-only - each hit carrying the designated entity, its programmes and its designation date. A malformed address is flagged at its position instead of failing the batch. No transaction analysis, no clustering, no risk score. Price: $0.005 base + $0.005 × N items, max 500 (field "items") Docs: https://invoket.com/docs/api/screen-address-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of addresses screened in one settlement. Its length is priced per unit (base + N x unit), capped at 500; an empty or oversized batch is a 400, never charged. Each item takes an 'address' and an optional 'chain' that is law for THAT item. A malformed or unrecognizable address yields {error, code} at its position without failing the batch - the codes are the single endpoint's, MISSING_PARAMETER, INVALID_INPUT and UNRECOGNIZED_ADDRESS_FORMAT

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses key behaviors: multi-list coverage, malformed address handling at item level, pricing formula, max 500 limit, and non-included features. This goes beyond a minimalist description and gives the agent operational expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured, leading with use case then details. Every sentence adds operational or pricing detail; the docs link is a bonus. Slightly long but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers what a hit contains (entity, programmes, designation date), error behavior, pricing, and list sources. It is sufficient for an agent to select and invoke the tool correctly, including handling edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value by explaining batch pricing per item, the 500 cap, and the optional 'chain' field per item (not shown in schema). It also describes error codes for malformed items, enriching parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('screen') and resource ('crypto addresses'), with clear scope: batch up to 500 addresses against OFAC and EU sanctions lists. It distinguishes from single-address sibling by highlighting batch size and multi-list coverage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context ('Before a payout run or a sweep') and exclusions ('No transaction analysis, no clustering, no risk score'), which implies when not to use. Does not explicitly name alternatives like screen_address, but the batch context and exclusions sufficiently guide usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_entityScreen a name against sanctions listsA

Before your agent onboards a counterparty, signs a contract or releases a payment: screen a company or person name against the official designation lists in full - OFAC SDN and Consolidated, the EU financial sanctions list, the UN Security Council list - 26,666 entities with their aliases, programmes and designation dates. Deterministic name matching, every hit sourced to the list that published it. PEP screening, adverse media and transaction analysis are not covered. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/screen-entity

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesOptional filter, one of 'person', 'entity', 'vessel', 'aircraft' - the four kinds the lists publish. Vessels (1516) and aircraft (344) are screened by DEFAULT alongside persons and entities, and their names are often common words (HERMES, VICTORIA, NEPTUNE), so a hit here may be a designated ship rather than a company: read 'kind' on each match. A filter only ever REMOVES candidates, and only on data the list published in a comparable form: an entity that publishes nothing, or publishes its country in plain words, stays a candidate - a false negative costs more than one candidate too many
nameYesCompany or person name to screen, 2 to 200 characters once whitespace is collapsed. Matched against every name each list publishes - primary names and aliases, strong and weak. No edit distance and no phonetics: matching is deterministic and its type is named in the answer
countryYesOptional ISO 3166-1 alpha-2 filter on the country published by the list (nationality or place of registration)
include_weakYesWhether weak matches (an alias the source itself flags as weak, or a partial token overlap) count towards the verdict; default false. It changes ONLY the verdict: weak matches are always returned in hits[], so you can judge what was set aside for you

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that matching is deterministic (no edit distance, no phonetics), that weak matches are always returned in hits[], and that the 'kind' filter only removes candidates on comparable data. It also explains pricing ($0.01/call) and that the first call daily is free, plus links to docs. This is substantial behavioral context; it loses a point only for not describing the output/response structure since there's no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the when-to-use guidance in the first sentence, followed by scope, then limitations, then pricing. The kind-parameter note is detailed but rambles slightly ('a false negative costs more than one candidate too many' is a somewhat discursive justification). Overall efficient, but the kind explanation could be tightened; the pricing and docs info add real value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with no output schema and no annotations, the description is rich: it covers scope, exclusions, matching semantics, parameter behaviors, pricing, and docs. The one gap is that it doesn't describe the response/return format (though there's no output schema to rely on), and it could clarify the verdict logic more. Given the complexity of sanctions screening, this is near-complete but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 4 parameters. The description does add meaningful value beyond the schema: it explains the default screening behavior (vessels/aircraft screened by default), the false-negative-cost tradeoff of the kind filter, name character limits, and the include_weak verdict-only effect. However, since schema coverage is complete, the baseline of 3 applies, and while the added detail is genuinely useful, it doesn't push to a 4 because the description's param explanations largely complement rather than transform the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('screen a company or person name against the official designation lists') and clearly states the tool's scope: OFAC SDN/Consolidated, EU financial sanctions, UN Security Council - 26,666 entities. It explicitly notes what it does NOT cover (PEP screening, adverse media, transaction analysis), which distinguishes it from siblings like screen_address and iban_screen.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening sentence gives explicit when-to-use guidance: 'Before your agent onboards a counterparty, signs a contract or releases a payment.' It also explicitly names what's NOT covered (PEP screening, adverse media, transaction analysis), which signals when to avoid the tool. The kind parameter guidance explains when filtering by kind is appropriate and warns about its limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_entity_batchScreen a list of names against sanctions listsA

Before onboarding a supplier book or running a payout list: screen up to 200 company or person names in one call against the official designation lists in full - OFAC SDN and Consolidated, the EU financial sanctions list, the UN Security Council list - one sourced verdict per name, with aliases, programmes and designation dates. A malformed item is flagged at its position instead of failing the batch. PEP screening, adverse media and transaction analysis are not covered. Price: $0.005 base + $0.005 × N items, max 200 (field "items") Docs: https://invoket.com/docs/api/screen-entity-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of names screened in one settlement. Its length is priced per unit (base + N x unit), capped at 200; an empty or oversized batch is a 400, never charged. Each item takes a 'name' (2 to 200 characters) plus the same optional filters as the single endpoint - 'kind' ('person', 'entity', 'vessel' or 'aircraft'), 'country', 'birth_year'. A malformed item yields {error, code} at its position without failing the batch
include_weakYesWhether weak matches count towards the verdict, for the WHOLE batch; default false. It is a caller policy (what you count as a signal), not a property of one name. Weak matches are returned in hits[] either way

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does an excellent job. It discloses error handling ('A malformed item is flagged at its position instead of failing the batch'), output details ('one sourced verdict per name, with aliases, programmes and designation dates'), limitations (exclusions listed), and even pricing and maximum batch size. This is comprehensive for a screening tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with a concrete use case ('Before onboarding a supplier book or running a payout list'). Every sentence adds value: purpose, list coverage, error behavior, exclusions, pricing, and docs link. It is concise for a tool with batch complexity, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description clearly explains what is returned (verdicts with aliases, programmes, designation dates) and covers error handling, batch limits, pricing, and exclusions. It also provides a documentation link for further details. Given the tool's complexity, this description is complete and self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 100% of parameter descriptions, including pricing, validation, and optional filters for both 'items' and 'include_weak'. The description adds no new parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('screen') and resource ('names against sanctions lists'), with explicit scope ('up to 200 company or person names in one call') and details about the specific lists (OFAC, EU, UN). It clearly distinguishes itself from the sibling tool 'screen_entity' by emphasizing the batch capability and the one-call aspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context ('Before onboarding a supplier book or running a payout list') and clearly states exclusions ('PEP screening, adverse media and transaction analysis are not covered'), guiding the agent on when not to use this tool. It also implies the alternative to single-name screening by highlighting the batch nature.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_endpointsSearch Invoket endpointsA

Free tool: full-text search over the discovered Invoket catalog. Returns the matching MCP tool names with their price, free-trial flag and docs link, so you can go from an intent to the right paid tool. No payment, no network call.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesFree-text query matched (case-insensitively, all terms must appear) against each endpoint's name, path, title, description and tags. Empty to list every endpoint.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It explicitly states no payment and no network call (important behavioral facts for a meta-tool searching a paid catalog), and discloses returns (tool names, price, free-trial flag, docs link). It doesn't mention pagination or result limits, but covers key operational traits well for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly-written sentences: what it does, what it returns, and its free/no-network nature. Zero filler words, each sentence earns its place. Excellent front-loading of the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter query tool with no output schema, the description covers what it returns, its free nature, and its query matching semantics. It could note return format details or result ordering, but for a catalog search tool this is reasonably complete. Simple tool, proportionate documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description reinforces the query parameter semantics (free-text, case-insensitive, all-terms match, empty-to-list). While the description confirms the query behavior isn't just elided by the schema, it adds minimal extra value beyond what the schema already documents. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this is a full-text search tool over the Invoket catalog, returning MCP tool names with price, free-trial flag, and docs link. It uses a specific verb (search) and resource (Invoket catalog), and distinguishes itself from sibling tools by its meta-search role over the catalog itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains its purpose as going 'from an intent to the right paid tool' and explicitly discloses it's free with no payment/no network call, which helps an agent understand its low-risk nature. However, it doesn't explicitly name alternative search/comparison tools or provide when-not-to-use guidance against specific siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_reviewSend feedback to InvoketA

Free tool (no payment, no auth): report a gap, a bug, a missing case, a data gap or a pricing concern about Invoket. Returns the acknowledgement id. Never charges.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoOptional. The endpoint this is about, e.g. "/iban/screen"; omit for general platform feedback.
contextNoOptional structured context.
messageYesRequired. Free-text description of the feedback (up to 4000 characters).
categoryYesRequired. The kind of feedback being reported.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it's free, requires no auth, returns an acknowledgement id, and never charges — good transparency about cost side effects. However, it does not describe what happens after submission (e.g., persistence, review process, response format details beyond the id) or any 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences, fully front-loaded with purpose and cost/safety disclosure. Zero wasted words; every clause (free, no auth, returns id, never charges) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param feedback tool with 100% schema coverage and a nested context object, the description plus schema adequately cover purpose, categories, and return. The main gap is no explanation of what the acknowledgement id means or broader submission behavior, but this is minor for a simple feedback tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters, so baseline is 3. The description adds value by pre-announcing the acknowledgement-id return and confirming no payment. It doesn't add per-parameter detail, but the schema is already descriptive (category enum, target with example, maxLengths). Given high coverage, the description adds marginal value above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource (submit review / send feedback) with specific purpose: report a gap, bug, missing case, data gap, or pricing concern about Invoket. The description distinctly frames this as a feedback channel, distinguishing it from the many data-lookup sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States what kinds of feedback to submit (bugs, gaps, pricing) but does not explicitly say when NOT to use it or name alternatives. However, given the sibling set are all data/inquiry tools with no obvious alternative feedback channel, the guidance is reasonably clear. The 'never charges' line disambiguates it from billing tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vehicle_co2Get a European vehicle's type-approval CO2A

Before your agent prices, imports or compares a European vehicle: get its type-approval CO2 emissions and technical characteristics — WLTP g/km with its dispersion, fuel, engine capacity, power and mass — from the official EU CO2 monitoring data (Regulation (EU) 2019/631, new registrations 2018-2022), keyed by type-approval number or by make, model and year. Every answer states the precision it was matched at Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/vehicle-co2

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesMake of the vehicle (e.g. 'Renault'); short forms and member-state spellings are folded ('VW' and 'VOLKSWAGEN VW' both reach VOLKSWAGEN). Use either this approximate key — make, model and year, all three required together — or the precise one: 'type_approval' (the EU type-approval number, optionally narrowed by 'variant' and 'version'). Mixing the two keys is a 400
yearYesRegistration year (YYYY) within the ingested window; a year outside it is a 404 whose message names the years actually served, never a silent miss
modelYesCommercial name as reported to the EU registry (e.g. 'Clio'); case and accents are folded. Required together with 'make' and 'year'

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose pricing ($0.01 per call, first call daily free), doc URLs, match-precision disclosure in every answer, and specific error behavior (400 for mixed keys, 404 naming served years for out-of-range years). It lacks some detail on exact return shape or rate limits, but the coverage of error semantics and precision behavior is substantially above typical descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that front-loads the purpose and usage trigger, then packs additional behavioral details (pricing, docs, precision disclosure, dual-key options) without redundancy. Every sentence contributes value; pricing and doc URL in the same block serve as useful operational context. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 params fully documented in the schema, no output schema required, no nested objects or enums, and no annotations, the description compensates comprehensively. It covers purpose, use context, keying strategies, error semantics, pricing, precision behavior, and data provenance. For a relatively simple retrieval tool, this is thorough and self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, giving a baseline of 3. The description adds meaningful enrichment beyond the schema: it explains the dual-key alternatives, folding behavior ('VW' and 'VOLKSWAGEN VW' map to VOLKSWAGEN, case/accents folded), which parameters are required together, and non-obvious error semantics per key. This goes beyond what the raw schema documents, earning a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves type-approval CO2 emissions and technical characteristics for European vehicles from official EU monitoring data. It names the specific data source (Regulation (EU) 2019/631), the fields returned (WLTP g/km, dispersion, fuel, engine capacity, power, mass), and keying options (type-approval number or make/model/year). This distinguishes it well from siblings like vehicle_tax, vehicle_critair, vehicle_vin_decode, and vehicle_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening line explicitly frames when this tool should be invoked: 'Before your agent prices, imports or compares a European vehicle'. It also explains the two mutually exclusive keying approaches (approximate make/model/year vs precise type_approval), warns that mixing keys returns a 400, and clarifies year-out-of-range results in a named 404. This is strong, actionable guidance for an agent deciding between this and the other vehicle_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vehicle_critairGet a vehicle's Crit'Air class and ZFE restrictionsA

Before your agent plans a route or advises on a vehicle in France: compute its Crit'Air class and current low-emission-zone (ZFE) restrictions from the official classification tables (arrêté du 21 juin 2016), from declared fuel and Euro norm or first registration date Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/vehicle-critair

ParametersJSON Schema
NameRequiredDescriptionDefault
fuelYesDeclared fuel/powertrain: electric, hydrogen, gas (gpl/gnv), plug_in_hybrid, petrol, diesel, petrol_hybrid, diesel_hybrid (common FR/EN synonyms accepted). Required; hybrids are classified by their thermal engine
euro_normYesDeclared Euro emission norm (pre_euro, euro1, euro2, euro3, euro4, euro5, euro6; euro1 is accepted and normalised to pre_euro, which the Crit'Air schedule does not distinguish). Provide either 'euro_norm' or 'first_registration'; if both are given, 'euro_norm' wins
vehicle_classYesVehicle category: m1 (passenger car, default) or n1 (light commercial vehicle); other categories are out of scope (400)
first_registrationYesDate of first registration (YYYY-MM-DD), used to derive the Euro norm when 'euro_norm' is not supplied. It must be a plausible registration date: a future date or one before 1900-01-01 is a 400 (a genuinely old vehicle is answered 200 with critair_class 'non_classe', never an error)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the pricing ($0.01/call, first free daily) and references official docs. It also surfaces a meaningful behavioral quirk: 'euro1 is normalised to pre_euro' since the Crit'Air schedule doesn't distinguish them. It doesn't discuss rate-limit failure modes, but there is no output schema so the description cannot compensate on return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and includes edge-case details efficiently. The pricing and docs lines are extra but arguably useful practical context. It's a bit on the longer side but every sentence adds information, so it's justified and earns a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a lookup tool with 4 required parameters and no output schema, the description does a solid job covering parameter semantics and key edge cases. The main gap is that it doesn't describe the shape of the response (e.g., what fields come back besides critair_class and ZFE restrictions), but with no output schema that gap is partially explainable. Still a strong description overall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already documented. Yet the description adds substantive value beyond the schema: it clarifies edge cases (euro_norm vs first_registration precedence, euro1 normalization, hybrids classified by thermal engine, futuristic/very-old registration handling, non_classe outcomes). These semantics would be lost without the description text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('compute'), the resource ('Crit'Air class and current low-emission-zone restrictions'), and the scope ('from declared fuel and Euro norm or first registration date'). It also names the source regulation, which distinguishes it from siblings like vehicle_co2, vehicle_tax, or vehicle_recalls that target other vehicle attributes. No ambiguity about what this tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit 'before your agent plans a route or advises on a vehicle in France' usage trigger, which tells the agent when to call it. It doesn't explicitly name alternatives or exclusions relative to sibling tools (e.g., when to use vehicle_co2 instead), so it falls just short of a 5, but the use-case framing is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vehicle_recallsFind vehicle recallsA

Before your agent buys, sells or services a vehicle: list manufacturer recall campaigns that may affect it, consolidated from official NHTSA and RappelConso sources, matched by make, model and year or from a VIN. An empty list means no known recall. Results are paged at 200 campaigns, one paid call per page: the busiest brands (~900 campaigns) take 5 Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/vehicle-recalls

ParametersJSON Schema
NameRequiredDescriptionDefault
makeYesManufacturer make to match (e.g. 'Toyota'). Provide either 'make' (optionally with 'model'/'year') or 'vin', never both. A make absent from every covered source is a 404 (UNKNOWN_MAKE, unbilled)
yearYesOptional model year (YYYY) to keep only campaigns whose year range covers it; a non-numeric year is a 400
modelYesOptional model to narrow the match within the make (e.g. 'Corolla'); omitted matches all models of the make

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden — and it does a solid job: it reveals pagination (200/page), billing (paid per page, ~5 calls for busy brands), the free daily trial, and error semantics (UNKNOWN_MAKE 404 unbilled, non-numeric year = 400). It doesn't describe the exact return fields, but with no output schema present, some return-shape detail would have helped; still, the key operational behaviors are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact paragraph that packs actionable usage, billing, pagination, and error guidance efficiently, plus a separate pricing/docs line. It's slightly dense with several cost/pagination facts in one run-on sentence, but every sentence earns its place and there's no fluff. Minor structural polish could improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 params, 100% schema coverage, and no output schema, the description covers the essentials: trigger conditions, pagination limit, billing model, error semantics, and empty-list meaning. The main gap is the lack of any return-field description given there's no output schema, and the vin parameter referenced in the description isn't in the schema. Overall strong but not full.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 meaningful guidance beyond the schema: the 'either make or vin, never both' exclusivity rule (though vin isn't even listed as a property, which is a slight oddity), the 404 UNKNOWN_MAKE unbilled behavior, and that omitted model matches all models. It compensates well above the schema-only baseline despite not elaborating syntax on every param.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, actionable directive: 'Before your agent buys, sells or services a vehicle' and specifies the verb+resource ('list manufacturer recall campaigns'), the data sources (NHTSA and RappelConso), matching keys (make/model/year or VIN), and an empty-list meaning. It strongly differentiates this from the many climate/iban/invoice siblings by being explicitly vehicle-recall-focused.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a very clear when-to-use trigger ('Before your agent buys, sells or services a vehicle'), explains what an empty list means, calls out pagination behavior (200 campaigns/page), billing implications (one paid call per page), and the free first-call trial. It also notes the paid call aspect and provides docs links, giving the agent full context on usage cost and constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vehicle_reportGet a consolidated vehicle report from a VINA

Before your agent buys or appraises a vehicle: one consolidated report from a VIN — decode, candidate recall campaigns, type-approval CO2, the French registration tax it would cost and, from declared characteristics, Crit'Air / low-emission-zone status — from official NHTSA vPIC, RappelConso, EU 2019/631 and French tax sources, each block with its own provenance and honest coverage Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/vehicle-report

ParametersJSON Schema
NameRequiredDescriptionDefault
vinYes17-character Vehicle Identification Number (VIN alphabet, excludes I/O/Q). Required: it is the report's mandatory base. Malformed is a 400; a well-formed VIN whose manufacturer prefix (WMI) is unknown is a 404 (unbilled) — without the decode base there is no report
fuelYesOptional declared fuel/powertrain (electric, hydrogen, gas (gpl/gnv), plug_in_hybrid, petrol, diesel, petrol_hybrid, diesel_hybrid), rules of /vehicle/critair: a thermal vehicle also needs 'euro_norm' (pre_euro, euro1, euro2, euro3, euro4, euro5, euro6) or 'first_registration' (YYYY-MM-DD), an electric one needs neither. Nothing usable, or an implausible date, leaves the Crit'Air block missing with its reason — it never fails the report

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full transparency burden. It does well: it discloses the pricing ($0.01/call, first daily call free), the trial tier, provenance per block, and the honest coverage caveat. It also explains edge-case behaviors in the parameter descriptions (400 for malformed VIN, 404 unbilled for unknown WMI; Crit'Air block missing with reason rather than failing the report). Notable minor gaps: it doesn't state return format/field structure despite no output schema, and doesn't disclose rate limits. But for a read-only data-aggregation tool, the disclosed behavior is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The main description is dense but front-loads the purpose and use-context efficiently, then packs data sources, scope, provenance, and pricing. The parameter descriptions are thorough and well-structured with conditionals. Minor deduction: the pricing/docs/promo lines blur the line between documentation and marketing, but they still carry agent-relevant cost information. Overall it reads as information-dense rather than bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description would ideally describe the return shape. It doesn't enumerate field names, but it DOES enumerate the report blocks (decode, recalls, CO2, tax, Crit'Air) and their sources, which gives an agent reasonable expectations. Combined with rich parameter descriptions covering edge cases, the completeness is high for a paid data-aggregation tool, though the missing response-structure detail is a real gap given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema descriptions themselves are very rich (fuel enum values, VIN alphabet, error codes 400/404). However, the description ADDS meaningful cross-tool context: it explains that fuel rides on /vehicle/critair rules and describes the fuel/euro_norm/first_registration interplay, which goes well beyond the schema. The description explains the plumbing linking the two parameters (fuel election affecting Crit'Air conditions), which an agent could not infer from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is exceptionally specific: it names the verb ('consolidated vehicle report'), the exact input (VIN), and enumerates the report's precise contents (decode, candidate recall campaigns, type-approval CO2, French registration tax, Crit'Air/LEZ status). It further specifies data sources (NHTSA vPIC, RappelConso, EU 2019/631, French tax sources), which strongly distinguishes it from the vehicle_* sibling tools that each cover only one aspect (vehicle_co2, vehicle_critair, vehicle_recalls, vehicle_tax, vehicle_vin_decode).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening line 'Before your agent buys or appraises a vehicle' gives an explicit trigger context. While it doesn't explicitly name sibling alternatives, the clear enumeration of all report blocks plus the mention of each block's 'own provenance' implies it is the comprehensive/all-in-one tool versus the granular vehicle_* siblings. The use-case framing ('before buying or appraising') and scope statement provide strong guidance on when to invoke.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vehicle_taxCompute a French vehicle registration taxA

Before your agent buys, imports or quotes a vehicle in France: compute what registering it costs — CO2 malus, weight malus and the regional certificate tax — against the official schedule in force on the registration date you supply, not the one a model remembers. Coverage is France only; each item states its bracket, its threshold and the exemption applied with its legal article, and the total disappears rather than being partial Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/vehicle-tax

ParametersJSON Schema
NameRequiredDescriptionDefault
fuelYesDeclared fuel/powertrain, in the exact vocabulary of /vehicle/critair (electric, hydrogen, gas (gpl/gnv), plug_in_hybrid, petrol, diesel, petrol_hybrid, diesel_hybrid, usual synonyms accepted). Required unless a resolution key is given. It drives the automatic exemptions: above the mass threshold an unknown fuel leaves the weight malus 'undetermined' rather than guessed
regionYesFrench region, by INSEE code ('11') or name (case and accents folded). Administrative figure: always declarative. Unknown region is a 400
countryYesJurisdiction, required. 'FR' is the only covered value: any other is a 400 COUNTRY_NOT_COVERED (unbilled) — a neighbouring schedule is never approximated
co2_wltpYesDeclared WLTP CO2 in g/km (0-1000). The technical figures can instead be resolved from the EU CO2 dataset by passing 'type_approval', or 'make'+'model'+'year' (the keys of /vehicle/co2); they are then marked source 'resolved', and a declared value always wins
weight_kgYesDeclared mass in running order, kg (100-20000): the base of the weight malus
fiscal_powerYesDeclared fiscal power, CV (1-999): the base of the regional tax. A French administrative figure absent from the EU registry — always declarative, never resolved
registration_dateYesDate of registration (YYYY-MM-DD, default today UTC). It selects the schedule to the day — the CO2 schedule changed mid-year on 2025-03-01. Earlier than the first published schedule is a 404 naming it (2020-01-01); a future date is legitimate while an open schedule covers it

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses key behaviors: country 'FR' is the only covered value (others are 400 COUNTRY_NOT_COVERED, unbilled), unknown region is a 400, dates before 2020-01-01 are a 404, unknown fuel leaves weight malus 'undetermined' rather than guessed, and future dates are legitimate while an open schedule covers them. This is substantial transparency for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact single paragraph plus metadata; every sentence earns its place by adding behavioral or usage detail. The pricing and docs lines are low-value filler but brief. It's efficient, though slightly dense in a way that could overwhelm—still, no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 7 required parameters, no annotations, and no output schema, the description must carry substantial burden. It does: it explains the resolution/precedence logic for co2, the all-or-nothing total behavior, exemption articles, country/region error handling, date-schedule coupling, and fuel-driven exemption logic. For a complex, multi-faceted tax-computation tool, this is thorough and complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 7 parameters, which sets the baseline at 3. However, the description adds meaningful value beyond the schema: explaining how parameters resolve (e.g., technical figures can be resolved from the EU CO2 dataset via 'type_approval' or make+model+year, marked 'resolved'), the precedence rule ('a declared value always wins'), and the schedule-changing constraint on registration_date (mid-year change on 2025-03-01). This pushes above the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool computes a French vehicle registration tax (CO2 malus, weight malus, regional certificate tax) against the official schedule in force on the supplied registration date. It clearly distinguishes itself from the vehicle_* siblings (vehicle_co2, vehicle_critair, vehicle_vin_decode) by focusing on registration tax computation rather than CO2 lookup, critair class, or VIN decode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence gives explicit when-to-use guidance: 'Before your agent buys, imports or quotes a vehicle in France'. It also states coverage is France only, warns against relying on a model's remembered schedule, and explains what the response contains (brackets, thresholds, exemptions with legal articles). It implicitly disambiguates from vehicle_co2/critair by naming the resolution endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vehicle_vin_decodeDecode a VINA

Before your agent buys, lists or insures a vehicle: decode any 17-character VIN offline — manufacturer, country and region of build, model year, check digit validity and deterministic attributes from the official NHTSA vPIC tables Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/vehicle-vin-decode

ParametersJSON Schema
NameRequiredDescriptionDefault
vinYes17-character Vehicle Identification Number (VIN alphabet, excludes I/O/Q). Malformed input is a 400; a well-formed VIN whose manufacturer prefix (WMI) is not in the vPIC tables is a 404 (unbilled)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses pricing ($0.01/call, first free daily), offline operation, and error semantics (400 malformed, 404 well-formed but unknown WMI/unbilled). This is substantial behavioral disclosure. The only minor gap is not describing the exact return structure, but the determinism and offline nature are clearly conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph plus pricing/docs lines, with zero wasted words. Every clause earns its place: the before-use directive, offline capability, output enumeration, NHTSA source, pricing, trial, and docs link are all packed efficiently. Front-loaded with the most important usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with 100% schema coverage and no output schema, the description covers all essential aspects: use case, what it outputs, data source, pricing implications, error behavior, and documentation reference. The only slight gap is the absence of an explicit output schema, but the description lists the key return fields (manufacturer, year, check digit, etc.) so even without the schema, the agent knows what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the vin parameter thoroughly. The description reinforces critical validation rules (17-char, VIN alphabet excluding I/O/Q) through the schema as well. The pricing/trial details add context about cost-benefit that isn't in the schema. No additional description-level parameter meaning is missing beyond what the 100% schema coverage provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (decode), the resource (a 17-character VIN), and the scope (offline, using official NHTSA vPIC tables). It explicitly enumerates the outputs (manufacturer, country/region of build, model year, check digit validity, deterministic attributes), which distinguishes it from siblings like vehicle_report and vehicle_co2. The purpose is exceptionally specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description opens with a strong when-to-use directive: 'Before your agent buys, lists or insures a vehicle'. This frames the exact decision context. While it doesn't name a specific alternative tool, the 'offline' qualifier and focus on deterministic NHTSA data clearly differentiate it from vehicle_report (likely a richer paid report). It tells when to use it before purchase/listing/insurance actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wallet_statusPayer wallet & budget statusA

Free tool: report the payment mode (paying vs discovery-only), the payer public address (never the private key), the configured spend caps and the session spend. Never reveals the private key and never queries an on-chain balance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well: it explicitly states the tool never reveals the private key and never queries an on-chain balance, which are important behavioral constraints. It also discloses what it reports (payment mode, address, caps, session spend). This is strong disclosure given zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. Every clause earns its place: purpose, free-tier status, what's reported, and the two explicit safety constraints. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema status tool with strong disclosure, the description is nearly complete. It covers what data is returned and what is not. The only minor gap is not describing the return format/structure, but with no output schema and a simple status report this is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and schema coverage is 100% (nothing to document). Since there are no parameters, a baseline of 4 is appropriate per the rubric; the description adds no parameter information but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('report the payment mode, payer public address, spend caps and session spend') and clearly differentiates this from siblings like preflight_payment by scoping it to wallet/budget state. The free-tool label and explicit disclosure about what it does and does not return give unique identity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states it is a 'Free tool' and provides clear context that it reports wallet/budget info rather than performing payments. It doesn't explicitly name alternative tools like preflight_payment or point out when-not-to-use, but the context is sufficient for an agent to understand when to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weather_forecastGet a weather forecast for a locationA

Before your agent schedules a delivery, plans outdoor work or hedges short-term weather exposure: a point forecast of 2 m temperature, precipitation and 10 m wind — plus opt-in convective, humidity, cloud and snow variables — for any GPS point or city. Deterministic NOAA GFS at 0.25 deg to 16 days (384 h), NOAA GEFS ensemble mean at 0.5 deg to 35 days (840 h) — beyond 16 days the value is an ensemble mean with smoothed extremes: trend, not threshold triggers. The lead selector is optional (omitted, the forecast defaults to the current analysis time) and the response names the model that served it and the exact forecast step. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/weather-forecast

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity or place name, resolved against the embedded GeoNames cities500 gazetteer: exact name match (case- and accent-insensitive, no fuzzy matching), ties broken by population (most populous wins). Alias: location. Narrow with country=<ISO 3166 alpha-2>. Alternative: pass lat + lon directly instead. The resolved place is echoed back as data.location.
horizon_hYesForecast lead time in hours from the analysis cycle, 0-840 (35 days). Up to 384 h served from the deterministic GFS 0.25 deg run; beyond 384 h from the GEFS ensemble mean at 0.5 deg (an average of 31 members, not a single deterministic scenario: smoothed extremes, so trend rather than threshold triggers). If the target falls beyond the window currently available (its exact end shifts with ingestion cycles), the request is served at the latest available step and the response sets lead.clamped=true with the valid_time actually served. Alternatives (at most one of the three; all omitted defaults to the current analysis time, horizon_h=0): valid_time (RFC 3339 instant — never clamped, out-of-window returns 400) or date (YYYY-MM-DD calendar day, served at 12:00 UTC that day; weekday names like 'Wednesday' are rejected with a 400 that spells out the expected format).
variablesYesComma-separated selector of the variable families to return; defines the exact set served (omit it for the default temperature,precipitation,wind). Base families: temperature, precipitation, wind. Opt-in families from the deterministic GFS (<= 384 h only): convective (surface CAPE/CIN plus a qualitative convective_risk — an instability proxy for thunderstorm/hail risk, NOT a calibrated hail probability), humidity (2 m relative humidity), clouds (total cloud cover), snow (snow depth on the ground and whether precipitation is falling as snow). An opt-in family requested beyond 384 h, or missing at the grid cell, is served as a null block with coverage.complete=false naming it — never extrapolated.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden and handles it well. It discloses deterministic vs ensemble mode differences, clamping behavior with lead.clamped=true, null blocks with coverage.complete=false for missing/out-of-range opt-in variables, pricing ($0.01/call, first free daily), model names that will serve each window, and that convective_risk is qualitative not calibrated. This is extensive behavioral disclosure beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Multiple sentences, but each earns its place by conveying a distinct fact (models, horizons, pricing, clamping, variable availability, alternatives). The block is front-loaded with a use-case context sentence and flows from purpose to models to selector semantics to pricing/docs. Mildly long but information-dense with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-required-param tool with 100% schema coverage and no output schema, the description is remarkably complete: it covers model resolution, lead-time semantics with clamping, variable selection with availability windows, pricing, fallback behaviors, and error conditions (400 on weekday names, 400 on out-of-window valid_time). Every parameter surface is documented adequately whether through schema or description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. However, the description substantially augments the schema: it explains the alias 'location' for the city parameter, mentions narrowing with country, describes field echo-back (data.location), details which horizon ranges map to which model, explains alternatives to each parameter (valid_time, date, lat+lon), and clarifies the exact meaning of the variables selector including which families are base vs opt-in and their availability windows. This adds real value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this is a point forecast of temperature, precipitation, and wind for any GPS point or city, with a specific verb ('forecast') naming the resource and listing exact variables. It distinguishes from sibling climate tools (climate_indices, climate_degree_days) by focusing on short-term current weather rather than long-term climate aggregations, and from weather_forecast_daily/batch siblings by being the point forecast version.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it ('Before your agent schedules a delivery, plans outdoor work or hedges short-term weather exposure'), gives a documented alternative (pass lat + lon directly instead of city), explains the horizon semantics across deterministic vs ensemble models, and clarifies trade-offs (beyond 16 days value is ensemble mean, trend not threshold triggers). The lead selector alternatives (valid_time vs date vs horizon_h) are thoroughly contrasted with clamping and error behaviors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weather_forecast_batchGet forecasts for many locationsA

Before your agent plans across a whole network — fleet routing, multi-site operations, portfolio hedging: 2 m temperature, precipitation and 10 m wind forecasts for up to 500 point + lead-time queries in one call, from the deterministic NOAA GFS run (~16 days). Each query takes lat+lon or a city name plus an optional lead selector (omitted, it defaults to the current analysis time); an uncovered item is flagged via per-item coverage instead of failing the batch. Price: $0.005 base + $0.005 × N items, max 500 (field "queries") Docs: https://invoket.com/docs/api/weather-forecast-batch

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYesArray of point/lead-time queries resolved in one settlement. Its length is priced per unit (base + N x unit), capped at 500; a batch over 500 is rejected with 400. Each item takes a point (lat + lon, or a city name) and at most one lead selector (omitted = current analysis time).

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, and it does well: it discloses the graceful per-item coverage degradation, the deterministic NOAA GFS source and ~16-day range, the 400-metric, pricing per item, and URL docs. It misses some side effects like whether partial success is supported or how results are structured, but the disclosure of pricing, caps, and degradation behavior is substantial value beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense but reasonably organized: use context up front, then data/format, then degradation/pricing/docs. It front-loads the 'why/when' value proposition clearly. It's fairly long but every sentence carries a distinct piece of information (pricing, source, degradation, docs); minor room for tightening the price line but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 1-parameter tool with 100% schema coverage and no output schema, the description covers nearly all needed context: use cases, data fields, source, range, caps, pricing, graceful degradation, and docs link. The main gap is return structure/format beyond the schema's mention of results[].location, but given the rich schema and batch context, the description is arguably complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful context to the single 'queries' parameter: it explains pricing per item, the 500 cap, and the per-item resolution semantics. The schema already provides 100% coverage, describing city/lat-lon resolution, lead selectors, defaults, and degradation. The description complements rather than duplicates, adding economic and batch-level behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific use context ('Before your agent plans across a whole network — fleet routing, multi-site operations, portfolio hedging') and clearly states exactly what it does: batch forecasts (2m temperature, precipitation, 10m wind) for up to 500 point+lead-time queries. It distinguishes from siblings by emphasizing the batch/network-scale use case and the 500-item capacity, which separates it from weather_forecast and weather_forecast_daily (single-point or daily variants).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong when-to-use guidance via the upfront 'before your agent plans across a whole network' framing and clearly communicates pricing, caps, and behavior (uncovered items degrade gracefully per-item rather than failing). However, it doesn't explicitly contrast against weather_forecast / weather_forecast_daily or name when NOT to use it (e.g., single-point queries should use the non-batch variant), so the 'when-not/alternatives' guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

weather_forecast_dailyGet a day-by-day forecast for a locationA

Before your agent plans a multi-day operation — logistics, construction, an event, crop work: a day-by-day forecast for any GPS point or city, with daily minimum and maximum 2 m temperature, total precipitation and peak 10 m wind per UTC calendar day, from today to the end of the NOAA GFS window (~16 days), extendable to 35 days on the NOAA GEFS ensemble mean — those extra days are an average of ~30 members, so their extremes are smoothed: trend, not threshold triggers. Each day names the model that served it and carries a coverage flag. Price: $0.01 per call First call each day free (trial). Docs: https://invoket.com/docs/api/weather-forecast-daily

ParametersJSON Schema
NameRequiredDescriptionDefault
latYes
lonYes
daysYesNumber of UTC calendar days to return, 1-35, starting today. Defaults to 16 — the deterministic GFS window; ask for more explicitly to reach the GEFS ensemble-mean tail, whose smoothed extremes answer trend questions rather than threshold triggers. Alternative to lat+lon: pass city=<name> (alias location=, optional country= ISO 3166 alpha-2) resolved via the embedded GeoNames gazetteer and echoed back as data.location.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It discloses that GEFS extra days are smoothed (~30 members averaged, trend not threshold triggers), that each day names the serving model and carries a coverage flag, and it lists pricing ($0.01/call, first free daily) and docs URL. However, it does not describe the response format/schema (no output schema present), pagination, or what happens with invalid coordinates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is meaty but delivers substantial value. It front-loads the core use case (multi-day planning) and the key output fields, then appends the GEFS nuance, model naming, coverage flag, pricing, and docs. It is longer than ideal but every sentence earns its place given the complexity and the absence of an output schema and annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (two forecast windows, two model sources, alternative city input, pricing), the description is reasonably complete. However, with no output schema and no annotations, it would benefit from describing the return shape (e.g., whether it returns an array of day objects, the units — Celsius, mm, m/s) and what the coverage flag means. Still, it covers the key operational aspects better than most.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (only 'days' has a schema description; lat and lon are bare strings). The description compensates with rich detail: it explains the default of 16, the 1-35 range, the UTC calendar day semantics, and the GEFS tail behavior. It also documents the alternative city=name parameter with aliases (location=, country=) and the GeoNames gazetteer resolution, which goes well beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get a day-by-day forecast') plus a resource ('for a location'). It specifies the exact data fields (daily min/max 2m temperature, total precipitation, peak 10m wind), the time window (today to end of NOAA GFS ~16 days, extendable to 35 days on GEFS), and the data source. This clearly distinguishes it from the sibling weather_forecast tool, which presumably provides a different granularity/format.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly frames when to use it: before multi-day operations (logistics, construction, events, crop work), and describes the two modes (16-day deterministic GFS vs 35-day GEFS ensemble mean). It explicitly addresses when to ask for more days ('ask for more explicitly to reach the GEFS ensemble-mean tail') and provides the city/location alternative to lat+lon coordinates. This gives clear usage context and alternatives.

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.

  1. 70 tool updatesv0.1.2
    • First observedclimate_aggregate
    • First observedclimate_anomaly
    • First observedclimate_degree_days
    • First observedclimate_indices
    • First observedclimate_point
    • First observedclimate_point_batch
    • First observedclimate_return_period
    • First observedcompany_events
    • First observedcompany_lei
    • First observedcompany_ownership
    • First observedcompany_peppol
    • First observedcompany_report
    • First observedcompany_resolve
    • First observedcompany_vat
    • First observediban_repair
    • First observediban_repair_batch
    • First observediban_resolve
    • First observediban_resolve_batch
    • First observediban_screen
    • First observediban_screen_batch
    • First observedinvoice_generate
    • First observedinvoice_generate_pdf
    • First observedinvoice_late_payment
    • First observedinvoice_read
    • First observedinvoice_validate
    • First observedinvoice_vat_treatment
    • First observedinvoice_vat_treatment_batch
    • First observedlabel_chem_classify
    • First observedlabel_chem_classify_batch
    • First observedlabel_chem_svhc
    • First observedlabel_chem_svhc_batch
    • First observedlabel_claims_check
    • First observedlabel_claims_permitted
    • First observedlabel_cosmetic_ingredient
    • First observedlabel_cosmetic_ingredient_batch
    • First observedlabel_food_additive
    • First observedlegal_article
    • First observedlegal_article_batch
    • First observedlegal_deadline
    • First observedlegal_diff
    • First observedlegal_diff_batch
    • First observedlegal_eu_act
    • First observedlegal_history
    • First observedlegal_history_batch
    • First observedlegal_transposition
    • First observedmedication_availability
    • First observedmedication_generics
    • First observedmedication_interactions
    • First observedmedication_report
    • First observedmedication_resolve
    • First observedphone_validate
    • First observedplatform_info
    • First observedpreflight_payment
    • First observedpreflight_supplier
    • First observedscreen_address
    • First observedscreen_address_batch
    • First observedscreen_entity
    • First observedscreen_entity_batch
    • First observedsearch_endpoints
    • First observedsubmit_review
    • First observedvehicle_co2
    • First observedvehicle_critair
    • First observedvehicle_recalls
    • First observedvehicle_report
    • First observedvehicle_tax
    • First observedvehicle_vin_decode
    • First observedwallet_status
    • First observedweather_forecast
    • First observedweather_forecast_batch
    • First observedweather_forecast_daily

TDQS

A3.8/5.0

Scored across 70 tools

Disambiguation5/5

Each tool is scoped to a specific resource and action, and the long descriptions make even near-neighbours distinct: invoice_generate vs invoice_generate_pdf, label_claims_check vs label_claims_permitted, and screen_entity vs screen_address are explicitly framed as different operations. Batch variants are consistently named as such, so an agent should not confuse a single-item check with its bulk counterpart.

Naming Consistency4/5

Tool names almost always start with a domain prefix (weather_, climate_, iban_, company_, invoice_, legal_, label_, medication_, screen_, vehicle_) and use snake_case, with _batch consistently marking bulk endpoints. The main deviation is that the action part is not a uniform verb_noun pattern: some names are pure noun phrases (company_events, legal_deadline) and some use abbreviations (label_chem_svhc, vehicle_critair), so the convention is descriptive rather than fully syntactic.

Tool Count1/5

Seventy tools is far beyond the 3-15 well-scoped range and crosses the 50+ extreme threshold in the rubric. Even though the server is a marketplace of paid APIs, the raw number puts a heavy selection burden on agents and most tools could be grouped or discovered via the search_endpoints tool rather than all being exposed at the top level.

Completeness4/5

Each advertised domain is covered with a coherent set of lookups and often a batch variant: invoicing has generate/read/validate/vat/late-payment, legal has article/history/diff/deadline/transposition, and sanctions have single, batch and preflight endpoints. The gaps are minor and mostly about uneven scope, such as a lone phone_validate tool and no truly global company coverage beyond GLEIF, but agents should not hit dead ends in the core workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enables AI agents to search, pay for, and call paid APIs using the x402 protocol, with automatic USDC settlement.
    2
    MIT
  • A
    license
    C
    quality
    A
    maintenance
    An MCP server that gives AI agents real-time market data, DeFi intelligence, and automatic tool discovery via plugins. Supports x402 micropayments and is always updated.
    23
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for the x402 protocol that lets AI agents discover and call payment-gated HTTP APIs automatically.
    152 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that allows AI agents to discover and pay for thousands of APIs (x402 on Solana/Base) using a single key, with automatic payment handling and a federated catalog of machine-payable endpoints.
    234
    MIT