socs.fr, la commande publique française
Server Details
French public procurement: open tenders from BOAMP, public buyers, and contracts won by a company.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 4 tools
Each tool targets a distinct facet of the public procurement domain: buyers, sector statistics, open tenders, and company contract history. There is no meaningful overlap, and even the two market-oriented tools (barometre_secteur and consultations_ouvertes) are clearly separated by purpose.
All tool names follow the same stylistic pattern: lowercase French noun phrases with underscores, e.g., acheteurs_publics, barometre_secteur, consultations_ouvertes. The slight variation in marches_d_une_entreprise still adheres to the same structure and does not break the convention.
With only 4 tools, the server is tightly scoped to its stated purpose of French public procurement intelligence. Each tool earns its place by covering a necessary angle for business development, from identifying buyers to assessing market conditions.
The core workflows are covered: finding who buys, seeing what is open, understanding market benchmarks, and checking a company's track record. Minor gaps exist, such as no tool to fetch detailed tender documents or compare companies side-by-side, but these do not block primary use cases.
Available Tools
4 toolsacheteurs_publicsLes acheteurs publics d'un territoireARead-onlyIdempotentInspect
Liste les collectivités, hôpitaux et établissements publics qui ont réellement attribué des marchés sur un département, avec leur nombre de marchés, leur budget médian et leur dernière commande. À appeler quand la question porte sur « à qui vendre » ou « qui achète » quelque part. Le département s'écrit en code (35) ou en toutes lettres (Ille-et-Vilaine).
| Name | Required | Description | Default |
|---|---|---|---|
| limite | No | ||
| secteur | No | Secteur d'achat, en code CPV à deux chiffres ou en toutes lettres : « 45 », « travaux de construction » | |
| departement | Yes | Département, en code ou en toutes lettres : « 35 », « Ille-et-Vilaine » |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds useful behavioral context by clarifying that only actually awarded contracts are included ('réellement attribué') and by revealing the nature of the returned data (count, median budget, last order).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences cover purpose, output, usage context, and the required input format. There is no filler, and the main scoping information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description usefully names the returned aggregates so an agent knows what to expect. It covers the key use case and required parameter format; the only gaps are the optional 'limite' and 'secteur' behaviors, which are partly inferable from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: 'departement' and 'secteur' are documented, but 'limite' is not. The description's only parameter-related sentence repeats the schema's exact 'departement' format ('35', 'Ille-et-Vilaine') and adds no new meaning about 'limite' or 'secteur'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Liste') and identifies the exact resource: collectivités, hôpitaux and établissements publics that actually awarded contracts in a department. It also states the returned metrics (number of contracts, median budget, last order), which makes the tool's purpose concrete. The use-case phrasing 'à qui vendre / qui achète' distinguishes it from the sibling tools about sector statistics, open consultations, and company-specific contracts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger: use this tool when the question is about 'à qui vendre' or 'qui achète' in a territory. It does not name alternative tools or state when not to use it, so it falls short of a full exclusion guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
barometre_secteurConcurrence et montants d'un secteur d'achatARead-onlyIdempotentInspect
Pour un secteur d'achat (code CPV ou libellé) et un territoire : combien d'offres reçoit en moyenne un marché comparable, dans quelle fourchette de montants il se situe, quelle part passe par une procédure adaptée et quelle part relève d'accords-cadres. À appeler avant de décider de candidater. Sans département, la réponse porte sur la France entière et sert de repère.
| Name | Required | Description | Default |
|---|---|---|---|
| secteur | Yes | Secteur d'achat, en code CPV à deux chiffres ou en toutes lettres | |
| departement | No | Département, en code ou en toutes lettres. Sans lui, la France entière. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, which covers the safety profile. The description adds meaningful behavioral context by specifying what the tool computes (averages, ranges, shares) and how the scope changes with or without a department. This goes beyond the annotations and helps the agent understand the nature of the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: two sentences pack the tool's purpose, the indicators returned, the recommended usage moment, and the default geographic scope. It is front-loaded with the resource and question being answered, followed by actionable guidance. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analytical tool with only two simple parameters and no output schema, the description is complete. It tells the agent what the tool returns, when to call it, and what happens if the optional parameter is omitted. The absence of an output schema is mitigated by the description's enumeration of the indicators, which effectively describes the return content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as both 'secteur' and 'departement' already have clear descriptions. The description adds minor context by clarifying the sector can be a CPV code or label, and that the territory is a department with France-wide fallback, but it largely echoes what the schema already states. Thus the description does not substantially enhance parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines what the tool does: it returns market statistics (average number of offers, amount ranges, share of adapted procedures, share of framework agreements) for a purchasing sector on a territory. It also distinguishes it from sibling tools by framing it as the call to make 'avant de décider de candidater', which positions it as a market-analysis tool rather than a direct procurement search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'À appeler avant de décider de candidater'. It also explains the default behavior when no department is provided ('la réponse porte sur la France entière et sert de repère'). It does not explicitly mention when not to use it or name alternatives, but the context is clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultations_ouvertesLes appels d'offres publics encore ouvertsARead-onlyIdempotentInspect
Les consultations publiées au BOAMP dont la date limite de remise des offres n'est pas passée, interrogées en direct. À appeler dès qu'une question porte sur des marchés « à venir », « ouverts » ou « auxquels répondre » : ces avis changent tous les jours et ne peuvent pas être connus de mémoire. Filtre par département, par mots-clés et par délai minimum restant : sous deux semaines, une PME n'a matériellement pas le temps de monter un dossier.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Travaux, Fournitures ou Services | |
| limite | No | ||
| joursMin | No | Ne garder que les avis laissant au moins ce nombre de jours pour répondre | |
| motsCles | No | Mots présents dans l'objet du marché : « voirie », « restauration scolaire » | |
| departement | No | Département, en code ou en toutes lettres. Sans lui, la France entière. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, open-world behavior; the description adds valuable context beyond that by stating the data is queried live and changes every day. It also explains why memory/cached knowledge is insufficient, which is useful behavioral guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, usage trigger, and filter guidance with rationale. No filler, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, optionally-filtered live query tool, the description covers purpose, triggers, filters, and why live access is necessary. The main gap is the meaning of 'limite', which is undocumented in both schema and description, and there is no output-schema guidance; still, the tool is simple enough that this does not seriously impair use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the baseline is 3. The description groups filters (department, keywords, minimum remaining delay) and adds a rationale for the two-week threshold, but it adds nothing about the undocumented 'limite' parameter or anything beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise definition: consultations published at BOAMP whose submission deadline has not passed, queried live. This clearly distinguishes the tool from any past-contract or sector-level siblings by its 'still open' scope and live data source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger: call whenever a question concerns markets described as 'à venir', 'ouverts' or 'auxquels répondre', because notices change daily and cannot be known from memory. It does not name alternative sibling tools or state when not to use it, 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.
marches_d_une_entrepriseLes marchés publics remportés par une entrepriseARead-onlyIdempotentInspect
À partir d'un SIREN : les marchés publics qu'une entreprise a remportés, chez quels acheteurs, dans quels secteurs et pour quels montants. À appeler quand la question porte sur l'activité publique d'une société, sa clientèle publique ou son poids sur un marché. Rend une réponse vide quand l'entreprise n'a remporté aucun marché déclaré, ce qui est le cas de l'immense majorité des sociétés françaises.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | SIREN à neuf chiffres, espaces tolérés | |
| limite | No | Nombre de marchés détaillés à rendre (8 par défaut) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a safe, read-only, non-destructive operation. The description adds meaningful behavioral context beyond that: it returns an empty response when the company has won no declared contracts, and notes this is true for the vast majority of French companies, which helps calibrate agent expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words: the first defines the input and output, the second gives usage context, and the third warns about empty results. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two well-documented parameters and no output schema, the description covers what is returned, the triggering question, and the empty-result edge case. It could add a bit more about output structure or invalid SIREN handling, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters ('siren' format and 'limite' constraints and default). The description adds only the general framing 'from a SIREN' but does not meaningfully enrich the parameter-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: from a SIREN, return the public contracts a company has won, including buyers, sectors, and amounts. It also frames the tool around a company's public activity, which clearly distinguishes it from the sibling tools focused on buyers, sectors, and open consultations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to call the tool: when the question concerns a company's public activity, public clientele, or weight in a market. It does not name alternatives or state when not to use it, but the context provided is clear enough for routing.
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.
4 tool updates
- First observed
acheteurs_publics - First observed
barometre_secteur - First observed
consultations_ouvertes - First observed
marches_d_une_entreprise
Related MCP Connectors
France BOAMP MCP — French government public procurement notices (keyless).
UK public procurement data for AI agents: tenders, contracts, buyer and supplier profiles.
Search French companies: financials, directors, ownership, M&A and insolvency events.
French companies: dated changes and insolvencies (BODACC), filed accounts by year (INPI). No key.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides tools to search and retrieve French public procurement data (tenders, awarded contracts) and company information from official open APIs.-
- AlicenseBqualityBmaintenanceEnables agents to inspect French public procurement sources, including DECP, BOAMP, buyers, suppliers, and SIRENE data, to discover and summarize public contracts and related context.5MIT
- AlicenseAqualityBmaintenanceExposes French and EU public procurement data (BOAMP + TED) as MCP tools for AI agents, enabling search for tenders, awards, and winner intelligence via typed filters.4141 PyPIMIT
- AlicenseNot gradedqualityCmaintenanceEnables querying French government public procurement notices (BOAMP) without an API key.16 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.