Keyless French company checks (Sirene, BODACC, VIES, sanctions), DPE compliance, product recalls
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional: your RapidAPI key, to go beyond the free daily budget
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Checks whether a product was recalled in France (RappelConso) or the EU (Safety Gate, since 2022) by its barcode number (GTIN/EAN-13, UPC-A, EAN-8). recalled true lists each recall with its date, reason, risks, measures and the lots concerned (all_lots false means only those lots); compare the lots with the product at hand. recalled false comes with checked_at and each source's freshness. If a source's backfilled is false, its older recalls may still be missing.
Barcode number, 8 to 14 digits; spaces allowed
Tool list last changed Oct 23, 2026.
Checks whether a product was recalled in France (RappelConso) or the EU (Safety Gate, since 2022) by its barcode number (GTIN/EAN-13, UPC-A, EAN-8). recalled true lists each recall with its date, reason, risks, measures and the lots concerned (all_lots false means only those lots); compare the lots with the product at hand. recalled false comes with checked_at and each source's freshness. If a source's backfilled is false, its older recalls may still be missing.
| Argument | Type | Description |
|---|---|---|
| gtin* | string | Barcode number, 8 to 14 digits; spaces allowed |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"gtin"
],
"properties": {
"gtin": {
"type": "string",
"description": "Barcode number, 8 to 14 digits; spaces allowed"
}
}
}For a French postal address, returns each dwelling's energy performance certificate (DPE) and its rental verdict under the Climate and Resilience law: rentable now or not, rent frozen or not, ban date (G 2025, F 2028, E 2034), DPE validity, and the label estimated under current electricity rules. Narrow with floor, surface or address complement. Information, not legal advice.
| Argument | Type | Description |
|---|---|---|
| floor | integer | |
| address* | string | Full address with house number, postcode and town |
| surface | number | Living area in m² |
| complement | string | e.g. 'Apt 12', 'Bât B' |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"floor": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"address": {
"type": "string",
"maxLength": 200,
"minLength": 5,
"description": "Full address with house number, postcode and town"
},
"surface": {
"type": "number",
"maximum": 1000,
"minimum": 1,
"description": "Living area in m²"
},
"complement": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "e.g. 'Apt 12', 'Bât B'"
}
}
}Checks live in VIES, the European Commission's VAT register, whether a French VAT number (or the VAT number of a SIREN or SIRET) is valid, with the name and address declared for VAT, crossed with the French registry: company active, insolvency proceeding, and a name_matches consistency signal between the VIES name and the registered name (not a proof of ownership). To confirm the number belongs to a given company, compare the returned names with that company's name. Pass requester_vat (the user's own EU VAT number) to get a VIES consultation number, proof of the check. vies.status 'unavailable' means VIES could not answer: try again later, it does not mean invalid.
| Argument | Type | Description |
|---|---|---|
| number* | string | FR VAT number, SIREN or SIRET; spaces allowed |
| requester_vat | string | The user's own EU VAT number, e.g. DE811569869, for a consultation number |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 32,
"minLength": 9,
"description": "FR VAT number, SIREN or SIRET; spaces allowed"
},
"requester_vat": {
"type": "string",
"maxLength": 32,
"minLength": 4,
"description": "The user's own EU VAT number, e.g. DE811569869, for a consultation number"
}
}
}Profile of a French company by SIREN: legal name and form, activity, active or ceased, head office, officers (name and role), whether an insolvency proceeding is ongoing (in_insolvency) and its latest BODACC court announcements. Use it to answer 'can I do business with this company?'.
| Argument | Type | Description |
|---|---|---|
| siren* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siren"
],
"properties": {
"siren": {
"type": "string"
}
}
}The dwelling of a French DPE (energy performance certificate) by its 13-character number (e.g. 2569E0160739C), with the same rental verdict as check_rental_compliance. Replaced DPEs are not available: the ADEME dataset drops them.
| Argument | Type | Description |
|---|---|---|
| dpe_number* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"dpe_number"
],
"properties": {
"dpe_number": {
"type": "string"
}
}
}One establishment of a French company by SIRET: address, NAF activity, open or closed, head office or not. Use it to check a supplier's or invoice's address.
| Argument | Type | Description |
|---|---|---|
| siret* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siret"
],
"properties": {
"siret": {
"type": "string"
}
}
}Public contracts a French company won (DECP, French public procurement data): their count, the summed maximum amounts (leaving out amounts the source flags as suspect or aberrant, given apart), first and latest notification, then the contracts newest first, 20 per page, with buyer, object, maximum amount, CPV code, procedure, duration and place; plus the company's name, whether it is active and whether an insolvency proceeding is ongoing. Amounts are ceilings declared by buyers (maximum estimated, excl. VAT), not spend or revenue; the count is approximate (computed by the source: a contract held by two establishments counts twice, and a holder whose identifier merely contains the SIREN may be included). Narrow with from and to (notification dates).
| Argument | Type | Description |
|---|---|---|
| to | string | Notified on or before, YYYY-MM-DD |
| from | string | Notified on or after, YYYY-MM-DD |
| page | integer | Page of 20 contracts, from 1 |
| siren* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siren"
],
"properties": {
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Notified on or before, YYYY-MM-DD"
},
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Notified on or after, YYYY-MM-DD"
},
"page": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Page of 20 contracts, from 1"
},
"siren": {
"type": "string"
}
}
}Product recalls published since a date in France (RappelConso) and the EU (Safety Gate), newest first, 50 per page; follow next_cursor for more. Narrow by source, category or the notifying country. A French Safety Gate alert merged into its RappelConso fiche is not listed twice.
| Argument | Type | Description |
|---|---|---|
| since* | string | Published on or after, YYYY-MM-DD, 2018-01-01 or later |
| cursor | string | The next_cursor of the previous page |
| source | string | |
| country | string | Notifying country, ISO 3166 alpha-2, e.g. FR |
| category | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"since"
],
"properties": {
"since": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Published on or after, YYYY-MM-DD, 2018-01-01 or later"
},
"cursor": {
"type": "string",
"maxLength": 200,
"description": "The next_cursor of the previous page"
},
"source": {
"enum": [
"rappelconso",
"safety_gate"
],
"type": "string"
},
"country": {
"type": "string",
"pattern": "^[A-Za-z]{2}$",
"description": "Notifying country, ISO 3166 alpha-2, e.g. FR"
},
"category": {
"enum": [
"food",
"vehicles",
"childcare",
"toys",
"home",
"electrical",
"cosmetics",
"clothing",
"sports",
"communication",
"other"
],
"type": "string"
}
}
}Screens a French company and its officers (people, with their month of birth, and companies) against the French national asset-freeze register (registre national des gels: UN, EU and French measures). result is clear, possible_match or strong_match; each match gives the register entry, its legal bases and its official page. A match is a lead to check on that page, not a decision; a different date of birth already rules namesakes out. strong: a person with the same name and year and month of birth, or a company whose own SIREN or SIRET the register entry lists; a same-named company without it is only possible. Beneficial owners, foreign lists (OFAC, UK) and politically exposed persons are not covered.
| Argument | Type | Description |
|---|---|---|
| number* | string | SIREN, SIRET or FR VAT number; spaces allowed |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"number"
],
"properties": {
"number": {
"type": "string",
"maxLength": 32,
"minLength": 9,
"description": "SIREN, SIRET or FR VAT number; spaces allowed"
}
}
}Finds French companies by name, optionally narrowed by department (e.g. 75, 2A, 971), postal code or NAF activity code (e.g. 10.71C). Returns up to 10 companies with their SIREN. Use get_company next for the full profile.
| Argument | Type | Description |
|---|---|---|
| name | string | Company name, 3 characters minimum |
| department | string | |
| postal_code | string | |
| activity_code | string | NAF rév. 2 code |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 3,
"description": "Company name, 3 characters minimum"
},
"department": {
"type": "string",
"pattern": "^(\\d{2}|2A|2B|97[1-6])$"
},
"postal_code": {
"type": "string",
"pattern": "^\\d{5}$"
},
"activity_code": {
"type": "string",
"pattern": "^\\d{2}\\.?\\d{2}[A-Z]$",
"description": "NAF rév. 2 code"
}
}
}Checks a French SIREN (9 digits), SIRET (14 digits) or intra-EU VAT number (FR + 11 characters): format, checksum, and whether the registered company or establishment exists. Use it first when an identifier was typed by a person.
| Argument | Type | Description |
|---|---|---|
| id* | string | SIREN, SIRET or FR VAT number; spaces allowed |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 32,
"minLength": 9,
"description": "SIREN, SIRET or FR VAT number; spaces allowed"
}
}
}