French Companies MCP — recherche-entreprises.api.gouv.fr. The French government's keyless meta-API. It merges Sirene (INSEE), INPI legal filings, RGE eco-labels, and the association registry into one search index, so a single query returns names, addresses, directors, financials, sector codes, and labels.
Three well-named, read-only tools with complete input schemas and clear descriptions. All parameters are typed and described. Tool names follow verb_noun convention (search, get_enterprise, nearby). Descriptions are concise (50 - 150 chars) and explain WHAT each tool does. However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Error handling is minimal (only HTTP status codes, no recovery guidance). No tool annotations (readOnlyHint, idempotentHint) despite all being read-only. Parameter constraints (e.g., employee_range enum values, radius_km bounds) are documented in descriptions but not formalized in schema.
Fetch a single legal unit with all its establishments by SIREN (9 digits).
List establishments within a radius of a geo coordinate. Useful for "all businesses near …".
Full-text search across French legal units. Matches name, sigle, director names, addresses. Returns SIREN, denomination, establishments, sector code (APE/NAF), and basic financials.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for downstream tool chaining or data extraction.
No tool annotations (readOnlyHint, idempotentHint, destructiveHint). All three tools are read-only and idempotent, but this is not declared in the schema. Agents cannot infer safety properties.
Error handling lacks recovery guidance. HTTP 404, 429, and generic errors throw raw messages ('not found', 'rate-limit') without suggesting next steps (e.g., 'Try a different query' or 'Retry after 60 seconds').
Parameter constraints (employee_range enum, radius_km bounds 0.05 - 50) are documented in descriptions but not formalized in JSON Schema. LLMs cannot parse constraints programmatically.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
No pagination metadata in response. Tools accept page/per_page but do not document whether responses include total_count or next_cursor, blocking LLM-driven pagination logic.