Skip to main content
Glama

Temsor API — Turkey & EU business data

Server Details

Turkey & EU business data: validation, sanctions screening, parsing, FX and fuel price history

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

31 tools
bic_validateSWIFT/BIC ValidationAInspect

Checks a SWIFT/BIC against ISO 9362 structure (8 or 11 characters), splits bank/country/location/branch, and names well-known institutions.

Payment files reject a BIC that is the wrong length or uses a forbidden character in the location code long before they care which bank it is. This checks the ISO 9362 pattern, flags test BICs (a 0 in the location code), and treats XXX as the primary office. A handful of well-known 8-character bank codes resolve to a name; anything else returns bankName null rather than a guess. This is not a lookup in the SWIFT directory. A structurally valid BIC can still be unissued, deactivated or mistyped by one letter that still fits the pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
bicYesSWIFT/BIC, 8 or 11 characters, with or without spaces.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the transparency burden. It discloses useful behavioral details: 8-character bank codes may resolve to a name, unknown ones return bankName null, test BICs are flagged, and XXX is treated as the primary office. It also warns that a structurally valid BIC may still be unissued, deactivated, or mistyped.

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 a strong purpose statement and each sentence conveys a distinct, useful idea. It is slightly long-winded because it repeats 'checks'/'ISO 9362' and includes payment-file motivation, but it never becomes verbose or irrelevant.

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 validation tool with one parameter and no output schema, the description gives strong context: it explains components, well-known names, test BICs, the directory-lookup caveat, and the possibility of false structural confidence. The only minor gap is that it doesn't describe the exact response shape for an invalid BIC, such as a valid boolean versus thrown errors.

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

Parameters3/5

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

The schema already explains the bic parameter with 100% coverage, so the baseline is 3. The description mostly restates the same length/spacing constraints and adds behavioral context such as location-code 0 semantics. It does not add meaningfully new parameter-specific guidance beyond that.

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 ('Checks a SWIFT/BIC against ISO 9362 structure'), names the exact resource, and further explains it splits bank/country/location/branch and may resolve well-known institutions. This clearly differentiates it from the sibling validator tools.

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

Usage Guidelines4/5

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

The description gives clear context for when this tool is relevant: validating BIC structure for payment files, flagging test BICs, and confirming ISO 9362 pattern. It also provides an important when-not guarantee: it is not a SWIFT directory lookup. It does not name alternative sibling tools explicitly, but the exclusion is clear.

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

container_validateISO 6346 Container NumberAInspect

Validates an ISO 6346 freight-container number: owner code, category letter, serial and check digit.

Bills of lading and terminal scans mistype container numbers constantly; the check digit (ISO 6346) catches almost all of those before a customs filing. The fourth letter is the category (U freight, J equipment, Z chassis, R reefer). Owner codes are not resolved to a company — BIC's owner-code register is a separate paid product. A valid number is arithmetically self-consistent, not proof the box exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesISO 6346 container number, e.g. CSQU3054383.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses important limitations: owner codes are not resolved to a company, and a valid number is self-consistent but not proof the box exists. It also explains the meaning of the category letter (U, J, Z, R). This adds valuable behavioral context beyond the schema.

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

Conciseness5/5

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

The description is concise and well-structured. It opens with a clear one-sentence definition, then provides context, limitations, and category meanings in efficient sentences. There is no wasted wording; every sentence adds value.

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

Completeness4/5

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

Given the tool's complexity (single parameter, no output schema), the description is quite complete. It explains the standard, common相交s,the李晓明提供背景, limitations, and usage context. It could arguably cover failure scenarios, but for a simple validation tool it is strong.

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

Parameters4/5

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

Schema coverage is 100% (the single parameter 'code' is fully described in the schema), so baseline is 3. The description adds value by providing an example ('CSQU3054383') and clarifying the structure (owner code, category letter, serial, check digit), which gives semantic meaning beyond the schema's generic description.

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

Purpose5/5

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

The description explicitly states the tool 'Validates an ISO 6346 freight-container number' and enumerates the components (owner code, category letter, serial, check digit), which is a specific verb+resource. It distinguishes itself from siblings by focusing on container validation, unlike bic_validate or shipping_identify.

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

Usage Guidelines4/5

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

The description explains when to use it: 'Bills of lading and terminal scans mistype container numbers constantly; the check digit catches almost all of those before a customs filing.' It implies use for validating container numbers in shipping contexts, but does not explicitly contrast with siblings like shipping_identify, though the context is clear.

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

creditor_refRF Creditor ReferenceAInspect

Validates or generates an ISO 11649 RF creditor reference (mod-97 check digits).

SEPA credit transfers carry an RF creditor reference so remittance data survives the payment chain. The check digits are the same ISO 7064 mod-97 used for IBAN: RF and the two digits move to the end, letters become 10–35, remainder must be 1. If the input already starts with RF and two digits it is validated; otherwise a 1–21 character alphanumeric payload is encoded. A bad checksum is rejected with 400 — a self-inconsistent reference must not enter a payment file.

ParametersJSON Schema
NameRequiredDescriptionDefault
referenceYesISO 11649 RF creditor reference, or a 1–21 character payload to encode.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the exact algorithm ('RF and the two digits move to the end, letters become 10–35, remainder must be 1'), the validation-vs-generation decision, the length constraint, and the error behavior ('bad checksum is rejected with 400'). This is exceptionally transparent about how the tool behaves beyond a generic validate-or-generate summary.

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?

Four sentences, each earning its place: the core verb, the SEPA context, the algorithm, and the rejection policy. The text is front-loaded with the main purpose and then layered with increasingly specific behavioral detail without fluff or repetition of structural metadata.

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

Completeness4/5

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

The description is complete enough for an agent to understand input forms, behavior, and a meaningful error condition. The only notable gap is that for a dual-mode tool with no output schema, the exact successful return value is not explicitly stated (i.e., what a validity check returns vs. what a generated reference looks like). Still, given the algorithmic thoroughness and clear single parameter, the omission is minor.

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

Parameters4/5

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

The schema parameter itself is well-described ('ISO 11649 RF creditor reference, or a 1–21 character payload to encode'), giving 100% coverage. The description adds practical semantics by explaining that the reference-or-payload distinction is determined by the RF+two-digit prefix, and describes the encoding transformation. It does not fully describe output content, but for a single input parameter the meaning is strongly reinforced.

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 precise verb-resource pair: 'Validates or generates an ISO 11649 RF creditor reference', making the tool's scope unmistakable. It also distinguishes the tool from siblings like iban_validate by naming a specific standard (ISO 11649) and adding the mod-97 checksum mechanism. This is more than enough for an agent to know exactly what the tool does.

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

Usage Guidelines4/5

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

The description gives clear context: SEPA credit transfers carry RF references, and it explicitly states when validation versus generation occurs: 'If the input already starts with RF and two digits it is validated; otherwise a 1–21 character alphanumeric payload is encoded.' It does not name alternative tools, but the mode switch is so explicit that an agent knows exactly which input type to pass.

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

email_verifyE-mail VerificationAInspect

Checks an e-mail address: syntax, whether the domain can actually receive mail, disposable and role-account detection, and typo correction.

No SMTP probing. Most competitors connect to the target server and try RCPT TO, which sounds thorough but produces a confident-looking number you cannot trust: most servers are catch-all, the big providers refuse to answer, and doing it in bulk gets the probing IP blacklisted. We report only what is provable — whether the domain has a mail exchanger, whether it is a known disposable service, whether the mailbox belongs to a role rather than a person, and whether the domain looks like a typo of a common one (gmial.com → gmail.com). Addresses are also normalised, so Gmail dots and +tags stop creating duplicate signups.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesE-mail address to check.
rejectRoleAccountsNo
rejectFreeProvidersNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses all verification checks (syntax, domain mail exchanger, disposable, role, typo) and normalization, and explicitly states the absence of SMTP probing. It does not cover authentication needs or rate limits, but provides sufficient behavioral details.

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 informative but slightly verbose. It front-loads the main purpose and then explains the rationale. Every sentence adds value, though some trimming could improve conciseness.

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

Completeness4/5

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

Given the 3 parameters, no output schema, and no annotations, the description provides a good level of context about what the tool does and its methodology. It lacks details on output format and error handling, but is reasonably complete for a verification 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 low (33%), so the description must compensate. It explains the 'email' parameter by detailing the checks performed, but does not explicitly link the boolean parameters 'rejectRoleAccounts' and 'rejectFreeProviders' to their functions, though 'role-account detection' and 'disposable service' are mentioned. Adds some value but could be more explicit.

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

Purpose5/5

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

The description specifies a clear verb ('checks') and resource ('e-mail address'), and lists multiple verification aspects (syntax, domain mail receipt, disposable detection, role detection, typo correction, normalization). It distinguishes itself from competitors by explicitly stating what is not done (no SMTP probing).

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

Usage Guidelines4/5

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

The description explains what the tool does and does not do, and provides reasoning for its approach. It implicitly suggests when to use it (when reliable verification without SMTP probing is needed) but does not explicitly mention alternative sibling tools or when not to use it.

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

eu_vat_ratesEU VAT RatesAInspect

Dated EU-27 VAT rates (standard, reduced, super-reduced, parking) plus the Union OSS threshold. Not a goods classification.

Invoice software that hard-codes “Germany is 19%” breaks the day a member state moves a rate, and it never knew the reduced list. This is a point-in-time schedule of published rates for the EU VAT area, keyed by country and asOf. It is a schedule of rates, not which goods fall in which reduced band — there is no HS or NACE mapping. Great Britain, Northern Ireland, Switzerland, Norway and Türkiye are recognised and returned with null rates. If the table has no row for that date the rates are null; the last known line is not reused.

ParametersJSON Schema
NameRequiredDescriptionDefault
asOfNoISO date YYYY-MM-DD. Defaults to today UTC.
countryYesISO 3166-1 alpha-2 country (EL accepted as Greece).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral transparency burden, and it does well by explaining null-rate handling, non-EU countries being recognized but returning null rates, the absence of HS/NACE mapping, and the no-roll-forward behavior. It does not specify error behavior for unrecognized countries, which remains a small gap.

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

Conciseness3/5

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

The description is front-loaded with a concise summary, but the second paragraph contains some repetition: the disclaimer about not being a goods classification appears twice, and the motivation example, while illustrative, is somewhat tangential. Still, the remaining detail is relevant and compact.

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

Completeness4/5

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

For a simple two-parameter lookup tool with no output schema, the description covers the key behavioral cases: null for missing dates, special handling of non-EU countries, and the no-goods-classification boundary. It does not describe the return shape or error behavior is not fully specified, but for this tool the context is largely complete.

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

Parameters4/5

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

Input schema coverage is 100%, and the description adds meaningful context to both parameters: asOf governs point-in-time lookup with no fall-forward, and country is the EU/recognized-non-EU key. This goes beyond the schema's simple descriptions of ISO dates and country codes.

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

Purpose5/5

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

The description clearly identifies the tool as a point-in-time schedule of EU-27 VAT rates (standard, reduced, super-reduced, parking) plus the Union OSS threshold. It explicitly distinguishes itself from a goods classification and from sibling tools like eu_vat_validate by stating that it returns rates, not validation or goods classification.

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 it clear this is for looking up dated VAT rate schedules, not for classifying goods, and even explains how it should be used instead of hard-coding rates. It mentions the important limitation that the last known rate is not reused. It could be stronger by explicitly contrasting with eu_vat_validate, but the context is clear.

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

eu_vat_validateEU VAT Number ValidationAInspect

Validates an EU VAT number against the official VIES register, with per-country format checks and honest handling of upstream outages.

VIES is free but unreliable: member-state services drop out individually and a failed lookup can easily be mistaken for a rejection. Treating an outage as "invalid" means charging VAT to a customer who should have been exempt — an error with a price tag. So this endpoint never returns invalid when the service could not answer; it returns unknown and names the reason, and reports whether that country's service is currently up. Format is checked locally first, so an obvious typo never becomes an upstream call. Results are cached for 24 hours. Note that most member states do not publish the company name; when they do, it is returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
vatNumberYesVAT number with or without the country prefix, e.g. "DE811907980".
countryCodeNoCountry code, when the number is given without a prefix.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses key behaviors: local format check first, never returning 'invalid' on outage, returning 'unknown' with reason, reporting country service status, 24-hour caching, and company name when available.

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

Conciseness5/5

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

The description is concise, well-structured, and front-loaded with the main purpose, followed by essential behavioral details without unnecessary repetition.

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

Completeness4/5

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

For a tool with no output schema, the description covers return values (unknown, reason, service status, company name) adequately, though it does not list all fields explicitly.

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%, and the description adds clarifying examples and the relationship between vatNumber and countryCode, enhancing understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool validates an EU VAT number against the VIES register, with per-country format checks. It is distinct from sibling tools like email_verify or iban_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 description provides clear context on when to use (for EU VAT validation) and explains behavior during outages, but lacks explicit exclusions or direct comparisons to other tools.

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

iban_validateIBAN ValidationAInspect

Validates an IBAN from any of 70+ countries: checksum, country length and in-country account structure, and resolves the bank and branch codes.

Most free libraries stop at the mod-97 checksum. That only says the digits are self-consistent — not that the number could exist in that country. This checks the country's BBAN structure too, so a wrong-length or wrong-shaped account is rejected before your payment file reaches the bank. When only the two check digits are wrong, the correct ones are computed and returned as a suggestion, because that is what people actually mistype. Turkish, Dutch and Belgian IBANs additionally resolve to a bank name when the national code is in our table; otherwise bankName is null. This is not a SWIFT directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
ibanYesIBAN, with or without spaces.
expectCountryNoExpected country code (ISO 3166-1 alpha-2).

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It explains how the tool differs from mod-97-only validators, that it checks BBAN structure, that corrected check digits are suggested, and that bankName can be null. A slight internal inconsistency exists between 'bank and branch codes' and the later explanation only mentioning bankName, but overall behavior is well disclosed.

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

Conciseness5/5

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

The description is concise and front-loaded with the core action. Each subsequent sentence adds meaningful information — why stronger validation matters, correction behavior, bank-name limitations, and what the tool is not. No wasted words or repetition.

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

Completeness4/5

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

Given that there is no output schema, the description compensates by explaining corrective suggestions, null bankName values, and country-specific resolution. It could be more explicit about the exact return fields, but the key behavioral context is present and sufficient for an agent to select and interpret the 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?

Both parameters (iban and expectCountry) are fully described in the input schema, so the description's lack of extra parameter-level detail is acceptable. It adds no new semantic or syntax information beyond schema coverage, earning the baseline 3.

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?

Opening sentence clearly states the tool's purpose: 'Validates an IBAN from any of 70+ countries: checksum, country length and in-country account structure, and resolves the bank and branch codes.' This names a specific verb, resource, and scope, distinguishing it from the many sibling validation tools by focusing exclusively on IBANs.

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

Usage Guidelines4/5

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

The description gives clear context about when this tool exceeds basic checksum validation and warns against interpreting it as a SWIFT directory. It does not explicitly name alternative tools or state 'when not to use', but the limitations and unique added value are clearly implied.

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

id_mrzMRZ Check DigitsAInspect

Parses ICAO 9303 TD1/TD3 MRZ and verifies check digits — format check, not identity proof.

Machine-readable zones on passports and ID cards carry ICAO 9303 check digits (weights 7,3,1). This parses TD3 (2×44, typical passport) and TD1 (3×30, typical ID card) and reports each field check. A mismatched check digit is HTTP 200 with valid:false — the string is still an MRZ, just inconsistent. This is a format check, not identity proof: it does not confirm the document was issued or that the holder is who they claim.

ParametersJSON Schema
NameRequiredDescriptionDefault
mrzYesICAO 9303 MRZ text: TD3 two lines of 44, or TD1 three lines of 30.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It clearly discloses the weighted check-digit scheme, the supported layouts, and the important non-standard behavior that a mismatched digit returns HTTP 200 with valid:false. It also clarifies the limitation of the check, which goes beyond the minimal input schema without contradicting any 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?

The description is compact yet informative, front-loading the core purpose before explaining formats and edge-case behavior. Every sentence contributes either task definition, input format, or important result behavior. It could trim a slight repetition of the 'not identity proof' point, but it remains well-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?

The description covers the tool's input constraints (TD3 and TD1 line lengths), the algorithm context, and the notable valid:false response behavior. Since there is no output schema, it does partially explain the return behavior, though a more complete statement about the full result structure would be helpful. Overall, an agent can infer how and when to use the tool from the text.

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 the MRZ string parameter. The description repeats the TD3/TD1 format details but adds the practical note that TD3 is typical for passports and TD1 for ID cards. This confirms the parameter meaning without offering substantial new semantics beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Parses ICAO 9303 TD1/TD3 MRZ and verifies check digits.' It clearly distinguishes itself from the broader validator sibling set by naming the exact standard and formats, and it explicitly clarifies that it is a format check, not identity proof.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: to parse TD3 or TD1 MRZ strings and verify ICAO check digits. It also provides a notable exclusion by stating it is not identity proof and does not confirm issuance or holder identity, which helps an agent avoid overusing it, though it does not explicitly point to an alternative tool.

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

isin_validateISIN ValidationAInspect

Validates an ISIN (ISO 6166): country code, national identifier and the letter-aware check digit.

Portfolio imports and corporate-action files fail on a single mistyped ISIN. The check digit is a Luhn variant that first expands letters to two digits (A=10…Z=35), so a swapped letter is caught, not just a swapped digit. XS (international), EU and other reserved prefixes are accepted as country codes even though they are not ISO 3166 territories. A valid ISIN is self-consistent. It is not proof the security exists, is listed, or is the one you meant.

ParametersJSON Schema
NameRequiredDescriptionDefault
isinYesISIN, 12 characters, e.g. US0378331005.

TDQS

A4.2/5.0
Behavior4/5

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

Despite no annotations, the description elaborates on the validation algorithm (Luhn variant with letter expansion), which explains why swapped letters are caught, and clarifies that a valid ISIN does not prove security existence. This gives meaningful insight into the tool's behavior and limitations.

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

Conciseness5/5

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

The description is concise and front-loaded with the purpose, followed by contextual examples and caveats. Each sentence adds value with no redundancy.

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

Completeness4/5

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

For a simple validation tool with one parameter and no output schema, the description covers the algorithm, accepted country code exceptions, and a clear caveat about interpretation. It does not explicitly state return values, but given the low complexity and typical validation semantics, the description is nearly complete.

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

Parameters3/5

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

The schema fully covers the single parameter with length and example. The description adds context about what the validation checks (country code, national identifier, check digit) but does not provide additional parameter-specific semantics beyond that. Baseline of 3 is appropriate given full schema coverage.

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

Purpose5/5

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

The description clearly states the tool validates an ISIN per ISO 6166, specifying the three components checked (country code, national identifier, check digit). This is specific and distinguishes it from sibling validators like iban_validate or bic_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 description provides contextual when-to-use guidance via the portfolio/corporate-action failure scenario and explains edge cases (XS/EU prefixes). It does not explicitly name alternatives but identifies the tool's unique behavior and limitations, giving clear context for usage.

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

lei_lookupLEI LookupAInspect

Looks up a Legal Entity Identifier in the GLEIF register: legal name, registration status, country, and BIC.

Checksum-valid is not the same as currently registered — a LAPSED or MERGED LEI still passes ISO 7064. This endpoint checks the digits locally first (a typo never becomes an upstream call) then GET the GLEIF lei-records API. Results are cached for 24 hours. GLEIF allows 60 requests per minute; above that, or on timeout/5xx, we return unknown rather than invent a registration. HTTP 404 means the service answered and the LEI is not in the index (invalid). This is not a replacement for GLEIF’s own API for bulk. status is registration.status (ISSUED/LAPSED/MERGED/…), not entity.status (ACTIVE).

ParametersJSON Schema
NameRequiredDescriptionDefault
leiYesLegal Entity Identifier, 20 characters.

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral aspects: it explains the local checksum pre-check, caching (24 hours), rate limits (60/min), error handling (returns 'unknown' on timeout/rate limit, 404 meaning not found), and clarifies that 'status' refers to registration status, not entity status. This is exemplary transparency.

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

Conciseness4/5

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

The description is dense and informative, covering multiple aspects (validation, caching, rate limits, errors, status clarification) without redundancy. It is slightly long but each sentence adds value, so it remains concise and well-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?

Given the tool's simplicity (one parameter, no output schema), the description covers expected return data, potential errors, and operational constraints. It does not detail the exact JSON output structure, but that is acceptable without an output schema. The description is comprehensive enough for an agent to use the tool correctly.

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

Parameters3/5

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

The schema provides a description for the only parameter 'lei' ('Legal Entity Identifier, 20 characters'), giving full coverage. The tool description adds context about checksum validation but does not significantly enhance the parameter meaning 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?

The description clearly states the tool's purpose: 'Looks up a Legal Entity Identifier in the GLEIF register' and specifies the returned data (legal name, registration status, country, BIC). It distinguishes itself from sibling validators like 'lei_validate' by focusing on lookup rather than validation.

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 implies usage for individual LEI lookups by mentioning checksum pre-check and a single GET request. It explicitly states 'This is not a replacement for GLEIF’s own API for bulk,' providing guidance against bulk use. However, it does not directly compare with sibling tools like 'lei_validate'.

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

lei_validateLEI ValidationAInspect

Validates a 20-character Legal Entity Identifier (ISO 17442) with the ISO 7064 mod-97 check digits.

KYC and MiFID reporting reject an LEI that fails the check digits before anyone looks the entity up. The algorithm is the same family as IBAN (ISO 7064 mod 97-10) over all 20 characters; the remainder must be 1. The first 4 characters are the issuing LOU prefix, the next 14 the entity, the last 2 the check digits. This does not call GLEIF. A checksum-valid LEI can be lapsed, merged, or never issued. Use GLEIF's free API if you need "this legal entity is currently registered".

ParametersJSON Schema
NameRequiredDescriptionDefault
leiYesLegal Entity Identifier, 20 characters.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does well. It explains that the tool performs checksum validation only, does not call external services, and clarifies that a valid checksum does not guarantee registration. This transparently sets expectations about side effects and limitations.

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 concise without being terse. It is well-structured: a clear purpose statement, a practical rationale, algorithm details, and a caveat about registration. While slightly verbose, each sentence adds relevant information and avoids redundancy.

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

Completeness4/5

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

Given no output schema, the description does not need to explain return values. It covers the tool's behavior, limitations, and alternative usage, making it sufficient for an agent to decide when to call it. Minor omissions like error handling are not critical for a validation 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?

The schema description already specifies 'Legal Entity Identifier, 20 characters,' providing basic semantics. The tool description adds valuable detail about the LEI structure (first 4, next 14, last 2) and the checksum algorithm, enhancing the understanding of the parameter beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Validates a 20-character Legal Entity Identifier (ISO 17442) with the ISO 7064 mod-97 check digits.' It also distinguishes it from other validators by focusing on LEI and explicitly notes that it does not call GLEIF, which is a separate concern.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: it is suitable for 'KYC and MiFID reporting' when a checksum check is needed, and it advises using GLEIF's API if registration status is required. This clearly differentiates when to use this tool versus alternatives.

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

mcp_indexMCP Tool Surface IndexAInspect

Searchable, dated archive of what every public MCP server actually exposes — tool definitions, daily change feed, and rug-pull detection.

The official MCP registry publishes a server’s name and address but not its tool surface; the only way to learn what a server exposes is to connect and call tools/list. This endpoint does that daily across every public remote server and keeps the result. Three things become answerable that the source cannot answer: tool-level search (the registry has none), uptime, and — the one that matters for security — what a tool’s description said yesterday. In MCP a tool description is part of the context handed to the model, so it is prompt text; if it changes after the user approved the server, the server has silently injected new instructions. Each indexed tool also carries a review score with the matched evidence, so the claim can be checked rather than trusted. Measurement boundary: only initialize and tools/list are ever called — never tools/call.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch term (only `search`), e.g. `invoice`, `calendar`, `sql`.
daysNoWindow in days (`changes` and `server`).
toolNoTool name (only `tool` view).
typeNoEvent type filter (only `changes`), e.g. `tool_description_changed`.
viewNo`search`: search tool name/description · `changes`: change feed (the actual product) · `server`: per-day measurement history for one server · `tool`: definition history for one tool · `stats`: index-level totals.search
limitNo
serverNoRegistry server name, e.g. `com.temsor/api`. Required for `server`/`tool` views.
minRiskNoOnly tools whose review score is at or above this (only `search`).
severityNoOnly `changes`.

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden, and it delivers: it explicitly states the measurement boundary ('only initialize and tools/list are ever called — never tools/call'), explains the daily crawl, and discloses the security-relevant storage of historical descriptions. This gives a clear picture of the tool's safety profile.

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 longer than typical, but each sentence earns its place: the registered gap, the daily measurement process, the security motivation, and the tool-call boundary are all useful context. It is slightly discursive but well organized and front-loaded with the essential statement of what the tool is.

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

Completeness4/5

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

For a 9-parameter, no-output-schema tool, the description provides a strong contextual frame: what data is collected, how often, what is never called, and why historical descriptions matter. It does not describe the output/return shape for the various views, but the schema's per-view descriptions help fill that gap.

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

Parameters3/5

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

The schema covers 89% of parameters with descriptive comments, so the description does not need to re-explain each field. The description adds general context (search, changes, server history, review scores) but does not go beyond the schema in explaining parameter-specific behavior or required combinations per view.

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: a 'searchable, dated archive of what every public MCP server actually exposes.' It clearly distinguishes the tool from the unrelated sibling validation/lookup tools by defining its own niche as an index, change feed, and rug-pull detector.

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 identifies concrete use cases: tool-level search, uptime tracking, and security change detection. It explains when this endpoint is uniquely valuable ('the only way to learn what a server exposes'), but it does not explicitly state when not to use it or name alternative search/validation tools.

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

model_archiveLLM Price & Lifecycle ArchiveAInspect

Dated archive of LLM prices, context windows, announced retirement dates and quiet delistings across 400+ models and 50+ providers.

Providers overwrite their pricing pages and drop models from their catalogs without publishing what changed. This endpoint keeps a daily record, so three otherwise unanswerable questions become answerable: what a model cost on a given date (a contract and budget question), which models were quietly removed (a dependency-audit question), and when a retirement date was first announced and whether it later moved (a migration-planning question). Price points land in the shared time series, so a full range query is available through series/history under model.price.<provider>/<model>.<input|output|cache_read>. The archive can only accumulate forward — it cannot be reconstructed after the fact.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch in model id/name (only `catalog`).
daysNo`events`: window in days.
slugNoFull model id, e.g. `anthropic/claude-opus-5` (only `events`).
typeNoEvent type (only `events`).
viewNo`catalog`: tracked models · `expiring`: retirement announced · `delisted`: dropped from the catalogue · `events`: lifecycle events · `stats`: archive totals.catalog
limitNo
providerNoProvider prefix, e.g. `anthropic`, `openai`, `google`.
severityNo
withinDaysNo`expiring`: retire within this many days.
includeDelistedNo`catalog`: include delisted models.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the archive 'can only accumulate forward — it cannot be reconstructed after the fact,' which is a critical behavioral constraint. It also notes that providers overwrite pages and drop models quietly, explaining why the endpoint exists, and mentions that price points land in a shared time series. Missing details like auth requirements or rate limits, but the most important behaviors are covered.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then provides context and use cases, and ends with a critical limitation. Every sentence adds value: the problem statement, the three questions answered, the pointer to series/history, and the append-only note. It is concise for the conceptual richness it conveys.

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

Completeness4/5

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

The description covers the 'why' and 'what' thoroughly, including specific use cases and the historical context. However, it stops short of mapping the three use cases to specific `view` values or parameter combinations (e.g., which view answers the cost question), and it does not describe output structure. The rich schema descriptions partially compensate, so the tool is usable but leaves some interpretation to the agent.

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

Parameters3/5

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

Schema description coverage is high (80%), so the baseline is 3. The description itself does not elaborate on any specific parameters, leaving semantics to the schema. While the `view` parameter is implicitly referenced via 'catalog' and 'events' in the schema descriptions, the tool description adds no parameter-level detail beyond the schema.

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

Purpose5/5

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

The description opens with a clear, specific statement: 'Dated archive of LLM prices, context windows, announced retirement dates and quiet delistings across 400+ models and 50+ providers.' This identifies both the resource (LLM pricing/lifecycle data) and the action (archiving). It also differentiates from sibling validation tools by focusing on model data rather than universal identifiers or country-specific facts.

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

Usage Guidelines5/5

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

The description explicitly lists three use cases: contract/budget cost lookups, dependency audits for silently removed models, and migration planning for announced/moved retirement dates. It also directs users to the `series/history` endpoint for full time-series queries, clearly delineating when to use which tool. This is exemplary usage guidance.

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

model_driftLLM Endpoint DriftAInspect

Independent daily record of what changed behind a provider endpoint: which alias resolved to which model, and when behaviour shifted.

Providers update models behind stable endpoint names. This endpoint publishes an independent measurement: a fixed probe suite is sent daily at temperature 0, three repeats per probe, and the identity a provider declares in its own response (modelVersion, system_fingerprint, region) is recorded alongside. A change is only reported as drift when the repeats agree with each other and disagree with the previous run — same-day disagreement is noise, not drift. aliases answers "what was actually behind gemini-flash-latest on that day"; a question that cannot be answered retroactively.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoHistory window in days (only `events`).
viewNo`aliases`: alias → the real model behind it · `events`: drift events · `probes`: probe status from the last run.aliases
limitNo
providerNoFilter by provider (gemini, groq, cerebras, mistral).
severityNoOnly for the `events` view.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It explains the probe methodology (daily, temperature 0, three repeats), the condition for reporting drift (agreement among repeats and disagreement with previous run, same-day disagreement is noise), and the limitation that the alias-to-model mapping cannot be answered retroactively without this record. This is rich behavioral context covering how the tool operates and its constraints, though it does not specify output format or error behavior.

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

Conciseness5/5

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

The description is concise at ~150 words but dense with essential information. It is well-structured: first a one-sentence summary, then methodology, then the drift detection rule, then view explanations. Every sentence adds value: no fluff, no repetition of schema content. The first sentence clearly states purpose, and the rest provides necessary behavioral context.

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

Completeness4/5

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

Given the tool's complexity (5 optional parameters, 3 views, no output schema, no annotations), the description is quite complete. It explains the core methodology, the drift definition, the purpose of views, and the key constraint (no retroactive aliases). It lacks specification of return structure or error cases, but with no output schema, the agent might need more information about response format. However, for a data retrieval tool, this level of detail is strong and likely sufficient.

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

Parameters4/5

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

Schema description coverage is 80% (4 of 5 params described: days, view, provider, severity; limit lacks description). The description adds meaning beyond the schema by explaining the 'aliases' view answers a question that cannot be answered retroactively, and that severity is only for events. It clarifies the purpose of each view in the context of drift detection, which adds value beyond the schema's simple labels. The one undocumented parameter (limit) is self-explanatory due to naming.

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

Purpose5/5

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

The description clearly states the tool records what changed behind a provider endpoint (alias resolution and behavior shifts) with specific details on methodology (daily fixed probe suite, temperature 0, three repeats). It distinguishes from siblings like model_archive and series_history by focusing on endpoint drift measurement, not just archival or historical series.

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

Usage Guidelines4/5

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

The description explains why this tool is needed (providers update models behind stable names) and when it is appropriate (to answer 'what was actually behind an alias on that day'). It implies usage for drift detection but does not explicitly state when not to use it or mention alternatives. The context of independent measurement suggests it complements rather than replaces other tools, but no direct exclusions or alternative names are given.

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

pay_epc_qrEPC QR PayloadAInspect

Builds an EPC069-12 v3.1 V2 (002) SCT payload. Does not send money; returns text only, no PNG.

European payments often start from a QR that encodes an EPC069-12 credit-transfer payload. This endpoint builds that text in version 002 (V2): BCD, UTF-8, SCT, optional BIC, name, electronic IBAN, EUR amount. Purpose and structured remittance are left empty; unstructured remittance is copied if given. Lines are LF, not CRLF. IBAN spaces are stripped and letters uppercased; mod-97 is not required here. TRY, USD and any non-EUR currency are rejected. This does not send money and does not render a QR image.

ParametersJSON Schema
NameRequiredDescriptionDefault
bicNoBeneficiary BIC; optional in V2 (002).
ibanYesBeneficiary IBAN, with or without spaces.
nameYesBeneficiary name (SCT Name).
currencyNoMust be EUR if provided. Other currencies are rejected.
amountEurYesTransfer amount in EUR (positive).
remittanceNoUnstructured remittance (e.g. invoice number).

TDQS

A4.7/5.0
Behavior5/5

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

Even though annotations are absent, the description thoroughly discloses behavior: output is text only, line endings are LF, IBAN spaces stripped and uppercased, mod-97 not required, non-EUR rejected, structured remittance emptied, and unstructured remittance copied. This is far beyond a typical description and fully satisfies the annotation burden.

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 well-structured and front-loaded, but 'does not send money' and 'does not render a QR image' appear twice. Minor redundancy, but each sentence otherwise conveys a necessary behavior of the EPC payload.

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

Completeness5/5

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

Given no output schema and no annotations, the description covers all essential aspects: what the tool does, what it returns, edge cases, accepted currency, line-ending format, and what is intentionally omitted. An agent has enough to call the tool correctly and interpret the result.

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

Parameters5/5

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

Schema coverage is 100%, but the description still adds meaningful parameter behavior: it specifies that unstructured remittance is copied if given, structured/purpose remain empty, current currency is rejected, and IBAN normalization rules. This is valuable context beyond the schema field 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?

The description opens with a specific verb ('Builds') and names the exact standard and version (EPC069-12 v3.1 V2 SCT). It clearly differentiates itself by adding 'Does not send money; returns text only, no PNG,' preventing confusion with sibling tools that validate or process payments.

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

Usage Guidelines4/5

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

Provides clear context (European payments encoded in QR) and exclusions (does not send money, no PNG, non-EUR currencies rejected). No sibling tool appears to be an alternative, but no explicit 'when not to use' or direct comparison is given, so it stops short of a 5.

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

phone_validatePhone Number ValidationAInspect

Validates and normalises a phone number to E.164, classifies the line type, and resolves the province for Turkish landlines.

For signup and checkout flows that need to store one canonical form and reject typos early. Turkish numbers are handled in depth: landline area codes resolve to a province, mobile and special ranges (toll-free 0800, fixed-rate 0850, premium 0900) are classified, and every accepted input comes back in both E.164 and national notation.

One thing this endpoint deliberately does not claim: the current mobile operator. Turkey has had number portability since 2008, so a 0532 number may well be on another network today. Competing APIs report the prefix owner as "the operator" and customers pick SMS routes on that basis. We return it as originallyAllocatedTo with the caveat attached, because a confident wrong answer costs more than an honest gap.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneYesPhone number in any common format.
defaultCountryNoISO 3166-1 alpha-2 country to assume when the number has no international prefix. Defaults to TR.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: normalizes to E.164, classifies line types (including special ranges), resolves province for Turkish landlines, and returns both E.164 and national notation. Also honestly states the limitation on operator detection with portability caveat.

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

Conciseness4/5

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

Well-structured: opening summary, usage context, detailed behavior, and honest limitation. Each paragraph is purposeful, though the last paragraph could be slightly tighter without losing clarity.

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

Completeness4/5

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

Given no output schema, the description covers key aspects: input format, two output notations, line type classification, province resolution, and operator caveat. It is fairly complete for a complex validation tool, though explicit output structure details would enhance completeness.

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% (both parameters described), so baseline 3. The description adds significant semantic value by explaining that defaultCountry defaults to TR, and how Turkish numbers are handled in depth (area codes, special ranges). This goes beyond the schema's minimal 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?

The description clearly states the tool validates and normalizes phone numbers to E.164, classifies line type, and resolves province for Turkish landlines. It distinguishes from sibling tools by focusing on phone validation with Turkish specifics.

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

Usage Guidelines5/5

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

Explicitly recommends use in signup and checkout flows for canonical storage and early error rejection. Also clarifies what the tool does not do (report current mobile operator) and provides caveats about number portability, helping the agent avoid misuse.

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

sanctions_screenSanctions ScreeningAInspect

Screens a name against six official sanctions lists — US OFAC, UN, EU, UK OFSI, Switzerland SECO and Canada — with transliteration-aware fuzzy matching.

Six official lists are reduced to one schema, so a name is checked everywhere at once instead of six integrations. Cyrillic and Arabic names are transliterated, titles and corporate suffixes are stripped, and known spelling families are unified — "Abd al-Rahman", "Abdul Rahman" and "Abdulrahman" reach the same record. Every hit explains itself: which name matched, whether it was an alias the source flags as weak, and how the birth year and country compared. Supply birthYear whenever you have it; it removes most false positives. asOf screens against the lists as they stood on a past date, which is the question auditors actually ask — note that this is bounded by when our archive begins, reported in coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
asOfNoScreen against the lists as they stood on this date. Limited by when our archive begins.
nameYesName to screen — person or organisation.
typeNoRestrict to one subject type. Narrowing this removes most false positives.any
limitNo
countryNoKnown country or nationality.
sourcesNoDefaults to all lists.
minScoreNoScore floor. 0.92+ reads as a match, 0.80+ as possible.
birthYearNoKnown birth year. The single strongest false-positive filter available.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses the matching algorithm (transliteration, fuzzy matching), the explanation of hits, and the `asOf` archive limitation. It does not mention authentication, rate limits, or explicit read-only behavior, but for a screening tool the key behavioral aspects are well covered.

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 two structured paragraphs with all sentences contributing new information—no filler. It is somewhat lengthy but appropriately detailed for an 8-parameter tool, and it is front-loaded with the main 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 tool with no output schema, the description explains the hit explanation and `coverage` field, and provides parameter usage notes. It lacks explicit response structure details and error conditions, but is sufficiently complete for an experienced engineer.

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 88%, giving a high baseline, and the description adds meaningful guidance: `birthYear` as the 'single strongest false-positive filter', `type` narrowing removes false positives, and `asOf` being bounded by archive coverage. This goes beyond the schema, though not all parameters receive such enhancements.

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 ('Screens a name') and resource ('six official sanctions lists'), enumerating the exact lists (OFAC, UN, EU, OFSI, SECO, Canada). This clearly distinguishes it from sibling verification and parsing tools.

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

Usage Guidelines4/5

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

Provides clear guidance on when to supply `birthYear` (strongest false-positive filter) and `asOf` for auditor questions, implying intended contexts. However, it doesn't explicitly contrast with alternatives or state when not to use it, 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.

series_historyTime Series HistoryAInspect

Returns the accumulated history of public data series with change statistics and a source receipt for every point.

Currently ingesting the Turkish Central Bank daily FX bulletin (tcmb.usd, tcmb.eur, …), normalised to one unit so JPY-style 100-unit quotes stop biting. Leave seriesId empty to list the catalogue. fillGaps carries the last value across weekends and holidays; includeEvidence attaches the source URL and content hash for every point, so a value can still be defended years later.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (inclusive).
fromNoStart date (inclusive).
limitNo
fillGapsNo
seriesIdNoSeries id, e.g. `tcmb.usd`. Omit to list the catalogue.
includeEvidenceNoInclude source URL and content excerpt for each point.

TDQS

A4.7/5.0
Behavior5/5

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

Since no annotations are provided, the description carries full burden and does an excellent job. It discloses that the tool normalizes data (JPY-style 100-unit quotes), the default date behavior (fillGaps carries last value across weekends/holidays), and the evidence attachment feature (source URL and content hash) for long-term defensibility. This goes far beyond a basic description and provides important behavioral insights.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the core purpose, then providing essential detail without fluff. Every sentence adds value: purpose, current data scope/normalization, and optional parameters with their benefits. No redundant or tautological 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?

The description is complete given the tool's complexity: 6 optional parameters with good schema coverage, no output schema, no annotations. It explains the key behaviors an agent needs to know (catalogue listing, gap filling, evidence retrieval). The only minor gap is lack of explicit return structure, but no output schema exists, so the description's level is appropriate.

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

Parameters4/5

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

Schema description coverage is 67%, so the description partially compensates. It explicitly names `seriesId`, `fillGaps`, and `includeEvidence` with meaningful context beyond the schema (e.g., what fillGaps does, why includeEvidence matters). It doesn't explain 'from'/'to' formats but the schema already provides patterns and descriptions, and 'limit' is self-explanatory. The additional context on seriesId (catalogue listing) is valuable.

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

Purpose5/5

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

The description clearly states the tool returns 'the accumulated history of public data series with change statistics and a source receipt for every point.' It specifies the resource (public data series, specifically FX data) and the action (return history), distinguishing it from siblings like tr_fuel_prices or model_archive which likely serve different data types.

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

Usage Guidelines4/5

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

The description gives explicit usage context: 'Leave `seriesId` empty to list the catalogue' and explains the fillGaps and includeEvidence options for typical use cases. It doesn't explicitly state when not to use this tool vs alternatives, but given the diverse sibling tools, the unique functionality (time series history) makes usage clear.

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

shipping_identifyTracking Number IdentificationAInspect

Identifies which carrier a tracking number belongs to, validates it where a checksum exists, and returns the canonical tracking link.

Built for order systems that receive numbers from many carriers and have to route the customer to the right tracking page. Turkish carriers mostly use plain numeric ranges that overlap, so a single confident answer is often impossible — this returns a ranked candidate list instead of inventing certainty, because sending a customer to the wrong carrier's page makes them think the parcel is lost. Universal Postal Union (S10) numbers are fully verified: the mod-11 check digit is computed, the service type and origin country are decoded. For formats whose checksum we have not verified against the standard, the result says not-verified rather than guessing — a wrong rejection is worse than an honest unknown. Delivery status is deliberately out of scope: Turkish carriers require merchant credentials for that, and scraping their sites would be fragile and against their terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoDestination or origin country hint, e.g. "TR". Narrows the candidates.
trackingNumberYesTracking number, with or without spaces and dashes.

TDQS

A4.6/5.0
Behavior5/5

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

No annotations provided, but the description fully discloses behavior: checksum verification (fully for S10, not-verified otherwise), ranked list for Turkish carriers, and explicit out-of-scope (delivery status). Rationale given for design decisions.

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 somewhat lengthy but every sentence adds value. It front-loads the main purpose and then explains nuances. Could be slightly tighter, but still efficient.

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 no output schema, the description explains return values (canonical link, ranked list, verification status) and covers edge cases, limitations, and rationale. Complete for the intended use.

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

Parameters4/5

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

Schema coverage is 100%, but description adds context: country hint narrows candidates, tracking number accepts spaces/dashes. It also explains behavioral implications (ranked list) beyond parameter definitions.

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

Purpose5/5

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

The description clearly states it identifies carrier, validates tracking number, and returns canonical tracking link. The verb 'identifies' and specific resource 'carrier for tracking number' are precise, and the tool is distinct from siblings which are other validation/address tools.

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

Usage Guidelines4/5

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

The description explains when to use (order systems routing customers) and provides context about limitations (Turkish carriers overlapping, ranked list). No explicit alternatives mentioned, but siblings are other domains, so the guidance is clear.

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

tin_validateTax Identifier ValidationAInspect

Validates a tax identifier for 25+ countries: checksum where the algorithm is public, format-only where it is not. Country is required.

Onboarding forms collect a tax number from whatever country the customer is in and then store garbage because they only checked the length. This applies the published checksum (SIREN/SIRET Luhn, ABN mod-89, CPF/CNPJ, NIP, BSN 11-proef, NIF/NIE, OIB, IČO, AFM, TCKN/VKN, …) and refuses to guess the country: the same 9 digits are a well-formed identifier in more than one place. Where the checksum is not published (US EIN, UK UTR, DE Steuernummer, IN PAN) the answer is format + checksum: not-verified, not a fake pass. This does not ask any tax authority whether the number is issued.

ParametersJSON Schema
NameRequiredDescriptionDefault
tinYesTax identifier as written, with or without spaces and punctuation.
countryYesISO 3166-1 alpha-2 country that issued the identifier. Required.

TDQS

A4.5/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the entire burden of behavioral disclosure, and it does so impressively. It reveals that the tool may return 'checksum: not-verified' for countries without public algorithms, that it refuses to guess the country, and that it does not query tax authorities. This goes beyond a simple 'validates' claim, offering critical caveats that directly affect output interpretation. The only small gap is the absence of explicit mention of errors for invalid input, but given the coverage, a score of 4 is warranted.

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

Conciseness4/5

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

The description is dense and content-rich, packing substantial information into two paragraphs. The first sentence front-loads the core purpose and method. The second paragraph provides the rationale and specific edge cases. While it is longer than a terse one-liner, every sentence adds unique and valuable context—no filler or fluff. It could be slightly more structured with bullet points for the list of countries, but this does not detract from overall effectiveness.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description is quite complete. It explains the validation logic, the varying outcomes, and the critical limitation about not contacting authorities. It also anticipates a common use case (onboarding forms) and explains the design choice to refuse country guessing. The only missing piece is an explicit statement about what the return value looks like or error behavior for invalid countries, which a brief mention would have elevated it further. Nonetheless, it covers the essential aspects comprehensively.

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

Parameters4/5

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

The input schema already provides 100% description coverage for both parameters, including format and meaning ('ISO 3166-1 alpha-2'). The description adds value by specifying that the 'tin' can include spaces or punctuation, and that 'country' is required to avoid ambiguity. It reinforces the semantic importance of the 'country' parameter by explaining why it is required (the same digits can be valid in multiple places). This exceeds the baseline for high schema coverage, justifying a 4.

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

Purpose5/5

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

The description is exceptionally clear: it explicitly states the tool validates tax identifiers for 25+ countries, specifies the method (checksum where public, format-only where not), and differentiates itself from sibling validation tools like 'eu_vat_validate' and 'tr_vat' by noting it covers multiple country formats and refuses to guess the country. It also provides a concrete list of supported checksum algorithms, leaving no ambiguity about its function.

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

Usage Guidelines5/5

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

The description explicitly addresses when to use this tool: for validating tax identifiers from a specific country, especially in scenarios like onboarding forms where garbage data is collected. It also clearly states what it does NOT do (does not ask tax authorities whether the number is issued), which actively prevents misuse. While it doesn't name sibling alternatives like 'eu_vat_validate', the context implies this is a broader, more comprehensive validation, and the specificity of the use case makes the guidance strong.

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

tr_address_parseTurkish Address ParserAInspect

Splits a free-form Turkish address into neighbourhood, street, building, floor, flat, district, province and postcode.

Handles the abbreviation chaos (Mah./Mh., Cd./Cad., Sk./Sok., No:12/5, K:3 D:7), cross-checks the province against the postcode, repairs misspelled district names against a dictionary, and returns a confidence score. Anything it could not place is listed in unparsed — nothing is dropped silently. Built for shipping, checkout and CRM systems that receive Turkish addresses typed by humans.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesFree-text address.
defaultProvinceNoProvince to assume when the address has none.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the transparency burden. It discloses normalization of abbreviations, province/postcode cross-checking, misspelling repair, confidence scoring, and an `unparsed` list so nothing is silently dropped. It lacks explicit error-handling details, but is otherwise transparent for a parser tool.

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

Conciseness5/5

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

The description is compact and front-loaded: the first sentence states the core function, the second adds behavioral guarantees, and the third provides usage context. Every sentence contributes value without unnecessary 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?

For a parsing tool with no output schema and no annotations, the description covers the input nature, output components, normalization behavior, confidence score, unparsed fallback, and target use cases. This gives an agent enough context to select and invoke the tool 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%, so a baseline of 3 applies. The description adds useful context about free-form Turkish addresses and cross-checking the province against the postcode, but it does not materially elaborate on the `defaultProvince` parameter beyond what the schema already states.

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: 'Splits a free-form Turkish address into neighbourhood, street, building, floor, flat, district, province and postcode.' This clearly distinguishes it from sibling validation and invoice tools in the Turkish toolset.

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

Usage Guidelines4/5

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

The description gives context for when to use the tool: 'Built for shipping, checkout and CRM systems that receive Turkish addresses typed by humans.' It does not explicitly name alternative tools or state when not to use it, but the use-case framing is clear.

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

tr_business_daysTurkish Business DaysAInspect

Adds business days or counts them between two dates, accounting for Turkish public and religious holidays including half-day eves.

Ramadan and Sacrifice feasts follow the Hijri calendar and cannot be derived reliably by formula, so announced dates are read from a table; years without an official announcement are returned with confirmed:false rather than guessed silently. For delivery promises, SLA clocks, payment terms and shipping estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoIf set, count business days between start and this date.
startYesStart date (YYYY-MM-DD).
addDaysNoAdd/subtract this many business days (not calendar days).
countHalfDaysAsWorkNoCount Arife half-days as working days?

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full transparency burden. It discloses important behavior: Hijri-calendar feasts are read from an announced table, and years without official announcements return `confirmed:false` rather than guessed values. It does not describe the full return shape or behavior when both `addDays` and `end` are supplied, but the core behavioral caveat is well covered.

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

Conciseness5/5

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

The description is three short sentences, front-loaded with the core purpose and followed by a necessary caveat and use-case list. Every sentence earns its place; the final fragment is slightly informal but not wasteful.

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

Completeness3/5

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

There is no output schema, so the description should explain return values more fully; it only mentions `confirmed:false` without describing the overall response structure. It also does not address edge cases like supplying both `addDays` and `end`, or whether start/end dates are inclusive. For a 4-parameter tool with no annotations and no output schema, this leaves some important gaps.

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 by defining business days in the context of Turkish holidays and half-day eves, which directly clarifies how `addDays` and `countHalfDaysAsWork` should be interpreted. It does not clarify the relationship/conflict between `addDays` and `end`, but the schema already documents each parameter 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?

The description uses a specific verb-resource pair: 'Adds business days or counts them between two dates' and clearly scopes it to Turkish public and religious holidays. This distinguishes it from the sibling validation and lookup tools, which serve entirely different purposes.

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

Usage Guidelines4/5

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

The description explicitly names target use cases: 'delivery promises, SLA clocks, payment terms and shipping estimates.' It does not mention when not to use the tool or name alternatives, but the context is clear enough for an agent to select it appropriately.

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

tr_fuel_pricesTurkey Fuel PricesAInspect

Petrol, diesel and heating-oil pump prices for all 81 Turkish provinces, including the price in force on any past date.

The distributor publishes today's pump price and a per-district history query, one district and one range at a time. This endpoint answers the question that actually costs money, in a single call: what was diesel in Ankara on 12 March? Pass asOf for the price in force on that day — if the distributor did not change prices that day, the previous price is carried forward and effectiveFrom says when it started, with carriedForward: true. Pass from/to to get the change events in a window, each with the percentage move. Every figure carries the source URL and a content hash of the page it was read from, so the number can still be defended in an audit years later. Leave province empty to list coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
asOfNoPrice in force on this date (YYYY-MM-DD). Omitted → latest known price.
fromNoWith `to`: return the price changes in this window.
productNoFuel product. Omitted → every product available for that province.
provinceNoProvince name or plate code — "Ankara", "istanbul" or 34. Leave empty to list covered provinces.
includeDistrictsNoAdds districts whose pump price differs from the province reference price.

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It effectively does so by explaining carry-forward behavior (`effectiveFrom`, `carriedForward: true`), change events with percentage moves, and the inclusion of source URL and content hash for auditability. This goes well beyond a basic operation description.

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

Conciseness5/5

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

The description is a single dense paragraph that front-loads the primary purpose and then flows into usage details and audit features. Every sentence contributes meaningful information without redundancy or fluff, achieving a high information-to-word ratio.

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

Completeness5/5

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

Given that there is no output schema and no annotations, the description is remarkably complete. It covers the main query modes, edge cases (such as unchanged prices), and the nature of the response (including fields like `effectiveFrom`, `carriedForward`, source URL, and content hash). An agent can confidently select and invoke the tool based on this description alone.

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 83%, which sets a baseline of 3. The description adds meaningful semantics beyond the schema: it explains that `asOf` carries forward the previous price if unchanged, that `from`/`to` returns percentage changes, and that `province` empty lists coverage. While not every parameter gets such depth (e.g., `includeDistricts`), the added value is substantial.

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

Purpose5/5

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

The description clearly states the tool's function: retrieving petrol, diesel, and heating-oil pump prices for all 81 Turkish provinces, with support for past-dated prices. It uses a specific verb ('prices for...') and resource ('81 Turkish provinces'), and its focus on fuel prices distinguishes it from the sibling tools (e.g., email verification, invoice parsing).

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

Usage Guidelines4/5

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

The description provides concrete usage scenarios: using `asOf` to get the price on a specific date, using `from`/`to` to retrieve change events, and leaving `province` empty to list coverage. It gives clear context on when to use different parameter combinations, but it does not explicitly state when not to use the tool or mention alternatives (though no direct siblings exist).

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

tr_invoice_buildTurkish e-Invoice BuilderAInspect

Builds a UBL-TR e-Invoice or e-Archive XML document from plain JSON, computing every total and validating the parties.

Selling into Türkiye means issuing a UBL-TR document whose element order is fixed by schema and whose totals must agree to the kuruş, or the integrator rejects it. This endpoint takes the invoice as ordinary JSON and returns the XML. Totals you send are ignored on purpose — line amounts, per-rate VAT subtotals and the payable amount are all recomputed here, because a rounding difference of one kuruş is the most common rejection. VKN and TCKN checksums are verified, and the amount is written out in Turkish words as invoices require. It does not sign the document and does not transmit it: the financial seal and the submission to the tax authority belong to your certificate and your integrator. What comes back is a document ready to enter that step.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice number. Omit and supply `series` to have it built from the series and sequence.
uuidNoDocument UUID (ETTN). Generated when omitted.
linesYes
notesNo
seriesNoThree-letter series code, used with `sequence`.
profileNoTEMELFATURA: no formal objection flow. TICARIFATURA: buyer may accept/reject. EARSIVFATURA: buyer is not an e-Invoice user.TEMELFATURA
currencyNoISO 4217. Anything other than TRY requires `exchangeRate`.TRY
customerYes
sequenceNoSequence number within the series and year.
supplierYes
issueDateYes
issueTimeNo
exchangeRateNoUnits of TRY per one unit of `currency`.
amountInWordsNoAdds the payable amount written out in Turkish words as a note, the way invoices require.
invoiceTypeCodeNoSATIS
orderReferenceIdNo
despatchDocumentIdNoDelivery note number, if the goods shipped separately.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses that totals are recomputed and sent totals ignored, VKN/TCKN checksums are verified, the amount is written in Turkish words, and the document is neither signed nor transmitted. These are meaningful behavioral traits beyond a generic 'builds an invoice' statement and set clear expectations for side effects.

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

Conciseness5/5

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

The description is front-loaded with a one-sentence summary followed by a focused paragraph of necessary context. Every sentence adds relevant information about validation, rounding constraints, non-goals, or next steps, with no wasted words.

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

Completeness5/5

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

Given the tool's high complexity—17 parameters, nested objects, no output schema—the description covers input format, processing behavior, validation, limitations, and the nature of the returned artifact. It tells the agent enough to know when and how to invoke the tool and what to expect back without requiring an output schema.

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 53%, so the description adds value by explaining how parameters affect output: line amounts/VAT subtotals/payable amount are recomputed, checksums on tax numbers are verified, and the amount is written in words. This goes beyond the schema's structural descriptions. It does not systematically explain every parameter, but the schema already covers many details and the description adds the most consequential behavioral 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?

The description opens with a specific verb and resource: 'Builds a UBL-TR e-Invoice or e-Archive XML document from plain JSON.' It clearly states the tool's transformation (JSON to XML), its domain (Turkish e-Invoice/e-Archive), and implicitly distinguishes it from siblings like tr_invoice_parse by focusing on construction rather than parsing.

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

Usage Guidelines4/5

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

The description gives clear context: use this when selling into Türkiye and needing a UBL-TR document before the integrator step. It also communicates non-goals explicitly ('It does not sign the document and does not transmit it'), which helps the agent understand where this tool fits in a workflow. It does not explicitly name alternative tools or exclusion conditions, so it stops short of a 5.

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

tr_invoice_parseTurkish e-Invoice (UBL-TR) ParserAInspect

Turns a UBL-TR e-Invoice or e-Archive XML document into clean JSON: parties, line items, taxes and totals.

Works regardless of the namespace prefix the sender used (cbc:, cac:, ns0:), normalises single-line documents into arrays, and reports amount mismatches in warnings instead of returning quietly wrong totals. The job that costs accounting and expense software the most engineering time.

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYesUBL-TR e-Invoice / e-Archive (e-Arsiv) XML body.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It does disclose key behaviors: namespace-agnostic parsing, normalizing single-line documents to arrays, and reporting amount mismatches via warnings instead of returning wrong totals. However, it does not mention error handling, rate limits, or other operational specifics, which is acceptable given no annotations but still some gaps exist.

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

Conciseness4/5

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

The description is a few functional sentences, front-loaded with the core purpose and behavior. The third sentence about 'engineering time' is a few rhetorical flourish that does not add operational value, making it slightly less crisp but still efficiently 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?

Given a single parameter, no annotations, and no output schema, the description covers essential what the tool does and critical anticipations: defines the output categories, explains normalization policy, and warns about amount mismatch. It lacks a sample output format and error handling notes, but for the complexity level, it is reasonably complete.

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

Parameters4/5

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

The only parameter 'xml' is fully described in the schema with 100% coverage. The description adds behavioral context about processing the input (namespace handling, normalization) that goes beyond the schema description, providing some added meaning about how the input is interpreted.

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

Purpose5/5

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

The description explicitly states the tool parses UBL-TR e-Invoice or e-Archive XML into clean JSON and specifies the output includes parties, line items, taxes, and totals. This clearly distinguishes it from sibling tools like tr_invoice_build (building invoices) and other validation tools.

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

Usage Guidelines3/5

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

The description implies the tool is for parsing e-Invoice XML but does not explicitly state when to use it vs. alternatives. It does not mention counterpart tools like tr_invoice_build or what should be used for building invoices, leaving usage context implicit.

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

tr_laborTurkish Severance, Notice & LeaveAInspect

Computes Turkish severance (kıdem), notice (ihbar) and annual-leave entitlement from service dates and the gross wage, using the official ceiling and minimum-wage tables for the given day.

Payroll and HR tools in Turkey chase a parameter that changes every January and July: the severance ceiling, the SGK cap, the minimum wage. This endpoint applies the statutory formulae (Labour Law 4857 arts. 17 and 53, former 1475 art. 14) to those tables. The ceiling is applied to the monthly wage, not the total. Stamp tax (0.759%) is deducted from severance; income tax is not — kıdem is exempt. Notice pay IS taxable; we return the gross and say so, because the actual withholding depends on the employee's cumulative tax base. What this will not tell you: whether the employee is entitled to severance at all. That depends on the reason for termination (retirement, just cause, marriage, military service…). Treating the number as "what is owed" is how you lose at trial.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNoEmployee age at termination — affects annual-leave entitlement (under 18 or 50+).
asOfNoRate table date. Defaults to endDate.
endDateYesTermination date (YYYY-MM-DD). Inclusive of this day.
startDateYesEmployment start date (YYYY-MM-DD).
monthlyGrossYesGross monthly wage the severance is based on (giydirilmiş brüt).
unusedLeaveDaysNoUnused annual-leave days, if you also want the unused-leave gross.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations to carry the burden, the description provides deep behavioral context: statutory references, ceiling application semantics, which taxes apply or don't, and the tool's limits. Goes well beyond a basic description of what the tool calculates.

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-dense with no wasted sentences; even the legal citations and tariff context serve as behavioral cues for the agent. The prose is slightly ornate in the middle section but remains functionally relevant to understanding the tool's behavior.

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

Completeness4/5

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

For a tool computing three legal entitlements with tax nuances, the description covers input semantics and the legal limitations thoroughly. Missing a description of the return-value shape, which would help agents chain this with downstream logic.

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

Parameters4/5

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

The input schema already has 100% coverage with rich parameter descriptions, so the baseline is raised. The description adds value by explaining how parameters interact ('the ceiling is applied to the monthly wage, not the total') and the tax implications of the salary inputs. This enriches the agent's understanding of what changing the parameters actually computes.

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?

Uses specific verb 'Computes' with clearly enumerated resources (severance, notice, annual-leave) and inputs. Distinguishes itself from sibling validator/parser tools by describing computation logic and legal basis. The description reads as a domain-specific calculation tool rather than a generic validation function.

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 lists boundary conditions with the 'What this will not tell you' section, warning about entitlement determination and legal consequences. Clearly states tax treatment (stamp tax, income tax exemption). Lacks explicit naming of alternative/sibling tools for when this endpoint is inappropriate, preventing a 5.

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

tr_money_to_wordsAmount to Turkish WordsAInspect

Writes a monetary amount out in Turkish words, the way invoices, cheques and promissory notes require.

Applies the rules that trip up generic libraries: Turkish says "bin", never "bir bin"; the kuruş part is read separately; and both "1.234,56" and "1,234.56" are accepted and told apart automatically. A mandatory field on Turkish e-invoices, cheques and notes — with no off-the-shelf API until now.

ParametersJSON Schema
NameRequiredDescriptionDefault
styleNoOutput letter case.lower
amountYesAmount. Accepts both "1.234,56" and 1234.56.
currencyNoTRY
wrapHashNo

TDQS

A4/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses non-obvious behaviors: 'bin' never 'bir bin', the kuruş part is read separately, and both decimal formats are accepted and disambiguated automatically. It does not describe return shape or error handling, but it adds meaningful behavioral detail beyond the schema.

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

Conciseness4/5

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

The description is two short paragraphs, front-loaded with the core action and followed by useful Turkish-language rules. The final sentence is slightly promotional ('no off-the-shelf API until now') but still reinforces the use case, so there is minimal waste.

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

Completeness3/5

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

For a tool with no output schema and no annotations, the description should clarify return value and edge-case behavior; it does not. It covers purpose, use cases, and key formatting rules well, but wrapHash behavior and the exact output format remain gaps.

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

Parameters3/5

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

Schema description coverage is only 50%, and the description adds valuable amount-format semantics ('1.234,56' and '1,234.56' accepted) beyond the schema. However, currency is only self-evident from its enum values and wrapHash is left completely unexplained, so the description does not fully compensate for the coverage gap.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Writes a monetary amount out in Turkish words'. It also differentiates the tool from generic libraries by calling out Turkish-specific rules and the invoice/cheque/promissory-note context, making its purpose unmistakable.

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

Usage Guidelines4/5

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

The description explicitly frames the tool for invoices, cheques, and promissory notes, and notes it is a mandatory Turkish e-invoice field, giving clear when-to-use context. It does not name alternatives or state when not to use it, but the context is strong enough for selection.

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

tr_tebligat_clockTurkish Service-of-Process ClockAInspect

Computes the deemed-received date and the HMK deadline (with holiday shifting) for a Turkish notification, from the date the underlying event actually happened.

Turkish notification law (7201) ties the deadline clock to an event that is not "the date on the letter" — for electronic notification the UETS platform reports send, read AND reached dates, and only the reached date starts the clock (art. 7/a: deemed received 5 calendar days after reaching the address, whether or not it was opened). HMK adds two more rules on top: the day of notification itself does not count (art. 92 — the period starts the next day) and if the computed last day lands on a weekend or a full public/religious holiday, it moves to the next business day (art. 93); a half-day eve (arife) does not shift it. What this will not tell you: whether the notification was itself valid, or what a specific periodType (itiraz, temyiz, cevap…) is in days for your case — that number differs by statute and we do not guess it; supply periodDays yourself. Only the "hmk" law family is covered so far.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesNotification method. Determines which event `basisDate` refers to and whether the deemed-received date is same-day or shifted.
basisDateYesThe date `basisLabel` describes for this type — for "electronic" this is the date UETS reports the message as reached, not sent or read.
lawFamilyYesBody of procedural law the period is computed under. Only "hmk" (Code of Civil Procedure) is supported so far.
periodDaysYesLength of the statutory or judicial period, in days, counted from `periodStart`.
periodTypeNoFree-text label for the period (e.g. "itiraz", "temyiz"), echoed back only — not mapped to a day count.
hasAttorneyNoWhether the addressee has a registered attorney of record. When true and `type` is not "vekil", a TK 11 warning is added noting that service should have gone to the attorney.
ilanenDeemedDaysNoOnly valid with type "ilanen": number of days the competent authority set for the notice to become deemed received (TK 31), 7-15, default 7. Not the number of days for the underlying period.
subjectToJudicialRecessNoWhether this matter is subject to the judicial recess (adli tatil, HMK 104) instead of being exempt. Only affects the result when `lawFamily` is "hmk" and the computed last day falls in the 20 July - 31 August window.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it delivers thoroughly. It explains the legal rules under Turkish notification law (7201) and HMK, including the deemed-received calculation, holiday shifting, and arife exceptions. It also discloses constraints (only 'hmk' supported, no guessing of period days) and the meaning of basisDate for electronic notifications. This goes well beyond what a schema could convey.

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?

Although lengthy, every sentence contributes substantive legal or usage information. The purpose is front-loaded, followed by relevant legal background, then explicit limitations. There is no fluff or redundancy; the density is justified by the tool's complexity.

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

Completeness5/5

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

For a complex legal-computation tool with 8 parameters and no output schema, the description is remarkably complete. It explains the underlying law, the computation logic, edge cases (arife, judicial recess), and what it does not do. An agent has all necessary context to decide whether and how to call the tool, and to interpret its result.

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

Parameters4/5

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

Schema coverage is 100%, and each parameter already has a descriptive definition (e.g., 'type' explains the meaning of basisDate). The description adds valuable legal context—such as why basisDate for electronic is the reached date, and the significance of hasAttorney—which enriches understating beyond the schema. This is more than the baseline 3, but the schema already does a lot of work.

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 precise, verb-led statement: 'Computes the deemed-received date and the HMK deadline (with holiday shifting) for a Turkish notification, from the date the underlying event actually happened.' This clearly identifies the resource (Turkish notification deadlines) and the exact computation performed, distinguishing it from all sibling validation/lookup tools.

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

Usage Guidelines4/5

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

The description explicitly states what it does NOT cover: 'What this will not tell you: whether the notification was itself valid, or what a specific periodType... is in days for your case' and advises the caller to supply periodDays themselves. It also notes the limitation to the 'hmk' law family. However, it does not explicitly compare against alternative tools since none of the siblings are similar, so it falls just short of a 5.

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

tr_validateTurkish ID & Number ValidationAInspect

Validates Turkish national ID, tax number, IBAN, licence plate, IMEI, barcodes, KEP address and MERSİS number from one endpoint, with type auto-detection.

Goes past a yes/no: resolves the bank behind an IBAN, the province behind a licence plate and the GS1 country prefix behind a barcode. Pure local computation — no upstream service is called, so latency is microseconds and the answer never changes for the same input.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOmitted → inferred from the format.auto
valueYesValue to validate.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It explicitly states pure local computation, microsecond latency, and deterministic results, which is helpful. However, it does not describe error handling, what happens for invalid inputs, the exact response structure, or any assumptions (e.g., country-specific rules). It goes beyond trivial, but leaves gaps.

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

Conciseness5/5

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

The description is concise and well-structured: first sentence lists the types and auto-detection, second sentence highlights value-added resolution and performance. No repetition of schema info, and every sentence adds substance. It is front-loaded with the core purpose.

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

Completeness3/5

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

The tool handles multiple data types and has no output schema, so the description should clarify return format. It hints at extra details (bank, province, GS1 prefix) but does not describe the overall response structure (e.g., valid flag, details object) or error behavior. Given the breadth of inputs, this is a notable gap for an agent to know what to expect.

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

Parameters3/5

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

The input schema already describes both parameters thoroughly (coverage 100%), including type enum and value constraints. The description adds that type is optional and auto-detected, which reinforces the schema's own description. It does not add significant new parameter-level details beyond what schema already provides, so a baseline score is appropriate.

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

Purpose5/5

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

The description clearly states the tool validates a wide range of Turkish identifiers (national ID, tax number, IBAN, licence plate, etc.) from a single endpoint with auto-detection. It also lists additional capabilities ('resolves the bank behind an IBAN, the province behind a licence plate...'), making its purpose distinct from sibling tools like iban_validate or tin_validate.

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 a general-purpose, one-stop-shop role ('from one endpoint') but does not explicitly state when to prefer this tool over dedicated validators, nor when not to use it. It mentions auto-detection as a convenience, but lacks explicit comparisons or exclusions (e.g., 'if you need only IBAN, use iban_validate').

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

tr_vatTurkish VAT & WithholdingAInspect

Splits a Turkish amount into net, VAT and (optionally) withholding: who pays the seller, who remits the withheld VAT.

For invoice lines and checkout totals that have to show KDV dahil / hariç and, when the parties are in a withholding (tevkifat) situation, the split between what the buyer pays the seller and what the buyer remits to the tax office. Rates are 0, 1, 10 and 20 percent. Withholding is a fraction of the VAT (2/10 through 10/10), or a named code from the GİB partial-withholding list. The 2026 threshold (TRY 12,000 gross) is reported and compared with the amount, but applies is always null: whether withholding actually applies depends on the taxpayer status of both parties, which this endpoint does not know. Feeding it a fraction is not a legal opinion.

ParametersJSON Schema
NameRequiredDescriptionDefault
rateNoVAT rate in percent. 0, 1, 10 or 20.
amountYesThe amount to tax. See amountIncludesVat.
withholdingNoWithholding fraction such as "5/10", or a code from the list (reklam, tasima, hurda, isgucu…).
amountIncludesVatNoIf true, `amount` is the gross (KDV dahil); if false, it is the net/matrah.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full disclosure burden and does so thoroughly. It explains the supported rates, that withholding is a fraction of VAT or a GİB code, that the 2026 threshold is reported but `applies` is always null, and that the result is not a legal opinion. This goes well beyond a typical tool description.

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

Conciseness5/5

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

The description is compact, front-loaded with the main purpose, and every sentence supplies useful information. It packs domain context, parameter behavior, threshold caveat, and a legal disclaimer into three sentences without fluff or repetition.

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?

There is no output schema, so the description must partially explain return behavior, and it does: it mentions net/VAT/withholding splits, the threshold comparison, and the always-null `applies` field. However, it does not fully enumerate the output structure or handling of invalid inputs, which would have made it fully complete.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema. It clarifies that withholding is a fraction of the VAT itself, narrows the fraction range to '2/10 through 10/10', and explains the named-code option from the GİB partial-withholding list, which enriches the parameter understanding.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Splits a Turkish amount into net, VAT and (optionally) withholding.' It further distinguishes this calculator from sibling invoice/validation tools by naming the exact Turkish VAT domain concepts (KDV dahil/hariç, tevkifat) and the split responsibility between seller and buyer.

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 states when this tool should be used: 'For invoice lines and checkout totals that have to show KDV dahil / hariç' and for withholding (tevkifat) situations. It gives strong context and domain applicability, though it does not explicitly name alternatives or state when not to use it.

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

vin_validateVIN ValidationAInspect

Validates a 17-character VIN: forbidden letters, ISO 3779 check digit, WMI region/manufacturer, model year and plant.

Typos in a VIN are usually a forbidden letter (I, O, Q — they look like 1 and 0) or a shifted character. This rejects those, splits WMI/VDS/VIS, and names the manufacturer when the WMI is in a conservative built-in table. The 9th-character check digit is computed and compared, but a mismatch does not fail the VIN: it is mandatory under FMVSS 115 in North America and routinely ignored in Europe. checkDigitMatch tells you; valid stays true if the 17-character form is legal. This does not decode the full vehicle (engine, body, options) and does not prove the VIN was issued.

ParametersJSON Schema
NameRequiredDescriptionDefault
vinYesVehicle identification number, 17 characters.

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description fully carries the transparency burden. It details that forbidden letters and shifted characters cause rejection, that the check digit mismatch does not fail the VIN, and that the tool outputs fields like `checkDigitMatch` and `valid` with specific meanings. It also states limitations clearly.

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

Conciseness4/5

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

The description is concise yet informative, with two paragraphs that flow logically from general validation to specific behaviors and limitations. It avoids unnecessary fluff while covering important details.

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

Completeness4/5

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

The description provides a thorough overview of what the tool validates, how it handles edge cases, and what output fields to expect (e.g., `checkDigitMatch`, `valid`). It also clarifies non-goals, making it complete for the given information. Since no output schema is provided, this level of detail is adequate.

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

Parameters3/5

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

The parameter `vin` in the schema already has a description ('Vehicle identification number, 17 characters') and constraints (minLength 11, maxLength 24), covering the basics. The tool description adds context about validation behavior but does not further explain the parameter itself (e.g., accepted formats or examples). Baseline is 3 since schema coverage is 100%.

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

Purpose5/5

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

The description clearly states the tool 'validates a 17-character VIN' and lists specific aspects (forbidden letters, ISO 3779 check digit, WMI region/manufacturer, model year, plant). This is specific and distinguishes it from sibling validation tools like bic_validate or email_verify.

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 implies usage when a VIN needs validation, and it clearly sets expectations by explaining what the tool does not do (does not decode the full vehicle, does not prove the VIN was issued). However, it does not explicitly contrast with alternatives beyond the natural inference from the tool name.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool update
    • Addedtr_tebligat_clock
  2. 3 tool updates
    • Addedcreditor_ref
    • Addedid_mrz
    • Addedpay_epc_qr
  3. 2 tool updates
    • Addedeu_vat_rates
    • Addedlei_lookup
  4. 11 tool updates
    • Changediban_validate2 fields changed
      • changedInput schema / properties / expectCountry / description
        Previous value: -"Beklenen ülke kodu (ISO 3166-1 alfa-2)."New value: +"Expected country code (ISO 3166-1 alpha-2)."
      • changedInput schema / properties / iban / description
        Previous value: -"IBAN, boşluklu veya boşluksuz."New value: +"IBAN, with or without spaces."
    • Changedmcp_index8 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Kaç günlük pencere (`changes` ve `server`)."New value: +"Window in days (`changes` and `server`)."
      • changedInput schema / properties / minRisk / description
        Previous value: -"Yalnız inceleme puanı bu değerin üstündeki araçlar (yalnız `search`)."New value: +"Only tools whose review score is at or above this (only `search`)."
      • changedInput schema / properties / q / description
        Previous value: -"Arama terimi (yalnız `search`), ör. `invoice`, `calendar`, `sql`."New value: +"Search term (only `search`), e.g. `invoice`, `calendar`, `sql`."
      • changedInput schema / properties / server / description
        Previous value: -"Kayıt defteri sunucu adı, ör. `com.temsor/api`. `server`/`tool` görünümlerinde zorunlu."New value: +"Registry server name, e.g. `com.temsor/api`. Required for `server`/`tool` views."
      • changedInput schema / properties / severity / description
        Previous value: -"Yalnız `changes`."New value: +"Only `changes`."
      • changedInput schema / properties / tool / description
        Previous value: -"Araç adı (yalnız `tool` görünümü)."New value: +"Tool name (only `tool` view)."
      • changedInput schema / properties / type / description
        Previous value: -"Olay türü süzgeci (yalnız `changes`), ör. `tool_description_changed`."New value: +"Event type filter (only `changes`), e.g. `tool_description_changed`."
      • changedInput schema / properties / view / description
        Previous value: -"`search`: araç adı/açıklamasında ara · `changes`: değişim akışı (asıl ürün) · `server`: bir sunucunun gün gün ölçüm tarihçesi · `tool`: bir aracın tanım tarihçesi · `stats`: endeksin kendi ölçüsü."New value: +"`search`: search tool name/description · `changes`: change feed (the actual product) · `server`: per-day measurement history for one server · `tool`: definition history for one tool · `stats`: index-level totals."
    • Changedmodel_archive8 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"`events`: kaç günlük pencere."New value: +"`events`: window in days."
      • changedInput schema / properties / includeDelisted / description
        Previous value: -"`catalog`: düşmüş modelleri de listele."New value: +"`catalog`: include delisted models."
      • changedInput schema / properties / provider / description
        Previous value: -"Sağlayıcı öneki, ör. `anthropic`, `openai`, `google`."New value: +"Provider prefix, e.g. `anthropic`, `openai`, `google`."
      • changedInput schema / properties / q / description
        Previous value: -"Model kimliği/adında arama (yalnız `catalog`)."New value: +"Search in model id/name (only `catalog`)."
      • changedInput schema / properties / slug / description
        Previous value: -"Tam model kimliği, ör. `anthropic/claude-opus-5` (yalnız `events`)."New value: +"Full model id, e.g. `anthropic/claude-opus-5` (only `events`)."
      • changedInput schema / properties / type / description
        Previous value: -"Olay türü (yalnız `events`)."New value: +"Event type (only `events`)."
      • changedInput schema / properties / view / description
        Previous value: -"`catalog`: izlenen modeller · `expiring`: emekliliği İLAN EDİLMİŞ olanlar · `delisted`: katalogdan düşenler · `events`: yaşam döngüsü olayları · `stats`: arşivin ölçüsü."New value: +"`catalog`: tracked models · `expiring`: retirement announced · `delisted`: dropped from the catalogue · `events`: lifecycle events · `stats`: archive totals."
      • changedInput schema / properties / withinDays / description
        Previous value: -"`expiring`: kaç gün içinde emekli olacaklar."New value: +"`expiring`: retire within this many days."
    • Changedmodel_drift4 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Kaç günlük tarihçe (yalnız `events`)."New value: +"History window in days (only `events`)."
      • changedInput schema / properties / provider / description
        Previous value: -"Sağlayıcıya göre süz (gemini, groq, cerebras, mistral)."New value: +"Filter by provider (gemini, groq, cerebras, mistral)."
      • changedInput schema / properties / severity / description
        Previous value: -"Yalnız `events` görünümünde."New value: +"Only for the `events` view."
      • changedInput schema / properties / view / description
        Previous value: -"`aliases`: takma ad → arkasındaki gerçek model tarihçesi · `events`: sapma olayları · `probes`: son koşudaki sonda durumu."New value: +"`aliases`: alias → the real model behind it · `events`: drift events · `probes`: probe status from the last run."
    • Changedseries_history4 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"Başlangıç tarihi (dahil)."New value: +"Start date (inclusive)."
      • changedInput schema / properties / includeEvidence / description
        Previous value: -"Her nokta için kaynak URL ve içerik özetini döndürür."New value: +"Include source URL and content excerpt for each point."
      • changedInput schema / properties / seriesId / description
        Previous value: -"Seri kimliği, ör. `tcmb.usd`. Boş bırakılırsa katalog döner."New value: +"Series id, e.g. `tcmb.usd`. Omit to list the catalogue."
      • changedInput schema / properties / to / description
        Previous value: -"Bitiş tarihi (dahil)."New value: +"End date (inclusive)."
    • Changedtr_address_parse2 fields changed
      • changedInput schema / properties / address / description
        Previous value: -"Serbest metin adres."New value: +"Free-text address."
      • changedInput schema / properties / defaultProvince / description
        Previous value: -"Adreste il geçmiyorsa varsayılacak il."New value: +"Province to assume when the address has none."
    • Changedtr_business_days4 fields changed
      • changedInput schema / properties / addDays / description
        Previous value: -"Bu kadar İŞ GÜNÜ ekle/çıkar."New value: +"Add/subtract this many business days (not calendar days)."
      • changedInput schema / properties / countHalfDaysAsWork / description
        Previous value: -"Arife yarım günleri iş günü sayılsın mı?"New value: +"Count Arife half-days as working days?"
      • changedInput schema / properties / end / description
        Previous value: -"Verilirse aradaki iş günü sayılır."New value: +"If set, count business days between start and this date."
      • changedInput schema / properties / start / description
        Previous value: -"Başlangıç tarihi (YYYY-AA-GG)."New value: +"Start date (YYYY-MM-DD)."
    • Changedtr_invoice_build4 fields changed
      • changedInput schema / properties / customer / properties / city / description
        Previous value: -"İl."New value: +"City."
      • changedInput schema / properties / customer / properties / district / description
        Previous value: -"İlçe."New value: +"District."
      • changedInput schema / properties / supplier / properties / city / description
        Previous value: -"İl."New value: +"City."
      • changedInput schema / properties / supplier / properties / district / description
        Previous value: -"İlçe."New value: +"District."
    • Changedtr_invoice_parse1 field changed
      • changedInput schema / properties / xml / description
        Previous value: -"UBL-TR e-Fatura / e-Arşiv XML içeriği."New value: +"UBL-TR e-Invoice / e-Archive (e-Arsiv) XML body."
    • Changedtr_money_to_words2 fields changed
      • changedInput schema / properties / amount / description
        Previous value: -"Tutar. \"1.234,56\" ve 1234.56 biçimlerinin ikisi de kabul edilir."New value: +"Amount. Accepts both \"1.234,56\" and 1234.56."
      • changedInput schema / properties / style / description
        Previous value: -"Çıktı harf biçimi."New value: +"Output letter case."
    • Changedtr_validate2 fields changed
      • changedInput schema / properties / type / description
        Previous value: -"Belirtilmezse biçimden otomatik tespit edilir."New value: +"Omitted → inferred from the format."
      • changedInput schema / properties / value / description
        Previous value: -"Doğrulanacak değer."New value: +"Value to validate."
  5. 9 tool updates
    • Addedbic_validate
    • Addedcontainer_validate
    • Addedisin_validate
    • Addedlei_validate
    • Addedtin_validate
    • Addedtr_labor
    • Changedtr_validate1 field changed
      • changedInput schema / properties / type / enum
        Previous value: -[
        -  "auto",
        -  "tckn",
        -  "vkn",
        -  "iban",
        -  "plate",
        -  "imei",
        -  "gtin"
        -]New value: +[
        +  "auto",
        +  "tckn",
        +  "vkn",
        +  "iban",
        +  "plate",
        +  "imei",
        +  "gtin",
        +  "kep",
        +  "mersis"
        +]
    • Addedtr_vat
    • Addedvin_validate
  6. 3 tool updates
    • Addedmcp_index
    • Addedmodel_archive
    • Changedseries_history1 field changed
      • changedInput schema / properties / seriesId / maxLength
        Previous value: -64New value: +96
  7. 1 tool update
    • Addedmodel_drift
  8. 1 tool update
    • Addedtr_invoice_build
  9. 13 tool updates
    • First observedemail_verify
    • First observedeu_vat_validate
    • First observediban_validate
    • First observedphone_validate
    • First observedsanctions_screen
    • First observedseries_history
    • First observedshipping_identify
    • First observedtr_address_parse
    • First observedtr_business_days
    • First observedtr_fuel_prices
    • First observedtr_invoice_parse
    • First observedtr_money_to_words
    • First observedtr_validate

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4/5.0
Disambiguation4/5

Most tools have clearly distinct purposes (e.g., bic_validate vs vin_validate), but there is notable overlap: tr_validate bundles Turkish validations that are also covered individually by iban_validate and tin_validate. Also, lei_validate and lei_lookup are closely related but distinct enough. Overall, agents can usually pick the right tool, but a few pairs could confuse.

Naming Consistency4/5

Tool names are consistently snake_case with predominately verb_noun patterns (e.g., validate, lookup, screen, parse, build). Some nouns like mcp_index, model_archive, and series_history break the verb pattern but are still predictable. Minor deviations from the noun_verb form (tr_invoice_build, shipping_identify) don't cause confusion. Very readable and consistent overall.

Tool Count3/5

With 27 tools, the set is heavy, exceeding the typical 3–15 well-scoped range. However, the server covers a broad domain: international standards validation, Turkey-specific business data (fuel, labor, invoices, addresses), and even MCP/LLM model archives. The count is justifiable given the scope, but it stretches coherence and may overwhelm agents.

Completeness4/5

The tool surface is remarkably comprehensive for the stated Turkey & EU business data purpose: validators for most ID types, VAT, IBAN, phone, VIN, sanctions; plus Turkey-specific operations like invoice build/parse, labor calculations, fuel prices, business days, and address parsing. Minor gaps exist (e.g., no general exchange-rate conversion, no credit-note-specific builder), but agents can accomplish core workflows without dead ends.

Resources