Skip to main content
Glama

resolve_companies

Read-onlyIdempotent

Rapprochement EN LOT de fiches mal identifiees vers leur SIREN - la forme qu'un CRM, un tableur ou un export CSV contient.

Utiliser cet outil quand l'utilisateur arrive avec une LISTE de societes a identifier ("voici 200 clients, retrouve leurs SIREN", "rapproche ce fichier", "nettoie ma base"). Pour UNE societe cherchee par son nom, utiliser search_companies : il rend des resultats classes, celui-ci rend une decision.

Difference de nature avec search_companies : cet outil REFUSE de trancher quand il n'est pas sur, et le dit. Il ne rend jamais un "meilleur resultat" par defaut.

Chaque fiche revient avec un status :

  • resolved : SIREN certain, exploitable directement.

  • review : plusieurs candidats plausibles OU nom trop generique. NE PAS choisir a sa place : presenter les candidats a l'utilisateur et lui faire confirmer.

  • no_match : aucune correspondance.

Le champ reason explique un review et appelle des gestes differents : ambiguous_candidates (deux societes equivalentes, il faut departager), weak_name_overlap (le nom ne recouvre pas assez le candidat), missing_name, lookup_failed (panne technique, a rejouer - ce n'est PAS une absence de correspondance).

CONSEIL A DONNER : fournir le code postal double quasiment le taux de rapprochement automatique. Si les fiches n'en ont pas et que la source en contient un, le demander vaut mieux que d'accepter des candidats douteux. Un jeton en trop dans le nom ("Carrefour Massy" au lieu de "Carrefour") coute plus cher qu'un nom tronque : nettoyer les suffixes de ville ou d'agence avant d'envoyer.

Gratuit et instantane quand la fiche porte deja un identifiant : un siren, un siret (les 9 premiers chiffres) ou un numero de TVA francais sont resolus sans aucune recherche, et sans risque d'erreur.

Retourne results[] (dans l'ordre d'entree, avec l'id fourni s'il y en a un) et summary{total, resolved, review, no_match}. Lire summary AVANT de detailler : c'est lui qui dit si le fichier est exploitable tel quel ou s'il demande un passage manuel.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
recordsYesFiches a rapprocher, 200 maximum par appel

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultsYes
summaryYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark it read-only and idempotent, and the description adds substantial behavioral context on top: the tool refuses to decide when uncertain, never returns a default 'best result', distinguishes lookup_failed (technical failure, to retry) from genuine no_match, and resolves instantly when an identifier is already present. No contradiction with readOnlyHint=true — this is a lookup, not a mutation.

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

Conciseness4/5

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

The description is long but densely packed with high-value information: usage conditions, sibling differentiation, status semantics, reason semantics, data-quality advice, and return-format guidance. The only redundancy is the search_companies comparison appearing twice, and the content justifies the length given the tool's nuanced refusal 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?

Very complete for a complex batch tool: covers input expectations, output shape (results[] preserving order with id passthrough, summary counts), the instruction to read summary before detailing, and per-status actions. Minor gap: no guidance on handling inputs exceeding the 200-record schema limit (batching strategy), but the output schema covers return values so the description need not repeat them.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining that siren/siret/TVA inputs resolve without search, that postal_code roughly doubles the automatic match rate, and that extra tokens in the name field are costlier than truncated ones (clean city/agency suffixes). This enriches the agent's understanding of how parameter values affect outcomes.

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

Purpose5/5

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

States a specific operation — batch matching ('Rapprochement EN LOT') of poorly identified records to SIREN identifiers — and immediately contrasts itself with search_companies ('il rend des resultats classes, celui-ci rend une decision'). This distinguishes it from its closest sibling without requiring schema inspection.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('quand l'utilisateur arrive avec une LISTE de societes a identifier') and when NOT to ('Pour UNE societe cherchee par son nom, utiliser search_companies'). It also provides a downstream protocol: for review status, present candidates and let the user confirm rather than choosing. This is exemplary routing guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.3/5.0
Disambiguation4/5

Most tools have clearly distinct resource+action purposes, and the descriptions explicitly contrast near-neighbor tools like search_companies vs resolve_companies and get_events vs search_events. The only real risk is the trio of director-oriented tools, especially search_director_companies vs search_companies with dirigeant filters, which requires careful reading to avoid misselection.

Naming Consistency5/5

All 18 tools follow a consistent snake_case verb_noun pattern: search_, get_, list_, create_, watch_, unwatch_, mark_, resolve_. Singular names are used for single-entity actions and plural for list/search operations, making the pattern predictable. There is no camelCase, vague verb, or style mixing.

Tool Count4/5

18 tools is slightly above the ideal 10-15 range, but the count is justified by the broad domain covering search, company intelligence, watchlists, and news. Each tool appears to earn its place, and there are no obvious stubs or redundant duplicates. It feels a bit heavy but not bloated.

Completeness3/5

The company intelligence surface is very complete: search, deep company data, financials, directors, group graphs, events, and credit risk are all covered. Watchlists also have full add/remove/list coverage, but saved searches have a notable lifecycle gap—create and list exist, yet there is no update, delete, or alert-toggle for existing saved searches, creating a management dead end.

Resources