Skip to main content
Glama
@writerslogic/ai-agents-mcp

@writerslogic/ai-agents-mcp

Official

company_identity

Resolves a company name, domain, LEI, VAT number, CIK, or ticker to one verified legal entity via official registries; returns ranked candidates when the match is ambiguous.

Instructions

Company identity: name, domain, LEI, VAT, CIK or ticker to one verified legal entity. Resolves a company name, web domain, LEI, EU VAT number, SEC CIK or stock ticker to one legal entity using official free registries in a single call: GLEIF (legal name, other names, addresses, jurisdiction, registry id, direct and ultimate parent), the SEC ticker table (CIK, ticker), the EU VIES VAT service, and Companies House officers when the operator has configured a key. Deterministic matching with explicit ambiguity: when no single candidate clearly leads, it returns status "ambiguous" with ranked candidates instead of guessing. For KYC, vendor onboarding and CRM de-duplication by agents. It does NOT fetch or scrape the domain, does not cover companies without an LEI, does not return beneficial owners or financials, and uses no model.

Cost: 0.05 USDC per call, paid automatically over x402 on Base when AGENT_PRIVATE_KEY is configured and the price is within MAX_USDC_PER_CALL.

Input Schema

NameRequiredDescriptionDefault
cikNoSEC Central Index Key.
leiNo20-character LEI; check digits are validated (ISO 17442).
vatNo
nameNoCompany name, with or without legal form.
domainNoCompany web domain; only used to guess a name and to prefer matching candidates. It is never fetched.
tickerNoStock ticker, matched case-insensitively against the SEC table.
countryNoISO 3166-1 alpha-2 hint; raises the score of candidates registered in that country.
max_candidatesNoHow many ranked candidates to return.
include_parentsNoLook up GLEIF direct and ultimate parents.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and idempotentHint=false, which could confuse an agent for a lookup tool; the description resolves this by disclosing the 0.05 USDC x402 payment on Base, the AGENT_PRIVATE_KEY and MAX_USDC_PER_CALL prerequisites. It also discloses the deterministic matching policy and the 'ambiguous' status behavior, adding real value beyond annotations, though it does not describe latency or failure modes when payment is unconfigured.

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

Conciseness4/5

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

The description is front-loaded with the core resolution statement, then sources, then matching behavior, then exclusions, then cost. It is dense and mostly earns its length, though the registry enumeration and the cost paragraph could be tightened slightly.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns, and it does so partially: it names the GLEIF fields returned (legal name, other names, addresses, jurisdiction, registry id, parents) and the 'ambiguous' status with ranked candidates. It does not specify the success status value or the full response envelope, leaving a small gap for a 9-parameter tool.

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

Parameters4/5

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

Schema coverage is already 89%, so the baseline is 3, but the description adds genuine meaning: domain is 'only used to guess a name and to prefer matching candidates' and is never fetched, and country is a scoring hint rather than a filter. It does not clarify how multiple identity inputs are combined when several are supplied.

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-plus-resource statement ('Resolves a company name, web domain, LEI, EU VAT number, SEC CIK or stock ticker to one legal entity') and enumerates the exact registries consulted. It is clearly distinguishable from siblings like lead_enrichment or token_due_diligence because it names its inputs, sources, and output shape.

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

Usage Guidelines4/5

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

It gives concrete use cases ('For KYC, vendor onboarding and CRM de-duplication by agents') and a strong negative scope ('does NOT fetch or scrape the domain, does not cover companies without an LEI, does not return beneficial owners or financials'). It stops short of naming a specific alternative sibling tool to use instead, which keeps it from a 5.

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