Skip to main content
Glama

Duo Data Utilities: IBAN, ISIN, VAT & Tax ID, Barcode, Timezone, Geo APIs

Server Details

IBAN, ISIN, VAT/tax ID, GTIN validation; timezone, geo, text, chain utilities. Pay per call

Ownership verified
Status
Healthy
Uptime
92.9% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
hiesem/duo-data-utilities
GitHub Stars
0

TDQS

A3.9/5.0

Scored across 33 tools

Disambiguation4/5

Each tool targets a distinct data-format or domain (IBAN, ISIN, VAT, barcode, timezone, geo), and generate/validate pairs are clearly separated. Minor overlap exists between hash_generate and solidity_function_selector (both hash) and between cyrillic_transliterate and slug_generate (both transliterate), but descriptions distinguish them.

Naming Consistency4/5

Predominantly a noun_verb or noun_noun pattern (e.g., iban_validate, geo_distance), with a few multi-word domain prefixes like isin_cusip_sedol_validate. A handful of outliers such as number_to_words and point_in_polygon break a strict verb_noun rule, but the set remains readable and predictable.

Tool Count2/5

33 tools is well above the 25-tool threshold, making selection heavy for an agent even though each tool covers a distinct utility. The broad 'data utilities' scope justifies many tools, but the count is excessive for a single MCP server and risks overwhelming an agent.

Completeness4/5

Coverage of the advertised domains (IBAN, ISIN, VAT, barcode, timezone, geo) is thorough, with both generation and validation for IBAN and rich coverage elsewhere. Some common utility gaps exist (e.g., email/phone/credit-card validators, UUID, generic date parsing), but these are outside the stated scope and only minor.

Available Tools

33 tools
airport_lookupAirport lookup by IATA or ICAO code: name, coordinates, elevation, time zone; nearest airportsA
Read-onlyIdempotent
Inspect

Airport lookup by IATA or ICAO code: get the airport's name, city, country, ISO 3166-2 region code, WGS-84 coordinates, elevation and IANA time zone, or find the nearest airports to a coordinate within a radius. Covers every airport worldwide that holds a three-letter IATA code and scheduled service. Returns the code type that matched and the distance in kilometres for proximity results. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNo3-letter IATA or 4-letter ICAO code, case-insensitive. Accepted: a 3-letter IATA or 4-letter ICAO code.
nearNolat,lon to search around. Accepted: lat,lon.
limitNoMaximum results 1-25, default 5. Only with near. Accepted: integer 1-25.
countryNoISO 3166-1 alpha-2 filter. Accepted: an ISO 3166-1 alpha-2 code.
radius_kmNoSearch radius in km, 1-1000, default 100. Only with near. Accepted: number 1-1000.

TDQS

A4.1/5.0
Behavior4/5

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

Going beyond the readOnlyHint=true/openWorldHint=false/idempotentHint=true annotations, the description discloses the coverage scope (airports worldwide with IATA codes and scheduled service), the return shape (matched code type and distance in km), and the cost model ($0.05 per successful call via x402/USDC on Base). The pricing detail is genuinely useful behavioral context. It doesn't mention rate limits or caching, but the extra disclosure is solid.

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

Conciseness4/5

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

Front-loaded with the core verb+resource, then attributes, then the proximity mode, then return/cost. It's a dense two-sentence block with slight redundancy between the title and the first clause, but every element serves a 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 read-only lookup tool with 100% parameter schema coverage and no output schema, the description covers scope, both invocation modes, return contents, and pricing. The absence of an output schema means the description carries more burden, and it mostly does – only the exact response structure is left implicit, which is minor.

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%, so the schema already documents all five parameters (code, near, limit, country, radius_km) with formats and ranges. The description adds only high-level mode descriptions (code vs. proximity) rather than any per-parameter meaning beyond the schema. Baseline 3 is correct.

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 (lookup of an airport by IATA/ICAO code) and names the exact attributes returned (name, city, country, region, coordinates, elevation, IANA tz). It also names a second mode (nearest airports by coordinate), which distinguishes it from all siblings without needing to open a schema.

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 two modes are described (code lookup vs. proximity via coordinate+radius), giving clear context for how to call the tool. However, there is no explicit when-not-to-use guidance or named alternative siblings (e.g., geo_distance or country_lookup) that an agent might confuse it with.

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

base_convertBase converter: integers between number bases 2 to 36 (hex, binary, octal)A
Read-onlyIdempotent
Inspect

Base converter: convert an integer between any two numeric bases from 2 to 36 (hex, binary, octal and more), with arbitrary precision so values far beyond 2^53 are exact. Accepts an optional sign and common prefixes (0x, 0b, 0o), validates every digit against the source base, and returns the value in the target base, in decimal, and as its bit length and digit count. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoTarget base 2-36, default 10. Accepted: integer 2-36.
caseNoDigit case for bases above 10: lower (default) or upper. Accepted: lower, upper.
fromNoSource base 2-36, or auto (default) to read a 0x/0b/0o prefix. Accepted: integer 2-36, or 'auto'.
valueYesInteger to convert; optional sign and 0x/0b/0o prefix. Accepted: at most 1024 characters.
prefixNoEmit 0x/0b/0o where conventional. Default false. Accepted: true or false.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and closed-world behavior, so the safety profile is covered. The description adds meaningful context beyond the schema: arbitrary precision beyond 2^53, digit validation, input length cap, prefix handling, and a clear pricing model with payment rail. That last detail is important for cost-aware invocation.

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 one dense sentence followed by a payment note. It front-loads the core capability and scope, but the run-on structure packs multiple behavioral details into a single clause, which slightly reduces scannability.

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 five-parameter, no-output-schema conversion tool, the description covers the essential behavioral facts: precision guarantees, validation, input limits, and the return shape (target base, decimal, bit length, digit count). It is nearly complete, though it could explicitly note that invalid digits produce an error rather than a partial result.

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 all five parameters are documented with types, enums, defaults, and accepted values. The description adds context about sign and prefix handling for the value parameter, but does not add format or syntax details beyond what the schema already provides. 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 names a specific verb (convert) and resource (integer between bases 2–36), and explicitly enumerates the scope (hex, binary, octal, arbitrary precision). The sibling tools are all unrelated operations, so the tool is unmistakably distinct.

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?

The description implies the tool's scope through examples but provides no explicit when-to-use or when-not-to-use guidance. For a tightly scoped numeric conversion utility, this is adequate but leaves the agent to infer that it is only for integer base conversion.

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

business_days_calculateBusiness days calculator: add or count working days with your weekend mask and holiday listA
Read-onlyIdempotent
Inspect

Business days calculator with a caller-supplied calendar: add or subtract N working days from a date, or count the working days between two dates. The weekend is a weekday mask (Friday-Saturday and Sunday-only weeks work) and holidays are an explicit date list, so nothing depends on a stale holiday table. Returns the result date, the day count and the skipped dates with reasons. The skipped list is capped at 1,000 entries (skipped_truncated flags it); skipped_total is always exact. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoadd (default) N business days to from, or count business days between from and to. Accepted: add, count.
toNoEnd date YYYY-MM-DD, may precede from. Required when op=count. Accepted: a calendar date as YYYY-MM-DD.
daysNoBusiness days to add, -3650 to 3650. Required when op=add. Accepted: integer between -3650 and 3650.
fromYesStart date, YYYY-MM-DD. Accepted: a calendar date as YYYY-MM-DD.
weekendNoComma-separated weekday names or ISO numbers. Default sat,sun. Empty string = no weekend. Accepted: comma-separated weekday names (mon..sun) or ISO numbers 1-7.
holidaysNoComma-separated YYYY-MM-DD holiday dates. Accepted: comma-separated YYYY-MM-DD dates, at most 2048 characters.
inclusiveNoFor op=count: start (default, half-open [from, to)), both or neither. Accepted: start, both, neither.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/no-open-world, and the description goes well beyond them: it discloses the return contents (result date, day count, skipped dates with reasons), the 1,000-entry truncation cap with skipped_truncated flag and exact skipped_total, and the $0.05 x402/USDC-on-Base pricing requirement. That is exactly the operational context annotations cannot express.

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?

Four sentences, all front-loaded and information-dense: capability first, then calendar semantics, then output/truncation behavior, then pricing. No filler, though the pricing sentence is appended without transition and packs several facts.

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 does the heavy lifting by summarizing return fields and truncation flags, and it covers both operations, the weekend/holiday model, and payment. A full field-level return spec and pagination/count semantics are not given, leaving a small gap for a 7-parameter 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 coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains that the weekend mask supports non-standard weeks (Friday-Saturday, Sunday-only) and that holidays are an explicit list so nothing relies on a stale table. That is genuine semantic value for the weekend and holidays parameters.

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?

States specific verbs and resource ('business days calculator... add or subtract N working days... or count the working days between two dates') and immediately frames the caller-supplied calendar, which separates it from siblings like calendar_convert, dst_transitions and rrule_expand. An agent can identify the tool's job without opening the schema.

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

Usage Guidelines3/5

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

The description distinguishes the two modes (add vs count) and notes the calendar is caller-supplied, so usage is implied, but it never names an alternative tool or states when this is the wrong choice versus recurrence or conversion tools. Implied usage only.

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

calendar_convertCalendar converter: Gregorian to Hijri, Hebrew, Japanese era, Persian and more, plus Easter dateA
Read-onlyIdempotent
Inspect

Calendar converter: convert a Gregorian date to other calendar systems: Islamic (both the tabular civil calendar and the Umm al-Qura variant), Hebrew, Japanese imperial era, Republic of China, Buddhist and Persian. Also computes Easter Sunday for a year in both the Gregorian and Julian reckonings. Uses the calendar support built into the runtime, with the algorithm named in every response. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoconvert (default) a Gregorian date, or easter for a year. Accepted: convert, easter.
toNoComma-separated calendar ids: islamic, islamic-umalqura, hebrew, japanese, roc, buddhist, persian. Default all. Accepted: islamic, islamic-umalqura, hebrew, japanese, roc, buddhist, persian.
dateNoGregorian date YYYY-MM-DD. Required when op=convert. Accepted: a calendar date as YYYY-MM-DD.
riteNoEaster reckoning: western (default) or eastern. Accepted: western, eastern.
yearNoYear for op=easter, 326-9999. Accepted: integer 326-9999.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), so the bar is lower, and the description adds genuinely new behavioral facts not in the schema: it uses runtime calendar support, names the algorithm in every response, and discloses a $0.05 per-call cost paid over x402 (USDC on Base). That pricing constraint is decision-relevant for an agent. It stops short of explaining error behavior for invalid dates or out-of-range years.

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?

Purpose is front-loaded in the first clause, and the sentence packing is dense but not padded — every clause (calendar list, Easter, runtime basis, algorithm naming, price) carries information. The price disclosure at the tail is slightly abrupt but not wasteful.

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 does some work in that direction by promising the algorithm name in every response, and it fully covers the operation space and all calendar targets. Annotations cover safety, so remaining gaps — exact response shape formalities and failure modes for bad dates or years outside 326-9999 — are minor for a read-only, idempotent converter.

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 3 is the baseline, but the description adds real semantic mapping: 'Islamic (both the tabular civil calendar and the Umm al-Qura variant)' disambiguates islamic vs islamic-umalqura, and 'Easter Sunday ... in both the Gregorian and Julian reckonings' clarifies the rite western/eastern enum. This is meaning beyond the schema strings, so it earns 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?

Specific verb (convert) plus resource (Gregorian date → other calendar systems), with the supported calendar systems enumerated concretely and an additional distinct operation (Easter computation) called out. An agent can separate this from siblings like timezone_convert or base_convert purely from the text, since the calendrical conversions named (Islamic, Hebrew, Japanese era, ROC, Buddhist, Persian) are unique to this tool.

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

Usage Guidelines3/5

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

The description implies usage via its two operations — convert a date, or compute Easter for a year — but never states when to prefer this tool over siblings (e.g., timezone_convert) or any exclusions/preconditions. The routing between convert and easter is really left to the schema's op enum rather than explained as guidance in the prose.

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

country_lookupCountry lookup: ISO 3166 codes, currency, TLD, UN region and ISO 3166-2 subdivisionsA
Read-onlyIdempotent
Inspect

Country lookup: find a country or territory by ISO 3166-1 alpha-2, alpha-3 or numeric code, or by name, and get the other codes, the official and common English names, the UN M49 region and sub-region, the currencies in use, the country-code TLD, and optionally the full ISO 3166-2 subdivision list with each subdivision's type. Also resolves an ISO 3166-2 subdivision code such as NL-NH directly. Names are matched case- and accent-insensitively. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoISO 3166-1 alpha-2, alpha-3 or numeric code, or an ISO 3166-2 subdivision code such as NL-NH. Accepted: ISO 3166-1 alpha-2/alpha-3/numeric, or an ISO 3166-2 subdivision code.
nameNoSubstring search on country names, case- and accent-insensitive. Accepted: at most 128 characters.
includeNoComma-separated: subdivisions, m49, currency, tld. Default m49,currency,tld. Accepted: comma-separated subset of subdivisions, m49, currency, tld.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), so the bar is lower; the description adds genuinely useful behavior: exact pricing ($0.05 per successful call, paid over x402 in USDC on Base) and case/accent-insensitive name matching. It does not describe failure behavior for unmatched codes or whether subdivision resolution returns a different shape.

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?

Front-loaded with the lookup capability, then return fields, then edge cases, then price. Dense but every sentence carries information; the pricing sentence is somewhat tangential but materially affects invocation decisions for a paid tool.

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 no output schema, the description carries the return-value burden and does so thoroughly: all code systems, official/common names, UN M49 region, currencies, TLD, and the optional subdivision list with types. Combined with the paid-call and matching-behavior notes, an agent has everything needed to invoke it 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%, so the baseline is 3, but the description adds real meaning: it clarifies that 'include' controls the optional full ISO 3166-2 subdivision list with each subdivision's type, and that 'code' also accepts subdivision codes like NL-NH. It does not add syntax or default details beyond the schema's own 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?

States a precise verb+resource ('find a country or territory') and enumerates exactly what is returned: codes, names, UN M49 region, currencies, TLD, and optional ISO 3166-2 subdivisions. It also distinguishes itself from the ISO 3166-2 subdivision-resolution case and from siblings like nuts_region_lookup and currency_lookup by scoping to ISO 3166 data.

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?

Gives clear context for when the tool applies: lookups by alpha-2/alpha-3/numeric code, by name, or by an ISO 3166-2 subdivision code, and notes that names are matched case- and accent-insensitively. It stops short of explicitly naming an alternative (e.g., nuts_region_lookup) or stating when not to use it, so it lacks true when-not routing.

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

crypto_address_validateCrypto address validator: detect the blockchain and verify the checksum (EVM, Bitcoin, Solana and more)A
Read-onlyIdempotent
Inspect

Crypto address validator: identify which blockchain an address belongs to and validate its encoding: EVM EIP-55 checksum, Bitcoin base58check and bech32/bech32m with witness version, Solana base58 and on-curve check, Cosmos bech32 with its HRP, Tron, XRP, Litecoin, Dogecoin, Cardano, Polkadot SS58 and Algorand. Returns every chain the address is valid for (ambiguous when several match), the checksummed form for EVM addresses, and the reason a check failed, including unrecognised_format. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
expectNoRestrict the check to one chain id. Accepted: evm, bitcoin, solana, cosmos, tron, xrp, cardano, polkadot, algorand, litecoin, dogecoin.
addressYesAddress to identify and validate. Accepted: at most 128 characters.
chain_idNoEVM chain id; enables EIP-1191 chain-salted checksum validation. Accepted: a positive integer chain id.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/openWorld=false, so the description's added value is in return semantics and cost: it discloses the ambiguous-multi-chain result, the checksummed EVM form, and failure reasons including unrecognised_format, plus x402 pricing. It does not state auth setup beyond payment or any rate limits, leaving a modest gap for a payment-gated 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?

Purpose is front-loaded in the first clause and the chain/algorithm enumeration is dense but genuinely informative rather than filler. The two-sentence structure is efficient, though the long chain list is close to the edge of what an agent needs before calling.

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 multi-chain parser with no output schema and three parameters, the description covers the return shape (valid chains, ambiguity, checksummed form, failure reason) and pricing well. It omits what happens when `expect` conflicts with the detected chain and says nothing about payment mechanics beyond the price, minor gaps given the otherwise thorough coverage.

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% and the enum values for expect are fully listed in the schema, so the baseline is 3. The description explains what the underlying validation checks per chain but never mentions the `expect` or `chain_id` parameters or how they alter behavior (e.g. EIP-1191 chain-salted checksums), adding little 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 states a specific verb+resource (identify a blockchain from an address and validate its encoding) and enumerates the exact algorithms and chains covered (EIP-55, base58check, bech32/bech32m, SS58, Tron, XRP, etc.). This makes it immediately distinguishable from sibling validators like iban_validate or gtin_barcode_validate without opening any schema.

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

Usage Guidelines4/5

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

It gives clear context: the tool returns every chain an address is valid for and flags ambiguity when several match, which tells the agent when this tool is appropriate. It also discloses the payment requirement ($0.05 per successful call via x402), which is practically necessary usage context. It stops short of naming alternatives or stating when-not to use it, so it is not a 5.

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

currency_lookupCurrency lookup: ISO 4217 codes, names, minor units and cash roundingA
Read-onlyIdempotent
Inspect

Currency lookup by ISO 4217 alphabetic or numeric code: the official English name, minor-unit exponent, fund flag, the smallest cash denomination where it differs from the minor unit, the territories that use it, and historic codes on request. Returns the correct rounding increment for cash amounts, which is what a caller needs to render or settle a price. This route returns currency facts only and never an exchange rate. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoISO 4217 alpha-3 or 3-digit numeric code. Accepted: a 3-letter alphabetic or 3-digit numeric ISO 4217 code.
countryNoISO 3166-1 alpha-2; returns the currencies in use there. Accepted: an ISO 3166-1 alpha-2 code.
includeNoComma-separated: territories, historic. Default none. Accepted: comma-separated subset of territories, historic.

TDQS

A3.9/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description goes well beyond them by disclosing the payment/auth requirement: $0.05 per successful call settled over x402 with USDC on Base. That cost and payment-protocol detail materially affects whether and how an agent should invoke the tool, and it is not available anywhere in the structured fields.

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

Conciseness4/5

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

Front-loaded with the operation, then the returned fields, then the negative scope, then cost. The sentences are dense but each carries distinct information; the enumeration of return fields is long but not redundant with the schema. Minor trimming would be possible in the field list.

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 carries the return-value burden and does so well by naming each returned field plus the rounding increment use case. It also closes the exchange-rate expectation. The remaining gap is that all three parameters are optional, and the description never says what a no-argument call yields.

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%, so the schema already documents code, country, and include with their accepted formats, making 3 the baseline. The description adds only a light gloss on include ('historic codes on request') and does not clarify whether code and country are mutually exclusive or what happens when neither is supplied.

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?

States a specific verb and resource ('Currency lookup by ISO 4217 alphabetic or numeric code') and enumerates the exact facts returned (name, minor-unit exponent, fund flag, cash rounding, territories, historic codes). It also carves out negative scope ('returns currency facts only and never an exchange rate'), which prevents confusion with rate tools. It does not, however, differentiate itself from the adjacent sibling country_lookup, which a caller could easily reach for by mistake.

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?

It gives a purpose statement ('the correct rounding increment for cash amounts, which is what a caller needs to render or settle a price') that implies when the tool is useful. But there is no explicit when-to-use vs when-not, no alternative named, and no guidance on whether the code, country, or include path should be chosen for a given task. Usage is inferable rather than stated.

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

cyrillic_transliterateCyrillic transliteration to Latin (ISO 9:1995, BGN/PCGN Russian)A
Read-onlyIdempotent
Inspect

Cyrillic transliteration to Latin using a named standard: ISO 9:1995 (one-to-one, with diacritics, covering the full standard: Russian, other Slavic, historic and non-Slavic Cyrillic letters) or BGN/PCGN, which is the Russian system only (Ukrainian, Serbian and other letters are passed through unmapped). Returns the transliteration, the source script, the standard, the mapped fraction and the unmapped characters. Other scripts are rejected with UNSUPPORTED_VALUE. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
caseNopreserve (default), lower or upper. Accepted: preserve, lower, upper.
fromNoSource script name (cyrillic), or auto (default). Accepted: cyrillic or auto.
textYesText to transliterate, at most 2048 characters. Accepted: at most 2048 characters.
standardNoRomanisation standard: iso-9 (default; all ISO 9:1995 Cyrillic letters) or bgn-pcgn (BGN/PCGN Russian system, Russian letters only). Accepted: iso-9 or bgn-pcgn (Russian letters only) for cyrillic.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), so the bar is lower. The description adds real value beyond them: the returned fields, the UNSUPPORTED_VALUE rejection for other scripts, and the $0.05 x402/USDC-on-Base payment requirement — non-obvious operational context an agent cannot infer.

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?

A single dense paragraph that front-loads the core purpose and standard semantics before returning to outputs and pricing. Every sentence carries information, though the pricing clause is appended abruptly rather than structured.

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 compensates by enumerating the return fields (transliteration, source script, standard, mapped fraction, unmapped characters) and the error path. Limits and enums live in the schema, so the definition is essentially complete for correct invocation.

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, but the description adds semantic meaning the schema does not: ISO 9 is one-to-one with diacritics and full coverage, while BGN/PCGN is Russian-only with pass-through for unmapped characters. That materially clarifies the 'standard' parameter's 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?

States a specific verb and resource ('Cyrillic transliteration to Latin') and names the two supported standards, distinguishing it from every sibling (none of which do transliteration). The scope — which scripts and letters each standard covers — is explicit.

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 explains how to choose between the two standards: ISO 9:1995 for full Slavic/historic/non-Slavic coverage, BGN/PCGN for Russian only, with non-Russian letters passed through unmapped. It stops short of explicit when-not-to-use guidance, but the tradeoff is well communicated.

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

dst_transitionsDST transitions: next daylight-saving time changes for an IANA time zoneA
Read-onlyIdempotent
Inspect

DST transitions: list the daylight-saving time changes for an IANA time zone over a date range: the exact instant of each shift, the offset before and after, and whether local clocks jump forward or back. Returns the current offset and DST state, and the next transition from a given instant. Zones without DST return an empty transition list rather than an error. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoStart of the range: RFC 3339 or YYYY-MM-DD. Default now. Accepted: RFC 3339 timestamp or YYYY-MM-DD.
zoneYesIANA time zone id. Accepted: an IANA time zone id, e.g. Europe/Amsterdam.
yearsNoLength of the range in years, 1-10. Default 2. Accepted: integer 1-10.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-open-world behavior, and the description adds genuinely new traits beyond them: the per-call price and payment rail ($0.05 via x402/USDC on Base) and the no-DST empty-list semantics. It still doesn't disclose rate limits or output ordering, but the added context is substantive.

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

Conciseness4/5

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

Front-loaded with the purpose, then the return contents, then edge case, then price. Dense but every sentence carries information; the pricing sentence is somewhat extraneous to invocation but is legitimately relevant to an agent deciding whether to call.

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 steps in to describe the return shape (exact instant, offset before/after, jump forward/back, current offset/DST state, next transition) and the no-DST edge case, which is exactly what an agent needs. Minor gaps remain around ordering and pagination for multi-year ranges.

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%, so 'from', 'zone', and 'years' are already fully documented in the schema. The description restates the range and from-instant concepts but adds no syntax, format, or default detail beyond what the schema provides — baseline 3 applies.

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

Purpose5/5

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

Opens with a specific verb+resource ('DST transitions: list the daylight-saving time changes for an IANA time zone') and states the scope (date range) plus exactly what each result contains. This is clearly distinguishable from sibling timezone_convert, which converts a timestamp rather than enumerating transitions.

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 gives clear context for when the tool applies (IANA zone + date range, next transition from a given instant) and an edge-case rule (zones without DST return an empty list, not an error). It never explicitly names an alternative sibling or a when-not condition, so it falls short of a 5.

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

geo_distanceDistance calculator: geodesic distance, bearing and destination point on WGS-84A
Read-onlyIdempotent
Inspect

Distance calculator: distance and direction between WGS-84 coordinates: geodesic distance by Vincenty with a haversine fallback, initial and final bearing, the midpoint, and the destination point reached from a start point on a given bearing and distance. Also computes the cumulative length of a supplied coordinate path. Results in metres, kilometres, nautical miles and miles. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNodistance (default), destination, midpoint or path. Accepted: distance, destination, midpoint, path.
lat1NoStart latitude. Accepted: a number between -90 and 90.
lat2NoEnd latitude. Accepted: a number between -90 and 90.
lon1NoStart longitude. Accepted: a number between -180 and 180.
lon2NoEnd longitude. Accepted: a number between -180 and 180.
pathNoComma-separated lat,lon pairs for op=path, at most 200 points. Accepted: comma-separated lat,lon pairs, at most 200 points.
methodNovincenty (default, WGS-84) or haversine. Accepted: vincenty, haversine.
bearingNoInitial bearing in degrees for op=destination. Accepted: number 0-360.
distance_mNoDistance in metres for op=destination, 0 to 1e9 (about 25 Earth circumferences); larger values are 400 INVALID_PARAM. Accepted: a number between 0 and 1e9 (metres).

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the Vincenty-with-haversine-fallback algorithm, supported output units, and a concrete pricing/auth model ($0.05 per successful call via x402 USDC on Base).

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?

Front-loaded with the core operation and resource, then operations, then results and pricing. Dense but every clause carries information; the pricing sentence is non-obvious and worth its space, though the first sentence is long enough to require re-reading.

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 returns, and it does specify the result units and the quantities produced (distance, bearings, midpoint, destination, cumulative path length). The only gap is that it never clarifies the zero-required-parameter design or how invalid combinations of op and inputs are rejected.

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; the description earns above that by tying parameters to outcomes (e.g., 'destination point reached from a start point on a given bearing and distance') and stating that results come back in metres, kilometres, nautical miles and miles. It adds cohesive meaning without duplicating schema syntax.

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?

States a specific verb and resource ('distance and direction between WGS-84 coordinates') and enumerates the five operations (distance, destination, midpoint, path) plus the algorithm (Vincenty with haversine fallback). This clearly differentiates it from siblings like point_in_polygon and geohash_encode_decode.

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?

Usage is implied by the operation list and the schema's op enum, so an agent can infer when each mode applies. However, there is no explicit when-to-use guidance, no mention of prerequisites, and no routing to alternative sibling tools for related geo tasks.

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

geohash_encode_decodeGeohash encoder and decoder with neighbour cellsA
Read-onlyIdempotent
Inspect

Geohash encoder and decoder: encode a WGS-84 latitude and longitude to a geohash at a chosen precision, or decode a geohash back to its bounding box, centre point and error bounds in metres. Encoding also returns the eight neighbouring cells, which is what a caller needs to do proximity search over a geohash-indexed store without a spatial database. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoencode (default): lat/lon to geohash. decode: geohash to bounding box. Accepted: encode, decode.
latNoWGS-84 latitude, -90 to 90. Required when op=encode. Accepted: a number between -90 and 90.
lonNoWGS-84 longitude, -180 to 180. Required when op=encode. Accepted: a number between -180 and 180.
geohashNoGeohash to decode, 1-12 characters. Required when op=decode. Accepted: base32 geohash alphabet, excluding a, i, l and o.
precisionNoGeohash length 1-12, default 9 (about 4.8 m). Accepted: integer 1-12.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and closed-world, so the safety profile is covered. The description adds genuinely non-derivable behavior: encoding returns the eight neighbouring cells and decode returns centre point plus error bounds in metres. It also discloses the $0.05 per successful call x402/USDC-on-Base payment, which is real operational context an agent must know before invoking. It does not describe failure modes or what counts as an unsuccessful call.

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?

Two sentences, front-loaded with the core encode/decode purpose before the return-value and pricing details. Every clause carries information, though the pricing sentence is somewhat dense and could be separated for scanability.

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 correctly compensates by naming the return values (bounding box, centre point, error bounds, neighbours). It also covers cost and payment rail. Only input-validation behavior and an explicit mode-default reminder are absent, which is a minor gap for a 5-param, 0-required 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 100%, so op, lat, lon, geohash and precision are all documented with accepted values and defaults. The description restates the encode/decode split and the precision concept but adds no syntax, format or edge-case detail beyond the schema. Baseline 3 is appropriate when the schema carries the parameter burden.

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 and resource ('encode a WGS-84 latitude and longitude to a geohash', 'decode a geohash back to its bounding box') and enumerates both modes up front. It also names the extra artifact (eight neighbouring cells), so an agent knows exactly what the tool produces. The only sibling in the same domain, plus_code_encode_decode, is distinguishable by the geohash-vs-plus-code resource alone.

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 gives a concrete usage scenario: the neighbour cells are 'what a caller needs to do proximity search over a geohash-indexed store without a spatial database.' That tells the agent when this tool is the right pick. It stops short of naming an explicit alternative or when-not condition (e.g., versus geo_distance or point_in_polygon).

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

gtin_barcode_validateGTIN barcode validator: EAN-13, UPC-A (GTIN-12), GTIN-8/14, GLN and SSCC check digitsA
Read-onlyIdempotent
Inspect

GTIN barcode validator: validate and convert GS1 identifiers: GTIN-8, GTIN-12 (UPC-A), GTIN-13 (EAN-13), GTIN-14, GLN and SSCC. Returns the check-digit verdict, the computed correct check digit, the GTIN-14 form with its indicator digit, and conversion between GTIN-8, -12, -13 and -14. No company-prefix split is returned: GS1's prefix-length table is no longer public data. Also computes a missing check digit from a partial code. Structure only, no product database. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNovalidate (default), checkdigit (compute the missing final digit) or convert. Accepted: validate, checkdigit, convert.
toNoTarget format. Required when op=convert. Accepted: gtin8, gtin12, gtin13, gtin14.
valueYesGS1 code, digits with optional spaces or hyphens. For op=checkdigit, omit the final digit. Accepted: 8, 12, 13, 14 or 18 digits.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only cover the read-only/idempotent safety profile; the description adds substantial behavior beyond that: the exact return contents (check-digit verdict, computed correct check digit, GTIN-14 form with indicator digit, conversions), the absence of company-prefix data and why, and the $0.05 x402 payment model. This is exactly the extra context annotations cannot carry.

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?

Information is front-loaded with the capability statement first, followed by returns, exclusions, and pricing. It is dense with colon-separated lists rather than flowing prose, but every clause carries real information, so overhead is low.

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 no output schema, the description compensates by enumerating the returned fields, and it discloses scope limits and the payment requirement. For a 3-parameter read-only validator, an agent has everything needed to call it correctly.

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

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 op, to and value including their enums and the checkdigit omission rule. The description only echoes these (partial code for check-digit computation, conversion between formats) without adding format or syntax detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('validate and convert GS1 identifiers') and enumerates exactly which identifier families it handles (GTIN-8/-12/-13/-14, GLN, SSCC). An agent can distinguish it from siblings like iban_validate, vat_tax_id_validate or isin_cusip_sedol_validate without opening the schema.

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

Usage Guidelines4/5

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

The description maps the three operations to intent ('validate', 'checkdigit' to compute a missing final digit, 'convert') and states a clear non-scope ('No company-prefix split is returned', 'Structure only, no product database'). It does not explicitly name an alternative tool, but no sibling overlaps enough to require one, so the guidance is clear rather than exclusionary.

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

hash_generateHash generator: SHA-256, SHA-512, SHA-3, Keccak-256, BLAKE2 and HMAC digestsA
Read-onlyIdempotent
Inspect

Hash generator: compute a cryptographic digest of supplied data: SHA-256, SHA-384, SHA-512, SHA-1, SHA3-256, SHA3-512, Keccak-256, BLAKE2b-256 and BLAKE2b-512, plus HMAC with any of them. Input is UTF-8 text, base64 or hex bytes; output is hex, base64, base64url or base32. Returns the digest, the byte length of the input, and the exact algorithm identifier used. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
outNoDigest output encoding: hex (default), base64, base64url or base32. Accepted: hex, base64, base64url, base32.
algoYesDigest algorithm. Accepted: sha256, sha384, sha512, sha1, sha3-256, sha3-512, keccak256, blake2b-256, blake2b-512.
dataYesInput data, interpreted per encoding. At most 8192 characters. An empty value hashes the empty string. Accepted: at most 8192 characters.
encodingNoEncoding of data: utf8 (default), base64, base64url or hex. Accepted: utf8, base64, base64url, hex.
hmac_keyNoIf present, computes HMAC with this key. Accepted: at most 512 characters.
hmac_key_encodingNoEncoding of hmac_key, as encoding. Accepted: utf8, base64, base64url, hex.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, so pure safety is covered. The description adds genuinely new behavioral context: the exact return payload (digest, input byte length, algorithm identifier) and the price/paid-over-x402 payment requirement, which the annotations do not capture.

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?

Dense but front-loaded: capability, algorithms, encodings, and returns come first, with pricing last. The enumeration of algorithms is long but earns its place by scoping the tool; little waste overall.

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 discloses the return shape (digest, byte length, algorithm identifier), input/output encodings, the HMAC option, and the payment model. Combined with annotations covering the safety profile, an agent has everything needed to call it correctly.

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

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, but the description aggregates meaning across parameters: it explains default input encoding (UTF-8 text), the output encoding options, and that HMAC is computed 'with any of them'. This lightly exceeds what the schema fields convey individually.

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?

States a specific verb+resource ('compute a cryptographic digest of supplied data') and enumerates the exact algorithm family, distinguishing it clearly from siblings like geohash_encode_decode or solidity_function_selector. An agent immediately knows this is a hashing/HMAC utility.

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?

Usage is implied by the nature of the tool, but there is no explicit 'use this when... instead of X' guidance. With no close sibling alternatives (geohash/selector are unrelated), the omission is low-cost, leaving this at the minimum-viable level.

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

iban_generateIBAN generator: build an IBAN from country and BBAN or bank/branch/account, computing check digitsA
Read-onlyIdempotent
Inspect

IBAN generator: construct an IBAN from a country code and the domestic account parts, computing the ISO 7064 mod-97-10 check digits. Takes a single BBAN string or named parts (bank code, branch code, account number); digit fields are left-padded with zeros to the country's registered widths. Returns the IBAN in electronic and print formats with its bank, branch and account parts. Covers the 89 SWIFT registry countries. Named parts work only where they span the whole BBAN; else pass the BBAN. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
bankNoBank code. Requires account. Accepted: a bank code of at most 16 characters.
bbanNoThe whole domestic account number (BBAN), alphanumeric. Use this or bank plus account. Accepted: an alphanumeric BBAN of at most 34 characters.
branchNoBranch code, for countries whose layout has a branch field. Accepted: a branch code of at most 16 characters.
accountNoAccount number. Requires bank. Accepted: an account number of at most 32 characters.
countryYesISO 3166-1 alpha-2 country code in the SWIFT IBAN registry, case-insensitive. Accepted: an ISO 3166-1 alpha-2 code in the IBAN registry.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent and closed-world, so the safety profile is covered. The description adds substantive behavior beyond that: check-digit algorithm (ISO 7064 mod-97-10), zero left-padding to registered widths, return in electronic and print formats, 89-country SWIFT registry coverage, and the $0.05 x402/USDC on Base price. That is real operational context an agent needs.

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?

Four sentences, front-loaded with purpose, then input modes, then return behavior, then coverage and price. Every sentence carries information, though the price/payment sentence is dense and slightly interrupts the technical flow. 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?

No output schema exists, so the description must cover returns – and it does, stating electronic and print formats plus the parsed bank/branch/account parts. Combined with the algorithm and coverage details, an agent has everything needed to call and interpret the 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 coverage is 100%, so the baseline is 3. The description goes beyond it by explaining the padding rule for digit fields and the constraint that named parts must span the whole BBAN (otherwise pass BBAN), which the schema does not state. It adds genuine semantic value over the field-level 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: 'construct an IBAN from a country code and the domestic account parts, computing the ISO 7064 mod-97-10 check digits.' This clearly contrasts with the sibling iban_validate (generation vs validation). An agent can route between them without opening either schema.

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

Usage Guidelines4/5

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

Gives conditional guidance: 'Takes a single BBAN string or named parts... Named parts work only where they span the whole BBAN; else pass the BBAN.' This tells the agent which input shape to pick. It stops short of explicitly naming iban_validate as the tool to use for the opposite operation, so there is no 'when-not' exclusion.

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

iban_validateIBAN validator: length, mod-97 check digits, bank/branch/account breakdown (89 countries)A
Read-onlyIdempotent
Inspect

IBAN validator: validate an IBAN's length for its country, permitted character classes per field, and the ISO 7064 mod-97-10 check digits. Returns the verdict with a specific failure reason, the electronic and print formats, and the decomposed bank code, branch code and account number according to that country's registered layout. Covers the 89 countries of the SWIFT IBAN registry. Structure and checksum only, it does not confirm the account exists. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYesThe IBAN. Spaces and non-breaking spaces are stripped; lowercase is accepted and uppercased. Accepted: an IBAN of at most 64 characters.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and closed-world behavior, so the bar is lowered. The description adds pricing ($0.05 per successful call via x402 on Base) – a paid-call constraint not in the annotations – plus the 'no existence check' limitation, both useful beyond the structured fields.

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

Conciseness5/5

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

Three tightly packed sentences: what is checked, what is returned, what it does not cover – with the payment note last. No filler, front-loaded with the verification mechanics.

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 one-parameter read-only validator with no output schema, the description fully covers the check performed, the 89-country scope, the return fields (verdict, reason, electronic/print formats, decomposed codes) and the pricing/caveat. Nothing an agent needs to decide or invoke correctly 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?

Schema description coverage is 100%: the single `iban` parameter already documents space stripping, case handling and the 64-char cap. The description adds nothing format-wise beyond the schema, so baseline 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?

States a precise verb+resource ('validate an IBAN's length... check digits') and enumerates exactly what is checked (country length, character classes, ISO 7064 mod-97-10). It is clearly distinguishable from the sibling iban_generate, which produces rather than validates an IBAN.

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 scope is well framed: 'Structure and checksum only, it does not confirm the account exists' explicitly tells the agent when this tool is insufficient. It does not name iban_generate as the alternative, but validation vs generation is unambiguous from the name pair.

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

isin_cusip_sedol_validateISIN validator plus CUSIP, SEDOL and FIGI check-digit validation; builds an ISIN from an NSINA
Read-onlyIdempotent
Inspect

ISIN validator plus CUSIP, SEDOL and FIGI check digits: validate the check digit of a financial security identifier (ISIN per ISO 6166). Returns the verdict, the computed correct check character, and for an ISIN the issuing country prefix and the embedded NSIN. Also builds an ISIN from a country code plus a 9-character NSIN. Format and checksum only, no security master lookup. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNovalidate (default) or build-isin. Accepted: validate, build-isin.
nsinNoExactly 9 alphanumeric characters. Required when op=build-isin. Accepted: exactly 9 alphanumeric characters.
valueNoISIN, CUSIP, SEDOL or FIGI to validate. Required when op=validate. Accepted: an alphanumeric security identifier of at most 24 characters.
countryNoISO 3166-1 alpha-2 code or XS. Required when op=build-isin. Accepted: at most 16 characters.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, so the safety profile is covered. The description adds context the annotations do not: the exact return contents (verdict, computed correct check character, country prefix, embedded NSIN) and the pricing model ($0.05 per successful call via x402/USDC on Base), which is materially useful for an agent deciding whether to spend.

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?

Front-loaded with the identifier families and the core action, followed by return contents, scope limitation, and pricing. Every sentence carries information, though the pricing clause slightly interrupts the functional 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?

With no output schema, the description carries the return-value burden and does so explicitly (verdict, correct check character, country prefix, NSIN). All four parameters, both operation modes, and the safety/pricing context are accounted for, leaving nothing an agent needs unstated.

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%, so the schema already documents op, nsin, value, and country fully. The description restates the build path ('a country code plus a 9-character NSIN') but adds no format or edge-case detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

Names specific verbs (validate check digits, build an ISIN) and concrete resources (ISIN per ISO 6166, CUSIP, SEDOL, FIGI). This clearly distinguishes it from sibling validators like gtin_barcode_validate, iban_validate, and vat_tax_id_validate, which cover different identifier families.

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 bounds the tool's scope with 'Format and checksum only, no security master lookup,' which tells the agent when this is and is not sufficient. It does not name a specific alternative tool for the lookup case, so it stops short of full when/when-not routing.

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

jwt_decodeJWT decoder: header, claims and expiry state (no signature verification)A
Read-onlyIdempotent
Inspect

JWT decoder: decode a JSON Web Token without verifying it: returns the header, the claims, the signature length and algorithm, and a computed view of the time claims — whether exp has passed, whether nbf is in the future, and the remaining lifetime in seconds against a supplied or current instant. Reports structural problems such as a missing part, invalid base64url or an alg of none. It does not and cannot verify the signature; do not use it to decide trust. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
atNoInstant to evaluate exp/nbf against: RFC 3339 or epoch seconds. Default now. Accepted: RFC 3339 timestamp or integer epoch.
tokenYesThe JWT to decode (not verified). At most 8192 characters. Accepted: at most 8192 characters.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description layers on real behavioral detail beyond them: the exact return contents, structural-failure reporting (missing part, invalid base64url, alg none), and the commercial constraint of $0.05 per successful call over x402. The cost/auth disclosure is especially valuable for an agent deciding whether to invoke.

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 critical scope qualifier (no signature verification) is front-loaded in the first clause, and the price/auth note is correctly placed last. It is dense with parentheticals but every clause carries information; nothing is 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?

With no output schema, the description carries the full burden of describing returns, and it does: header, claims, signature length and algorithm, computed time-claim view, and structural error classes. Nothing an agent needs to call and interpret this correctly 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?

Schema description coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description adds the semantic tie between the 'at' input and the exp/nbf evaluation ('against a supplied or current instant'), which is mildly useful but largely restates 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 gives a specific verb (decode) and resource (JSON Web Token) and immediately scopes it ('without verifying it'), which no sibling tool overlaps. An agent can distinguish this from hash_generate or crypto_address_validate without opening the schema.

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

Usage Guidelines4/5

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

It states the decisive when-not condition explicitly: 'It does not and cannot verify the signature; do not use it to decide trust.' That prevents the most dangerous misuse. It does not name an alternative tool, but no sibling in the list performs JWT signature verification, so there is no better route to point at.

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

money_splitMoney split: allocate an amount into shares with no rounding lossA
Read-onlyIdempotent
Inspect

Money split: split a money amount into shares without losing or inventing a cent. Divide evenly into N parts, or by a list of ratios, and the remainder is distributed one minor unit at a time by a named, deterministic rule — largest-remainder, first-wins or last-wins — so the parts always sum exactly to the original. Uses the ISO 4217 minor-unit exponent of the currency, so zero- and three-decimal currencies work (JPY 0, KWD 3); metals and XXX are rejected. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleNoRemainder rule: largest-remainder (default), first, last or round-robin. Accepted: largest-remainder, first, last, round-robin.
partsNoNumber of equal parts, 1-1000. One of parts or ratios. Accepted: integer 1-1000.
amountYesDecimal amount, absolute value below 1e12. Accepted: a decimal amount with absolute value below 1e12.
ratiosNoComma-separated non-negative ratios, at most 1000, each with at most 15 integer digits and 15 decimal places. One of parts or ratios. Accepted: comma-separated non-negative numbers, at most 1000.
currencyYesISO 4217 alpha-3 code. Accepted: an ISO 4217 alpha-3 code.

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: discloses deterministic remainder distribution, ISO 4217 minor-unit exponent handling with JPY/KWD examples, explicit rejection of metals and XXX, and the $0.05 x402/USDC-on-Base payment requirement. The x402 cost disclosure is exactly the kind of operational context annotations cannot carry.

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?

Front-loaded with purpose and progresses logically to mechanics, currency handling and price. Slightly dense with some restatement of the rule names already enumerated in the schema, but 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?

Covers inputs, edge cases (zero- and three-decimal currencies, rejected metals/XXX), determinism, and pricing. With no output schema, it would be stronger if it sketched the return shape (e.g. a list of per-share amounts), which is the one remaining gap for a compute 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 coverage is 100%, so the baseline is 3; the description adds real meaning by explaining what the remainder rules do and why currency drives minor-unit exponent. It loses a point for naming only 'largest-remainder, first-wins or last-wins' while the enum also contains 'round-robin', so the prose is incomplete relative to 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?

States a specific verb and resource ('split a money amount into shares') plus the defining constraint ('without losing or inventing a cent'), which no sibling tool covers. An agent can distinguish it from currency_lookup or any other sibling immediately.

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?

Explains the two usage modes ('divide evenly into N parts, or by a list of ratios') and the conditions under which each applies. It does not name alternatives or exclusions, but no sibling overlaps this function, so the context is sufficient.

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

number_to_wordsNumber to words in 12 languages, with ordinal and currency formsA
Read-onlyIdempotent
Inspect

Number to words: spell a number out in English, Dutch, German, French, Spanish, Italian, Portuguese, Polish, Russian, Turkish, Swedish or Japanese, in cardinal, ordinal or currency form. Currency form agrees the number with the currency noun and gives real minor-unit names for 19 currencies (EUR, USD, GBP, CHF, SEK, NOK, DKK, PLN, RUB, TRY, CNY, INR, BRL, MXN, CAD, AUD, NZD, CZK, HUF); any other ISO 4217 code uses a fraction such as 56/100. Values up to 10^15. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
caseNolower (default), sentence or title. Accepted: lower, sentence, title.
formNocardinal (default), ordinal, currency or year. Accepted: cardinal, ordinal, currency, year.
langNoLanguage, ISO 639-1. Default en. Accepted: en, nl, de, fr, es, it, pt, pl, ru, tr, sv, ja.
valueYesInteger or decimal, absolute value below 1e15. Accepted: absolute value below 1e15.
currencyNoISO 4217 code. Required when form=currency, rejected otherwise. Accepted: an ISO 4217 alpha-3 code.

TDQS

A4/5.0
Behavior4/5

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

The annotations already establish a safe, idempotent, closed-world read operation, but the description adds material context they cannot: a per-call price of $0.05 paid over x402 (USDC on Base) and a hard value ceiling of 10^15. Payment/auth requirement and input ceiling are genuinely useful behavioral disclosures beyond structured fields.

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

Conciseness5/5

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

Front-loaded with capability, then scoping, then pricing in a compact two-sentence block. No filler, and the most decision-relevant facts (languages, forms, currency handling) come first.

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 deterministic conversion tool with no output schema and fully documented parameters, the description covers capability, limits, currency edge cases and cost. The only gap is the unmentioned 'year' form value, which leaves the agent to discover it from the schema alone.

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%, so the schema already documents value, lang, case, form and currency. The description adds real semantic value on currency behavior (agreement plus minor-unit naming for 19 currencies, fraction fallback otherwise), but notably omits the schema's fourth form value, 'year', while claiming only cardinal/ordinal/currency exist.

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 ('spell a number out') and immediately scopes it by language set, and by cardinal/ordinal/currency form. This clearly distinguishes it from siblings like base_convert, money_split or currency_lookup, which handle different jobs.

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?

The description conveys form-specific rules (currency form agrees the number with the currency noun; other ISO 4217 codes fall back to a fraction) which implicitly tells the agent when each mode applies. However, it never states when to choose this tool over a sibling or names any alternative, so usage guidance is only implied.

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

nuts_region_lookupNUTS region lookup: EU statistical region codes, names and hierarchyA
Read-onlyIdempotent
Inspect

NUTS region lookup (EU statistical regions): resolve a NUTS code to its name, country and level, walk up to its parents or down to its children, or search regions by name. Covers all four levels (country, major region, basic region, small region) for the 27 member states and 12 further reporting countries, from the NUTS 2024 classification. Returns the Latin-script and local-language names plus the urbanisation, coastal and mountain typologies. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoNUTS code, 2-5 characters, case-insensitive (level-3 codes may contain letters, e.g. NL32B). A GR or GB prefix is accepted for EL or UK. Accepted: 2 to 5 characters matching ^[A-Z]{2}[0-9A-Z]{0,3}$.
nameNoSubstring search on region names, case- and accent-insensitive. Up to 25 matches. Accepted: at most 128 characters.
levelNoRestrict a name search to one level, 0-3. Accepted: integer 0-3.
countryNoISO 3166-1 alpha-2 country filter (UK/GB and EL/GR both accepted). Accepted: an ISO 3166-1 alpha-2 code.
includeNoComma-separated: parents, children, typology. Default parents,typology. Accepted: comma-separated subset of parents, children, typology.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent and closed-world, so the bar is lower; the description still adds real context the annotations do not carry: the $0.05-per-call x402 (USDC on Base) payment model, the default value of 'include', and what the response contains. It omits error behavior and rate limits, so a 4 rather than 5.

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

Conciseness4/5

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

A single dense paragraph but front-loaded with purpose and modes, then coverage, then return content, then price. Every clause carries information, though the first sentence packs several modes into one long clause chain.

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 does the work of describing returns (Latin and local-language names plus urbanisation, coastal and mountain typologies), scope, and pricing. It leaves the shape of hierarchy responses (how parents/children are returned) unspecified, so not quite a 5.

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 every parameter is already documented in the schema. The description reinforces the code/hierarchy/name-search modes but adds no syntax or format detail beyond what the schema properties provide, making the baseline 3 correct.

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?

States a specific verb and resource ('NUTS region lookup') and enumerates the three operating modes: resolve a code to name/country/level, walk the hierarchy, or search by name. Explicitly scoped as EU statistical regions with NUTS 2024 coverage, which separates it from the generic country_lookup sibling.

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 makes clear which task each mode serves (code resolution vs. hierarchy traversal vs. name search), so an agent can pick the right call. It stops short of naming a sibling as an alternative or stating explicit exclusions, which keeps it from a 5.

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

plus_code_encode_decodePlus code (Open Location Code) encoder and decoderA
Read-onlyIdempotent
Inspect

Plus code (Open Location Code) encoder and decoder: encode coordinates as a plus code at a chosen length, or decode a full code back to its bounding box and centre. Also shortens a full code against a reference coordinate and recovers a shortened code given a reference, which is how plus codes are normally exchanged in text. Returns code length, precision in metres and validity. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
opNoencode (default), decode, shorten or recover. Accepted: encode, decode, shorten, recover.
latNoLatitude for op=encode. Accepted: a number between -90 and 90.
lonNoLongitude for op=encode. Accepted: a number between -180 and 180.
codeNoPlus code for decode, shorten or recover. Accepted: at most 20 characters.
lengthNoInteger code length for op=encode: one of 2,4,6,8,10 (default),11,12,13,14,15. Other integers in 2-15 are 400 UNSUPPORTED_VALUE. Accepted: one of 2,4,6,8,10,11,12,13,14,15.
ref_latNoReference latitude for op=shorten/recover. Accepted: a number between -90 and 90.
ref_lonNoReference longitude for op=shorten/recover. Accepted: a number between -180 and 180.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-open-world behavior, so the safety profile is covered. The description adds material context beyond that: a per-call price of $0.05 paid over x402 in USDC on Base, which is an auth/payment requirement an agent must know before calling. It also states the shape of the returned data (code length, precision in metres, validity).

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 sentences, purpose front-loaded first, with operation semantics before the pricing note. The prose is dense but every sentence carries distinct information; slightly long for the value delivered, but 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?

No output schema exists, and the description compensates by naming the return fields (code length, precision, validity). Payment and the default op=encode are covered by the description and schema respectively. Only minor gaps remain, such as what an invalid code yields or error-shape expectations.

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%, and each property already documents its accepted values and which op it belongs to, so the schema does the heavy lifting. The description reinforces the op-to-parameter mapping (encode at a chosen length, shorten/recover against a reference coordinate) but adds no format or constraint detail beyond 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?

Names the specific resource (Plus code / Open Location Code) and enumerates the four concrete operations it performs: encode, decode, shorten, recover. An agent can distinguish it from the similarly-named sibling geohash_encode_decode without opening the schema, since the code system is stated explicitly.

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?

Explains the context for each operation, notably that shorten/recover is 'how plus codes are normally exchanged in text', which tells an agent when those ops are relevant. However, it offers no explicit when-not-to-use guidance and never names an alternative sibling (e.g. geohash for a different grid system).

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

point_in_polygonPoint in polygon check, plus bounding box, centroid and area for GeoJSONA
Read-onlyIdempotent
Inspect

Point in polygon check and GeoJSON geometry: point-in-polygon with correct hole handling, bounding box, centroid, signed area in square metres, perimeter length, and ring winding order for a geometry supplied in the request. Accepts Polygon and MultiPolygon, and a GeoJSON Feature wrapping either. Area and length are geodesic on the WGS-84 ellipsoid, correct at any latitude; containment is planar in lon/lat. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoPoint latitude; with lon, runs the containment test. Accepted: a number between -90 and 90.
lonNoPoint longitude; with lat, runs the containment test. Accepted: a number between -180 and 180.
opsNoComma-separated subset of contains,bbox,centroid,area,perimeter,winding. Default all. Accepted: comma-separated subset of contains, bbox, centroid, area, perimeter, winding.
geometryYesURL-encoded GeoJSON Polygon, MultiPolygon or a Feature wrapping one. At most 3072 characters and 2000 coordinate pairs. Accepted: valid GeoJSON.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description goes well beyond them: it discloses the pricing model ($0.05 per successful call over x402/USDC on Base), the geodesic-versus-planar distinction for area/length versus containment, correct hole handling, and the input size limits. Payment and coordinate-system behavior are exactly the kind of traits an agent cannot infer from structured fields.

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

Conciseness4/5

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

Two dense sentences that front-load the core purpose and then the output set, with pricing last. No filler, though the enumeration of six outputs in one sentence makes it slightly heavy to scan.

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 no output schema, the description enumerates every returned value (bbox, centroid, area, perimeter, winding) and specifies units (square metres), so an agent knows what it gets back. Combined with the pricing and geometry-acceptance notes, nothing needed to call it correctly is missing.

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, but the description adds real semantic value beyond the schema: it explains that area and perimeter are geodesic on WGS-84 while containment is planar in lon/lat, which resolves ambiguity the schema's 'comma-separated subset' text does not. The 'ops' semantics (default all) are stated in both places.

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?

States a specific verb and resource ('point in polygon check') and enumerates the full set of computed outputs: bbox, centroid, signed area, perimeter, winding order. It also names the accepted geometry types, so an agent can distinguish it from sibling geo_distance without opening the schema.

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

Usage Guidelines3/5

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

It describes what inputs are accepted (Polygon, MultiPolygon, or a Feature wrapping either) and implies the containment test runs when lat/lon are supplied, but it never states when to prefer this over related siblings such as geo_distance or when the containment op is inapplicable. Usage is implied from the input description rather than stated as guidance.

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

punycode_convertPunycode converter: IDN domain to ASCII and back, with IDNA2008 label validationA
Read-onlyIdempotent
Inspect

Punycode converter: convert internationalised domain names between Unicode and ASCII punycode in either direction, label by label, and validate each label against IDNA2008: length, leading and trailing hyphens, the hyphen-hyphen rule at positions 3 and 4, disallowed code points and bidirectional rules. Returns both forms, the per-label breakdown and the first rule violated. Strict mode is IDNA2008 (UTS 46 non-transitional); it may reject names /v1/code/url displays. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoascii, unicode or both (default). Validated only: the response always carries both forms. Accepted: ascii, unicode, both.
domainYesDomain name in Unicode or punycode form. Accepted: at most 512 characters.
strictNotrue (default) applies IDNA2008 strictly; false uses UTS 46 transitional (IDNA2003-compatible) processing, which maps e.g. ß to ss; current browsers and /v1/code/url use non-transitional processing, so its output can differ from them. Accepted: true or false.

TDQS

A4.2/5.0
Behavior5/5

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

Going well beyond the readOnly/idempotent annotations, it discloses the return payload (both forms, per-label breakdown, first rule violated), the specific validation rules applied, that strict mode may reject names, and the cost and payment path ($0.05 per successful call via x402/USDC on Base). This is exactly the extra context annotations cannot carry.

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?

Purpose is front-loaded and each sentence carries information (direction, validation, mode semantics, price). The dense enumeration of IDNA2008 rules and the garbled fragment 'it may reject names /v1/code/url displays' cost it a point on polish.

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 no output schema, the description still tells the agent what comes back (both forms, per-label breakdown, first rule violated) and covers failure and cost. For a 3-parameter, single-purpose converter this is sufficient to call correctly.

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% and both enums are already fully documented with defaults and the ß→ss example. The description restates the strict-mode semantics rather than adding new parameter meaning, so the 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?

States a specific verb and resource: convert internationalised domain names between Unicode and ASCII punycode in either direction, label by label. The scope plus the embedded IDNA2008 validation makes it clearly distinct from neighbours like cyrillic_transliterate or url_parse without opening any schema.

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

Usage Guidelines3/5

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

It explains the strict-vs-non-strict choice (IDNA2008 vs UTS 46 transitional) and warns that output can differ from browsers and URL displays, which implies when each mode applies. However it never says when to pick this tool over siblings such as url_parse or unicode_confusables_check, so tool-selection guidance is left to inference.

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

rrule_expandRRULE expander: RFC 5545 recurrence rule to concrete occurrence datesA
Read-onlyIdempotent
Inspect

RRULE expander: expand an RFC 5545 recurrence rule into concrete occurrence timestamps. Accepts an RRULE string with DTSTART, an IANA time zone, and optional EXDATE and RDATE lists, and returns up to 200 occurrences as both local wall-clock times and UTC instants. Supports FREQ, INTERVAL, COUNT, UNTIL, BYDAY, BYMONTHDAY, BYMONTH, BYSETPOS and WKST. Occurrences moved by a DST gap carry gap: true. Rules needing over 50,000 candidate evaluations are rejected. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
zoneYesIANA time zone id. Accepted: an IANA time zone id, e.g. Europe/Amsterdam.
afterNoRFC 3339 instant; skip occurrences before it. Accepted: RFC 3339 timestamp.
countNoMaximum occurrences to return, 1-200. Default 20. Accepted: integer 1-200.
rdateNoComma-separated local datetimes to add. Accepted: at most 1024 characters.
rruleYesRFC 5545 RRULE, e.g. FREQ=MONTHLY;BYDAY=-1FR;COUNT=6. Accepted: at most 512 characters.
exdateNoComma-separated local datetimes to exclude. Accepted: at most 1024 characters.
dtstartYesFirst occurrence, YYYY-MM-DDTHH:MM:SS local to zone. Accepted: YYYY-MM-DDTHH:MM:SS.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly, idempotent, and non-open-world, but the description adds substantial behavior beyond them: a hard cap of 200 occurrences, dual local/UTC output, a gap:true flag on DST-shifted occurrences, rejection of rules requiring over 50,000 candidate evaluations, and the $0.05 x402/USDC-on-Base pricing. This is exactly the extra context an agent needs before invoking a paid, quota-limited 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 purpose is front-loaded in the first sentence, followed by inputs, capabilities, edge-case behavior, and pricing in compact order. It is dense but nearly every sentence carries information; the pricing clause is a slight tail-end addendum but still actionable.

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 correctly describes the return shape (local wall-clock plus UTC instants, gap flag, 200-item cap), the cost, and the computational rejection limit. Remaining gaps are minor: error behavior on malformed RRULE strings and pagination semantics for the after parameter are not described.

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, but the description adds genuine value the schema lacks: it enumerates which RRULE parts are supported (FREQ, INTERVAL, COUNT, UNTIL, BYDAY, BYMONTHDAY, BYMONTH, BYSETPOS, WKST), which is the key uncertainty for a rule-expansion call. It does not clarify the after/skip semantics beyond the schema, so it falls short of a 5.

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: expanding an RFC 5545 recurrence rule into concrete occurrence timestamps, and immediately enumerates the accepted inputs (RRULE, DTSTART, zone, EXDATE, RDATE). This clearly separates it from sibling tools like timezone_convert, calendar_convert, and dst_transitions, which handle one-off conversions rather than recurrence expansion.

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?

Usage is implied rather than stated: an agent can infer this is the tool for turning a recurrence rule into a list of dates, and the DST-gap and 50,000-evaluation notes hint at edge cases. However, it never says when to prefer this over calendar_convert or dst_transitions, nor any explicit preconditions or exclusions, leaving routing to inference.

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

semver_compareSemver parser: parse and compare versions, check range satisfactionA
Read-onlyIdempotent
Inspect

Semver parser and comparator: parse a semantic version into major, minor, patch, prerelease and build parts; compare two versions by precedence including prerelease ordering; or test whether a version satisfies a range expression using caret, tilde, hyphen, x-ranges and comparator sets. Returns the parsed structure, the comparison result and the reason a range did not match. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
aNoFirst version for op=compare. Accepted: at most 256 characters.
bNoSecond version for op=compare. Accepted: at most 256 characters.
opNoparse (default), compare, satisfies or sort. Accepted: parse, compare, satisfies, sort.
rangeNoRange expression for op=satisfies, e.g. ^1.2.0. Accepted: at most 256 characters.
versionNoVersion to parse (op=parse) or test (op=satisfies). Accepted: at most 256 characters.
versionsNoComma-separated versions for op=sort, at most 100. Accepted: at most 100 versions.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world), and the description adds genuinely new context: pricing ($0.05 per successful call, paid via x402 in USDC on Base) and what is returned (parsed structure, comparison result, failure reason). It does not mention rate limits or error/edge handling, but the cost and auth model is 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?

Front-loaded with the tool's identity and capabilities, then the return values, then pricing—a sensible order with no filler. It is a single dense multi-clause sentence, which is slightly harder to scan but every clause carries 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 six-parameter, multi-op tool with no output schema and no required params, the description covers what each op does, what comes back, and the payment requirement, which is enough to invoke correctly. The only real omission is the sort operation present in the enum.

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%, so every parameter is already documented in the schema; baseline is 3. The description reinforces op-to-parameter mapping (two versions for compare, range+version for satisfies) but adds no syntax or format detail beyond the schema, and it never explains the versions/sort parameter.

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 names the specific operations (parse, compare, satisfies) and the resource (semantic version), so an agent can immediately tell it apart from siblings like string_similarity or base_convert. It omits one enum mode, sort, which is inconsistent with the schema's op list, keeping it short of a 5.

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 maps each operation to its intent and its inputs ('compare two versions by precedence including prerelease ordering', 'test whether a version satisfies a range expression'), giving clear context for choosing an op. There are no explicit when-not conditions or sibling alternatives, but the sibling set is functionally unrelated so the routing risk is low.

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

slug_generateSlug generator: Unicode-aware URL slug with transliterationA
Read-onlyIdempotent
Inspect

Slug generator: turn arbitrary text into a URL-safe slug. Decomposes accents, transliterates German umlauts, Scandinavian and Turkish letters, the ligatures that lose meaning under plain NFD, and Cyrillic (Russian, Ukrainian, Belarusian, Bulgarian, Serbian, Macedonian; language from lang or inferred from the letters). Lowercases, collapses separators, truncates on a word boundary. Returns the slug plus what was removed. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
maxNoMaximum slug length 1-512, default 96. Truncates at the last complete word. Accepted: integer 1-512.
caseNolower (default), preserve or upper. Accepted: lower, preserve, upper.
langNoISO 639-1 code for locale-sensitive folding (de: ü->ue) and the Cyrillic table (ru, uk, be, bg, sr, mk). Default locale-neutral; for Cyrillic the language is then inferred from letters unique to Ukrainian, Belarusian, Serbian or Macedonian, else Russian BGN/PCGN letters with ISO 9 (accents folded) for the rest. Accepted: an ISO 639-1 language code.
textYesText to slugify, at most 2048 characters. Accepted: at most 2048 characters.
separatorNoSeparator: - (default), _, . or empty. Accepted: -, _, . or empty.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/local behavior, but the description adds genuinely new context the annotations cannot: a per-call price ($0.05 over x402 with USDC on Base), the fact that it returns the slug plus what was removed (no output schema exists), and the word-boundary truncation behavior. Payment/auth requirements are exactly the kind of disclosure annotations cannot carry.

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?

Front-loaded with the core verb+resource, then progressively narrower detail, ending with the pricing fact. Slightly dense in the middle sentence enumerating letter groups, but each sentence carries usable information.

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 stateless transform with no output schema, the description fills the needed gaps: what is produced (slug plus a removal report), the pricing model, and the folding behavior. Nothing essential to invoking it correctly appears to be 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?

Schema description coverage is 100%, so the schema already documents max, case, lang, separator and text in detail. The description largely restates the same transliteration rules (umlauts, Cyrillic table, language inference) rather than adding syntax or constraints beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a concrete verb+resource ('turn arbitrary text into a URL-safe slug') and scopes it well: accent decomposition, umlaut/Scandinavian/Turkish ligature/Cyrillic transliteration, lowercasing, separator collapsing, word-boundary truncation. It does not explicitly distinguish itself from the sibling cyrillic_transliterate or punycode_convert, so the sibling differentiation is left implicit.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no routing to alternatives. It never says how it differs from cyrillic_transliterate (which overlaps on the Cyrillic case) or punycode_convert, so an agent must infer which tool to pick.

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

solidity_function_selectorSolidity function selector: Keccak-256, 4-byte selector and event topic from a signatureA
Read-onlyIdempotent
Inspect

Solidity function selector and event topic: compute the Keccak-256 hash of a function or event signature and derive the 4-byte selector and the 32-byte topic. Normalises the signature first — strips parameter names, expands uint to uint256 and the other aliases, flattens tuples — so a signature copied from source code produces the same selector as the canonical form. Also hashes arbitrary text or hex bytes with Keccak-256. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoAlternative to signature: raw data to Keccak-256 hash. Accepted: at most 8192 characters.
kindNofunction (default), event or error. Accepted: function, event, error.
encodingNoEncoding of data: utf8 (default) or hex. Accepted: utf8, hex.
signatureNoSolidity function, event or error signature, e.g. transfer(address to, uint amount). Accepted: at most 1024 characters.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint, so the bar is lower, and the description goes beyond them by disclosing the signature normalisation rules (parameter names stripped, uint expanded to uint256, tuples flattened) and the payment model ($0.05 per successful call via x402/USDC on Base). It omits error behaviour for malformed signatures.

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?

Four sentences, front-loaded with the primary capability before the normalisation detail and the pricing footnote. Efficient overall, though the pricing sentence is dispensable for invocation and the normalisation sentence is dense.

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, and the description does cover the return shape (4-byte selector, 32-byte topic), plus payment and normalisation context. Remaining gaps are minor: no statement of precedence between signature and data, and no error/edge-case behaviour.

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 a 3 is the baseline, but the description adds real meaning: it explains that normalisation makes a source-copied signature hash identically to the canonical form, and that the data parameter hashes arbitrary text or hex bytes rather than signatures. That clarifies intent beyond the enum/length descriptions in 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?

States a specific verb (compute/derive), a specific algorithm (Keccak-256), and concrete artifacts (4-byte selector, 32-byte event topic) tied to a named domain (Solidity). This is precise enough to separate it from the generic sibling hash_generate without opening either schema.

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

Usage Guidelines3/5

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

Usage is implied by the domain description rather than stated: an agent can infer it is for Solidity signatures, but there is no explicit when-to-use/when-not, no mention of hash_generate as the alternative for non-Keccac hashes, and no statement of what happens when neither signature nor data is supplied.

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

statistics_calculateStatistics calculator: mean, median, standard deviation, quartiles and percentilesA
Read-onlyIdempotent
Inspect

Statistics calculator for a numeric array in one call: count, sum, mean, median, mode, variance and standard deviation honouring ddof (default 1, the sample form; 0 gives the population form) plus always-population *_population fields, min, max, range, the quartiles and interquartile range, skewness, kurtosis, and any requested percentiles. Percentiles use a named interpolation method so the result is reproducible rather than implementation-defined. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
ddofNoDelta degrees of freedom for variance/stdev: 1 (default, sample, n-1) or 0 (population, n). The *_population fields are always population. Accepted: integer 0-1.
methodNoPercentile interpolation (NumPy/R names): linear (default), nearest, lower, higher, midpoint. Accepted: linear, nearest, lower, higher, midpoint.
valuesYesComma-separated finite numbers, at most 500 values. Accepted: comma-separated finite numbers.
percentilesNoComma-separated percentiles 0-100, at most 20. Default 25,50,75. Accepted: numbers between 0 and 100.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world), and the description adds genuinely new operational context: ddof defaults to the sample form with always-population companion fields, percentile reproducibility is guaranteed via a named method, and each successful call costs $0.05 paid over x402 (USDC on Base). Disclosing billing and payment rail is material context an agent would not get from annotations.

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

Conciseness4/5

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

Purpose is front-loaded and the long output enumeration is justified for a statistics tool, since an agent must know whether mode, skewness, kurtosis and quartiles are included. The sentence is dense but every listed statistic earns its place; only the trailing pricing sentence is separable.

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 no output schema, the description fully compensates by enumerating every returned statistic (count, sum, mean, median, mode, variance/stdev, min, max, range, IQR, skewness, kurtosis, percentiles). Combined with the 100%-covered input schema, nothing needed to call or interpret the result 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?

Schema description coverage is 100%, so the ddof, method, values and percentiles semantics are already documented in the schema and the description largely restates them. It adds the rationale for the method parameter (reproducible rather than implementation-defined), which is marginal value beyond the enum listing, so baseline 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?

States a specific verb and resource ('Statistics calculator') plus the precise input shape ('numeric array in one call') and enumerates the outputs produced. No sibling tool in the list computes statistics, and the enumeration makes the scope unambiguous.

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 'in one call' framing signals this is the consolidated path for computing a batch of descriptive statistics rather than chaining narrower calls, which is useful routing context. However, it never states explicit when-to-use or when-not conditions, so guidance is contextual rather than prescriptive.

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

string_similarityString similarity: Levenshtein, Jaro-Winkler distance and Soundex/Metaphone phonetic keysA
Read-onlyIdempotent
Inspect

String similarity: compare two strings and return every standard measure in one call: Levenshtein and Damerau-Levenshtein edit distance, normalised similarity, Jaro and Jaro-Winkler, longest common subsequence, Dice coefficient on character bigrams, and the Soundex, Metaphone and NYSIIS phonetic keys of each string. Optional case folding, accent folding and whitespace normalisation before comparison. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesFirst string, at most 512 characters. Accepted: at most 512 characters.
bYesSecond string, at most 512 characters. Accepted: at most 512 characters.
foldNoComma-separated folds before comparing: case, accents, space, punct. Default case. Accepted: comma-separated subset of case, accents, space, punct.
onlyNoComma-separated measure names to compute: levenshtein, damerau_levenshtein, normalised_similarity, jaro, jaro_winkler, lcs_length, dice, phonetic (all three keys), soundex, metaphone, nysiis. Default all. Accepted: comma-separated subset of levenshtein, damerau_levenshtein, normalised_similarity, jaro, jaro_winkler, lcs_length, dice, phonetic, soundex, metaphone, nysiis.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the description's contributions are the ones that matter here: the $0.05 per successful call price, the x402/USDC-on-Base payment mechanism, and the fact that folds are applied *before* comparison. It does not describe the output shape or error behavior on over-length input, which keeps it below 5.

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?

Front-loaded with the core action, then the metrics, then preprocessing, then price — a sensible priority order. The metric list is long but each name is load-bearing for selecting this tool, and the only slack is the somewhat dense enumeration.

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 pure computation tool with no output schema, the description lists every measure returned so the agent knows the response contents, plus cost before committing to a paid call. Only the result format and input-validation failure behavior are left unspecified, which is a minor gap for a deterministic calculator.

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%, so the schema already documents all four parameters including the full 'fold' and 'only' value lists. The description adds only the ordering nuance that folding happens before comparison; otherwise it recapitulates what the schema already states, so the baseline 3 is correct.

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 action (compare two strings) and exhaustively enumerates the resource/measures returned (Levenshtein, Damerau-Levenshtein, Jaro, Jaro-Winkler, LCS, Dice, Soundex, Metaphone, NYSIIS). No sibling tool overlaps with string similarity, so the agent can immediately tell what this does and that nothing else in the list competes.

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?

Usage is only implied through the enumerated measures and preprocessing options; there is no explicit when-to-use statement, no conditions selecting it over alternatives (e.g. unicode_confusables_check or hash_generate), and no stated exclusions. Adequate for a self-evidently scoped utility, but guidance is left to inference.

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

timezone_convertTimezone converter: instant to local time in an IANA time zone and back, with UTC offset and DST stateA
Read-onlyIdempotent
Inspect

Timezone converter: convert an instant to wall-clock time in a named IANA time zone, or a wall-clock time in a zone back to an instant. Returns the local date and time, the UTC offset in ±HH:MM and seconds, the zone abbreviation, whether DST is in effect, the ISO week date, and the day of year. Handles the ambiguous and skipped local times at DST boundaries explicitly rather than guessing. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
zoneYesIANA time zone id, e.g. Europe/Amsterdam. Accepted: an IANA time zone id, e.g. Europe/Amsterdam.
localNoWall-clock time YYYY-MM-DDTHH:MM[:SS] in zone, converted back to an instant. Mutually exclusive with instant. Accepted: YYYY-MM-DDTHH:MM[:SS].
instantNoRFC 3339 timestamp or integer Unix seconds/milliseconds. Defaults to now. Mutually exclusive with local. Accepted: RFC 3339 timestamp or integer epoch.
ambiguousNoOnly with local: which instant a repeated local time maps to. Default earlier. Accepted: earlier, later, reject.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, closed-world), so the bar is lower, and the description still adds real behavioral context: the exact return fields, DST boundary handling policy, and a per-call price with the x402/USDC on Base payment mechanism. Cost and payment rail are non-obvious operational facts an agent must know before invoking, which is above what the annotations convey.

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

Conciseness4/5

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

Three dense sentences, front-loaded with the capability and then the return fields, with no filler. The opening 'Timezone converter:' mildly duplicates the name/title, which is the only wasted token.

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 no output schema, the description compensates by enumerating the returned values (local date/time, offset in ±HH:MM and seconds, abbreviation, DST state, ISO week date, day of year), and it also discloses the payment requirement. Nothing material needed to call it correctly 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?

Schema description coverage is 100%, so the schema already documents zone, local, instant, and the ambiguous enum with its default. The description only restates the local/instant duality at a high level and adds no syntax, format, or precedence detail beyond the schema, so the baseline 3 is correct.

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?

States a specific verb (convert) plus resource (instant <-> wall-clock time in an IANA zone) and names the return shape. An agent can distinguish this from siblings like dst_transitions or calendar_convert from the description alone, since it is the only bidirectional instant/wall-clock converter with DST ambiguity handling.

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?

Gives clear context for both directions of use and explicitly notes that ambiguous and skipped local times at DST boundaries are handled rather than guessed, which is exactly the situation that differentiates it from a naive converter. It stops short of naming an alternative tool or an explicit 'do not use for X' exclusion, so it is strong but not fully routing.

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

unicode_confusables_checkUnicode normalization (NFC/NFKC), script detection and homoglyph/confusable checkA
Read-onlyIdempotent
Inspect

Unicode normalization and confusables check: apply NFC, NFD, NFKC or NFKD, report which forms a string is already in, list the scripts present (all Unicode scripts), and flag confusable and homoglyph characters — Cyrillic а in a Latin word, fullwidth or mathematical look-alikes, all-look-alike words — plus zero-width joiners, bidirectional overrides, invisible and blank characters. Returns per-character detail with code points, names and the ASCII character each imitates. Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
formNoNormalisation form to apply, default nfc. Accepted: nfc, nfd, nfkc or nfkd.
textYesText to analyse, at most 1024 characters. Accepted: at most 1024 characters.
detailNosummary (default) or full per-code-point detail (capped at 256 entries). Accepted: summary, full.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safe read-only/idempotent/closed-world profile, so the bar is lower. The description adds real value beyond that: the return shape (per-character code points, names, ASCII imitation) and a mandatory pricing/auth detail ($0.05 per call over x402 USDC on Base) that an agent must know before invoking. It doesn't mention rate limits or the exact response envelope, keeping it just short of a 5.

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

Conciseness4/5

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

The description is front-loaded with the core normalization/confusables capability in one dense sentence, then closes with the return format and price. It is appropriately sized for the feature breadth, with only mild density in the parenthetical character list.

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-parameter, no-output-schema utility, the description covers what it does, what it returns, and the payment precondition, so an agent has everything needed to call it correctly. Nothing material is missing given the structured fields it already has.

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%, so the schema already documents form, text, and detail. The description reinforces the accepted forms and the detail flag but adds no syntax or default nuance the schema lacks, which matches the baseline 3 for full-coverage tools.

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 set of operations (NFC/NFD/NFKC/NFKD normalization, form detection, script listing, confusable/homoglyph flagging, invisible-character detection) against a clear resource (a text string). An agent can tell exactly what this does and how it differs from adjacent text tools like cyrillic_transliterate or string_similarity without opening a schema.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative sibling is named. The intended usage (spotting deceptive glyphs, normalizing input) is only implied by the feature list, leaving the agent to infer the routing.

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

url_parseURL parser: parse, canonicalize and extract the registrable domain (eTLD+1)A
Read-onlyIdempotent
Inspect

URL parser: parse and canonicalise a URL, and extract its registrable domain using the Public Suffix List — the part an agent needs to decide whether two URLs belong to the same owner. Returns scheme, host, port, path, decoded query parameters and fragment, the public suffix, the registrable domain (eTLD+1), the subdomain, whether the suffix is ICANN or private, plus a canonical form with default port, dot-segments and percent-encoding normalised. unicode_host uses WHATWG/UTS 46 (non-strict). Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute URL, or a bare hostname (https:// assumed). Accepted: an absolute URL, or a hostname.
baseNoBase URL to resolve url against as a relative reference. Accepted: an absolute URL.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/closed-world, but the description adds genuinely useful context beyond them: the full set of returned fields, the unicode_host normalization stance (WHATWG/UTS 46 non-strict), and the payment model ($0.05 per successful call via x402 USDC on Base). It stops short of describing failure behavior or what happens on invalid input.

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?

Purpose is front-loaded, then return payload, then the unicode_host caveat and pricing. Dense and information-bearing with no filler sentences, appropriate for a parse-and-canonicalize tool.

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?

No output schema exists, so the description carries the return-shape burden — and it enumerates scheme, host, port, path, decoded query params, fragment, suffix, eTLD+1, subdomain, ICANN/private flag, and canonical form. An agent has everything needed to call and interpret 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?

Schema description coverage is 100%, so the schema already documents url and base, and the baseline is 3. The description's parameter-adjacent note about unicode_host normalization doesn't actually map to either declared parameter, so it adds little 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?

States specific verbs and resource: parse, canonicalize, and extract the registrable domain (eTLD+1) via the Public Suffix List. An agent can separate it from punycode_convert or unicode_confusables_check without opening any schema.

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

Usage Guidelines3/5

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

Implies the use case with 'the part an agent needs to decide whether two URLs belong to the same owner,' which is real context. But it never states when to prefer this over adjacent siblings like punycode_convert or unicode_confusables_check, and gives no exclusions.

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

vat_tax_id_validateVAT, tax ID and national ID validator: 23 countries, checksum only (VAT formats BE, DE, FR, IT, PL, AT, CH, IE)A
Read-onlyIdempotent
Inspect

VAT, tax ID and national ID validator: check a national identity, tax or company registration number against its country's official checksum rule. Covers 23 countries including NL BSN, ES NIF/NIE/CIF, IT codice fiscale, FR SIREN/SIRET, DE Steuer-ID, BE/PL/CZ national numbers, SE/NO/DK/FI personal numbers, BR CPF/CNPJ, AU ABN/TFN, UK NINo, IE PPS, US NPI/EIN. Structure and check digit only, no registry lookup; the number is never stored (logs keep only its length and character types). Price: $0.05 per successful call, paid over x402 (USDC on Base).

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesIdentifier type for that country, e.g. bsn, nif, cf, cpf. Accepted: an identifier kind supported for the country.
valueYesThe identifier. Separators (space . - /) are stripped before checking. Accepted: at most 64 characters.
countryYesISO 3166-1 alpha-2 country code, case-insensitive. One of the 23 supported countries; the United Kingdom is accepted as UK or GB (the response echoes what you sent). Accepted: one of the 23 supported ISO 3166-1 alpha-2 codes.

TDQS

A4.3/5.0
Behavior5/5

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

Annotations declare read-only and idempotent, and the description adds substantial non-annotation behavior: no registry lookup, no storage of the number, log retention limited to length and character types, and a $0.05 per-successful-call price via x402 (USDC on Base). Privacy, pricing, and side-effect profile are all 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?

Front-loaded with purpose and scope in the first sentence, with coverage, behavioral caveats, and pricing following in a logical order. The country/identifier enumeration is dense but earns its place by telling the agent which inputs are in scope.

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 carries the return-value burden; it conveys that validation is checksum-based and that country echoes back, which implies a validity response, though the exact response shape is not spelled out. Combined with the full behavioral disclosure, it is nearly complete for a stateless validator.

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%, so all three parameters are already documented, including separator stripping, the 64-character limit, case-insensitivity, and UK/GB handling. The description adds only a broad inventory of supported countries/kind examples, which is useful orientation but not new per-parameter semantics.

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?

States a specific verb+resource ('check a national identity, tax or company registration number against its country's official checksum rule') and enumerates the identifier families and countries covered. An agent can immediately distinguish it from siblings like iban_validate, gtin_barcode_validate, and crypto_address_validate.

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 phrase 'Structure and check digit only, no registry lookup' clearly delimits when this tool applies versus a registry/verification service, and the country/kind list signals the input domain. It does not, however, name a sibling alternative or state explicit exclusion conditions (e.g., what to use for IBANs instead).

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. 64 tool updates
    • Addedairport_lookup
    • Addedbase_convert
    • Addedbusiness_days_calculate
    • Addedcalendar_convert
    • Removedchain_address
    • Removedchain_selector
    • Removedcode_hash
    • Removedcode_idn
    • Removedcode_jwt
    • Removedcode_semver
    • Removedcode_url
    • Addedcountry_lookup
    • Addedcrypto_address_validate
    • Addedcurrency_lookup
    • Addedcyrillic_transliterate
    • Addeddst_transitions
    • Removedgeo_geohash
    • Removedgeo_pluscode
    • Removedgeo_polygon
    • Addedgeohash_encode_decode
    • Addedgtin_barcode_validate
    • Addedhash_generate
    • Addediban_generate
    • Addediban_validate
    • Removedid_gs1
    • Removedid_iban
    • Removedid_iban-build
    • Removedid_national
    • Removedid_security
    • Addedisin_cusip_sedol_validate
    • Addedjwt_decode
    • Addedmoney_split
    • Removednum_allocate
    • Removednum_radix
    • Removednum_stats
    • Removednum_words
    • Addednumber_to_words
    • Addednuts_region_lookup
    • Addedplus_code_encode_decode
    • Addedpoint_in_polygon
    • Addedpunycode_convert
    • Removedref_airport
    • Removedref_country
    • Removedref_currency
    • Removedref_nuts
    • Addedrrule_expand
    • Addedsemver_compare
    • Addedslug_generate
    • Addedsolidity_function_selector
    • Addedstatistics_calculate
    • Addedstring_similarity
    • Removedtext_similarity
    • Removedtext_slug
    • Removedtext_transliterate
    • Removedtext_unicode
    • Removedtime_business-days
    • Removedtime_calendar
    • Removedtime_dst
    • Removedtime_rrule
    • Removedtime_zone
    • Addedtimezone_convert
    • Addedunicode_confusables_check
    • Addedurl_parse
    • Addedvat_tax_id_validate
  2. 1 tool update
    • Changednum_words1 field changed
      • changedInput schema / properties / currency / description
        Previous value: -"ISO 4217 code. Required when form=currency. Accepted: an ISO 4217 alpha-3 code."New value: +"ISO 4217 code. Required when form=currency, rejected otherwise. Accepted: an ISO 4217 alpha-3 code."
  3. 8 tool updates
    • Changedcode_idn1 field changed
      • changedInput schema / properties / to / description
        Previous value: -"ascii, unicode or both (default). Accepted: ascii, unicode, both."New value: +"ascii, unicode or both (default). Validated only: the response always carries both forms. Accepted: ascii, unicode, both."
    • Changedgeo_distance1 field changed
      • changedInput schema / properties / distance_m / description
        Previous value: -"Distance in metres for op=destination. Accepted: a number >= 0."New value: +"Distance in metres for op=destination, 0 to 1e9 (about 25 Earth circumferences); larger values are 400 INVALID_PARAM. Accepted: a number between 0 and 1e9 (metres)."
    • Changedgeo_pluscode2 fields changed
      • changedInput schema / properties / length / description
        Previous value: -"Code length for op=encode: 2,4,6,8,10 (default),11,12,13,14,15. Accepted: one of 2,4,6,8,10,11,12,13,14,15."New value: +"Integer code length for op=encode: one of 2,4,6,8,10 (default),11,12,13,14,15. Other integers in 2-15 are 400 UNSUPPORTED_VALUE. Accepted: one of 2,4,6,8,10,11,12,13,14,15."
      • removedInput schema / properties / length / enum
        Removed value: -[
        -  "2",
        -  "4",
        -  "6",
        -  "8",
        -  "10",
        -  "11",
        -  "12",
        -  "13",
        -  "14",
        -  "15"
        -]
    • Changedid_national1 field changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO 3166-1 alpha-2 country code, case-insensitive. One of the 23 supported countries. Accepted: one of the 23 supported ISO 3166-1 alpha-2 codes."New value: +"ISO 3166-1 alpha-2 country code, case-insensitive. One of the 23 supported countries; the United Kingdom is accepted as UK or GB (the response echoes what you sent). Accepted: one of the 23 supported ISO 3166-1 alpha-2 codes."
    • Changedref_nuts1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"NUTS code, 2-5 characters, case-insensitive (level-3 codes may contain letters, e.g. NL32B). Accepted: 2 to 5 characters matching ^[A-Z]{2}[0-9A-Z]{0,3}$."New value: +"NUTS code, 2-5 characters, case-insensitive (level-3 codes may contain letters, e.g. NL32B). A GR or GB prefix is accepted for EL or UK. Accepted: 2 to 5 characters matching ^[A-Z]{2}[0-9A-Z]{0,3}$."
    • Changedtext_similarity1 field changed
      • changedInput schema / properties / only / description
        Previous value: -"Comma-separated measure names to compute. Default all. Accepted: comma-separated measure names."New value: +"Comma-separated measure names to compute: levenshtein, damerau_levenshtein, normalised_similarity, jaro, jaro_winkler, lcs_length, dice, phonetic (all three keys), soundex, metaphone, nysiis. Default all. Accepted: comma-separated subset of levenshtein, damerau_levenshtein, normalised_similarity, jaro, jaro_winkler, lcs_length, dice, phonetic, soundex, metaphone, nysiis."
    • Changedtext_slug1 field changed
      • changedInput schema / properties / lang / description
        Previous value: -"ISO 639-1 code for locale-sensitive folding (de: ü->ue, tr: dotless i). Default locale-neutral. Accepted: an ISO 639-1 language code."New value: +"ISO 639-1 code for locale-sensitive folding (de: ü->ue) and the Cyrillic table (ru, uk, be, bg, sr, mk). Default locale-neutral; for Cyrillic the language is then inferred from letters unique to Ukrainian, Belarusian, Serbian or Macedonian, else Russian BGN/PCGN letters with ISO 9 (accents folded) for the rest. Accepted: an ISO 639-1 language code."
    • Changedtext_transliterate1 field changed
      • changedInput schema / properties / standard / description
        Previous value: -"Romanisation standard, e.g. iso-9, bgn-pcgn. Default: the first listed for the detected script. Accepted: a romanisation standard supported for the script."New value: +"Romanisation standard: iso-9 (default; all ISO 9:1995 Cyrillic letters) or bgn-pcgn (BGN/PCGN Russian system, Russian letters only). Accepted: iso-9 or bgn-pcgn (Russian letters only) for cyrillic."
  4. 3 tool updates
    • Addedid_iban
    • Addedid_iban-build
    • Changedref_country2 fields changed
      • changedInput schema / properties / code / description
        Previous value: -"ISO 3166-1 alpha-2, alpha-3 or numeric code. Accepted: ISO 3166-1 alpha-2, alpha-3 or numeric code."New value: +"ISO 3166-1 alpha-2, alpha-3 or numeric code, or an ISO 3166-2 subdivision code such as NL-NH. Accepted: ISO 3166-1 alpha-2/alpha-3/numeric, or an ISO 3166-2 subdivision code."
      • changedInput schema / properties / include / description
        Previous value: -"Comma-separated: m49, currency, tld. Default all three. Accepted: comma-separated subset of m49, currency, tld."New value: +"Comma-separated: subdivisions, m49, currency, tld. Default m49,currency,tld. Accepted: comma-separated subset of subdivisions, m49, currency, tld."
  5. 31 tool updates
    • First observedchain_address
    • First observedchain_selector
    • First observedcode_hash
    • First observedcode_idn
    • First observedcode_jwt
    • First observedcode_semver
    • First observedcode_url
    • First observedgeo_distance
    • First observedgeo_geohash
    • First observedgeo_pluscode
    • First observedgeo_polygon
    • First observedid_gs1
    • First observedid_national
    • First observedid_security
    • First observednum_allocate
    • First observednum_radix
    • First observednum_stats
    • First observednum_words
    • First observedref_airport
    • First observedref_country
    • First observedref_currency
    • First observedref_nuts
    • First observedtext_similarity
    • First observedtext_slug
    • First observedtext_transliterate
    • First observedtext_unicode
    • First observedtime_business-days
    • First observedtime_calendar
    • First observedtime_dst
    • First observedtime_rrule
    • First observedtime_zone

Publisher details

Operator
Duo Leads
Operator website
https://duoleads.com
Vendor relationship
First-party
Trust center
Not available
Restrictions
Every tool call is paid: $0.05 per call over x402 (USDC on Base, eip155:8453), settled per request. No subscription, account or API key, and no admin approval. Payments are final. Use must comply with the terms, including sanctions law: https://api.duoleads.com/terms

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    IBAN validation across 89 countries, BIC/SWIFT and Swiss clearing lookup, batch validation, payment-reference, postal-address and Swiss QR-bill checks for AI agents. Connect via MCP or the REST API. Includes free quotas, paid credits and a Pro subscription. SEPA and country-risk indicators support payment-data checks; they do not confirm account ownership or replace beneficiary AML/KYC screening.
    13
    27 npm
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides deterministic micro-utilities as an MCP server, including free tools for conversion, text processing, hashing, encoding, ID generation, and regex, plus paid per-call tools for timezone, cron, RRULE, currency, diff, JSON Schema validation, and date math.
    13
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    IBAN validation, extraction, format specs, and BIC/SWIFT lookup tools for AI assistants, backed by ibanchecker.cash. Covers 90 countries; no IBAN data is stored.
    5
    23 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.