Sirenic
Pay-per-call API of official French & European company data (SIRENE, EU registries, VAT, sanctions), built for AI agents β settled in USDC/EURC via x402
Documentation
Sirenic Examples
π Sirenic is live on Product Hunt today. Take a look and say hi: https://www.producthunt.com/products/sirenic?launch=sirenic
Working examples for Sirenic β official French and European company data for AI agents. Pay-per-call in USDC or EURC via the x402 protocol: no account, no API key β your agent pays each request on Base. Every paid response is Ed25519-signed and verifiable offline (recipe).
- Landing & pricing: https://api.sirenic.eu
- OpenAPI: https://api.sirenic.eu/openapi.json
- For LLMs: https://api.sirenic.eu/llms.txt
- MCP server:
https://api.sirenic.eu/mcp(streamable HTTP) - A2A agent:
POST https://api.sirenic.eu/a2a(JSON-RPC, a2a-x402 payment extension) β card athttps://api.sirenic.eu/.well-known/agent-card.json
Data sources: INSEE Sirene / INPI RNE and other official registers, open
licenses (Etalab 2.0, NLOD, CC-BY 4.0, OGL, CC0). Data is redistributed
as published β every response carries source and disclaimer fields.
Quickstart 1 β see a payment quote (no wallet needed)
curl -i "https://api.sirenic.eu/v1/entreprise/552032534" -H "Accept: application/json"
You get HTTP 402 with the x402 payment requirements in the
PAYMENT-REQUIRED header and a JSON body. Each quote carries two payment
options at the same numeric amount β USDC (first, the default for existing
clients) or EURC β with the official Circle contracts, receiving address and
network.
Quickstart 2 β pay and call in ~10 lines (TypeScript)
npm install @x402/fetch @x402/core @x402/evm viem
import { privateKeyToAccount } from "viem/accounts";
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
const account = privateKeyToAccount(process.env.TEST_WALLET_KEY as `0x${string}`);
const client = new x402Client();
registerExactEvmScheme(client, { signer: account });
const payingFetch = wrapFetchWithPayment(fetch, client);
const res = await payingFetch("https://api.sirenic.eu/v1/entreprise/552032534");
console.log(await res.json()); // paid, settled, delivered
TEST_WALLET_KEY is the private key of your client test wallet (the
payer). The server never holds any key. The exact scheme uses signed
authorizations, so the client pays no gas.
Quickstart 3 β plug into Claude / Cursor (MCP)
Claude Code:
claude mcp add --transport http sirenic https://api.sirenic.eu/mcp
Cursor / any MCP client (mcpServers config):
{ "mcpServers": { "sirenic": { "url": "https://api.sirenic.eu/mcp" } } }
44 tools are exposed β including the FREE detect_company_identifiers (paste any text, get SIREN/SIRET/VAT/LEI with the right call to make) and verify_iban_bank. Search with 0-1 confidence scores, company profiles,
KYB files, a $1 company-intelligence report, sanctions screening, AMF
regulator alerts, regulatory authorisations by SIREN (EBA PSD2 register,
EIOPA, ARCEP), EU financial authorisations (ESMA), industrial risk
(Seveso/ICPE), lobbying register, EU procurement awards (TED), watchlists
with daily checks and Ed25519-signed webhooks, financials, capital
structure, sector benchmarks, failure-risk score, Belgian annual
accountsβ¦). Each tool accepts
an optional x_payment parameter: without it you get the 402 quote; sign it
with an x402 client and call again. Every tool declares an output schema
and returns structuredContent, plus MCP annotations (read-only vs. state-
changing), so a client can type-check responses instead of parsing prose. The
quote you get back is the signable x402 payment requirements
({x402Version, accepts[]}) β an agent can pay entirely from MCP, without
touching the REST API.
Quickstart 4 β A2A (Agent2Agent)
Sirenic is also an A2A 1.0 agent with the official crypto payment extension (a2a-x402). Discover it from the card, send a JSON data part, get the quote as task metadata, pay on the same task:
curl -s https://api.sirenic.eu/.well-known/agent-card.json -H "A2A-Version: 1.0"
npx tsx examples/a2a.ts # quote for free; add TEST_WALLET_KEY to pay
Quickstart 5 β LangChain & CrewAI SDKs
Ready-made paying tools with a hard price cap (sdk/typescript, sdk/python):
import { sirenicTools } from "sirenic-agents"; // LangChain.js
const tools = sirenicTools({ walletKey, maxPriceUsd: 0.25 });
from sirenic_agents import SirenicClient, build_crewai_tools # CrewAI / LangChain
tools = build_crewai_tools(SirenicClient(wallet_key=key, max_price_usd=0.25))
CrewAI can also use Sirenic's MCP server directly, no SDK:
Agent(..., mcps=["https://api.sirenic.eu/mcp"]).
E-invoicing France 2026 β agent-side toolkit
From September 1, 2026, every French company must be able to RECEIVE
electronic invoices (with issuance phasing in through 2027). Sirenic ships the
agent-side checks, no account needed: facturation-prep ($0.02 β legal name &
form, computed intra-EU VAT number, SIRET establishments, obligation dates),
tva/verifier ($0.003 β live VIES) and iban/verifier ($0.005 β the payee's
bank identified from official registers, incl. BIC via the GLEIF/SWIFT
mapping). One free call to /v1/reperer tells your agent which of these to
use on any raw text. Or take the bundle: GET /v1/facturation/dossier?siren=&iban=
($0.03) runs all three AND returns a deterministic pret_a_facturer verdict
with closed-list reasons.
Endpoints and prices (USDC or EURC per call, same amount)
| Endpoint | Price | What you get |
|---|---|---|
GET /v1/recherche?q= | $0.001 | Search 30M French companies |
GET /v1/entreprise/{siren} | $0.005 | Full official French profile |
GET /v1/entreprise/{siren}/etablissements | $0.003 | All establishments (SIRET) |
GET /v1/entreprise/{siren}/alertes | $0.01 | BODACC legal alerts (insolvencyβ¦) |
GET /v1/entreprise/{siren}/finances | $0.01 | Filed financials + ratios |
GET /v1/entreprise/{siren}/marches-publics | $0.01 | Public procurement won (French DECP) |
GET /v1/entreprise/{siren}/marches-publics-ue | $0.02 | EU procurement awards (TED, identifier-matched) |
GET /v1/entreprise/{siren}/risques-industriels | $0.01 | Industrial risk: Seveso/ICPE facilities + synthesis |
GET /v1/entreprise/{siren}/lobbying | $0.01 | HATVP lobbying register (org-level: budgets, subjects, clients) |
GET /v1/entreprise/{siren}/changements?depuis= | $0.01 | New BODACC events since a date |
GET /v1/entreprise/{siren}/pi | $0.03 | Industrial property (trademarks, patents, designs) |
GET /v1/entreprise/{siren}/comptes-pdf | $2.00 | Accounts annexe notes, AI-extracted (structured) |
GET /v1/entreprise/{siren}/capital | $0.35 | Ownership from public articles, AI-extracted |
GET /v1/entreprise/{siren}/liens-capitalistiques | $2.00 | Single-level capital links between legal entities |
GET /v1/entreprise/{siren}/sante | $0.15 | AI health summary (7-day cache) |
GET /v1/score/defaillance/{siren} | $0.10 | Failure-risk score (deterministic) |
GET /v1/secteur/{code_naf}/benchmarks | $0.05 | Sector aggregates (k-anonymised) |
GET /v1/kyb/{siren} | $0.15 | Full KYB file + sanctions screening |
GET /v1/kyb/batch?sirens= | $0.105/co | Batch KYB (2β100 companies) |
GET /v1/sanctions/check?name= | $0.02 | 6 official sanctions lists (UN, EU, OFAC, UK, FR, Swiss SECO), scored |
GET /v1/regulateurs/fr/alertes?nom=|siren= | $0.01 | AMF blacklists + PSAN/SGP registers (scam check, crypto providers) |
GET /v1/eu/agrements?q= | $0.01 | EU financial authorisations (ESMA, all EU/EEA, by name or LEI) |
GET /v1/entreprise/{siren}/agrements | $0.02 | Regulatory licences by SIREN: payment institution, e-money, account information, payment agent or exempt entity (EBA PSD2 register, daily), insurer (EIOPA), telecom operator (ARCEP) β with licensed services, EEA passporting and withdrawals |
GET /v1/dirigeant/recherche?nom= | $0.02 | Reverse director search |
GET /v1/prospection?... | $0.02/page | Multi-criteria prospecting |
GET /v1/rapport/{siren} | $0.50 | PDF report |
GET /v1/intelligence/{siren} | $1.00 | Intelligence report: every block cross-referenced β executive summary, officersΒ΄ network, filings, trends, closed-list signals, rule-based verdict |
GET /v1/entreprise/{siren}/documents | $0.02 | List filed documents (INPI) |
GET /v1/documents/{type}/{id} | $0.10 | Download a filed document (PDF) |
GET /v1/tva/verifier/{numero} | $0.003 | EU VAT validation (VIES) |
GET /v1/facturation/dossier?siren=&iban= | $0.03 | Invoicing pack: e-invoicing prep + live VIES + IBAN/bank check + a deterministic pret_a_facturer verdict |
GET /v1/iban/verifier/{iban} | $0.005 | IBAN check + bank identification (FR/BE/AT/NL, incl. LEI) β not a Verification of Payee |
GET /v1/surveillance/creer?cibles= | $0.05/target/30d | Watchlist: daily checks on companies & directors, signed webhooks + e-mail digests |
GET /v1/surveillance/{token}/renouveler | $0.05/target/30d | Renew a watchlist (grace: 7 days after expiry) |
GET /v1/eu/recherche?q= | $0.003 | Search European registers (BE, NO, EE, LV local; CZ, SK, FI live) + GLEIF |
GET /v1/eu/entreprise/{pays}/{id} | $0.01 | Unified European profile β 11 countries (BE incl. NACEBEL activities & establishments; CZ, SK, FI, PL live) |
GET /v1/eu/entreprise/BE/{id}/comptes | $0.01 | Belgian filings list (official NBB Central Balance Sheet Office) |
GET /v1/eu/entreprise/BE/{id}/comptes/{ref} | $0.15 | One Belgian annual-account deposit (JSON since 2022, PDF before) |
GET /v1/eu/entreprise/BE/{id}/transactions-dirigeants | $0.02 | Insider dealing at a Belgian listed company (FSMA, Art. 19 MAR): are its managers buying or selling? Issuer-level aggregate β no individual is ever named |
Free: GET / (landing), GET /preview/entreprise/55203253400646 (sample
response), GET /v1/reperer?texte= (detect SIREN/SIRET/VAT/LEI in any text,
with the suggested paid call and its price), GET /openapi.json,
GET /llms.txt, GET /healthz; watchlist
status GET /v1/surveillance/{token} and stop β¦/{token}/arreter (the token
returned at creation is the capability β no account).
In this repo
examples/quote.shβ inspect a 402 quote with curl.examples/pay-and-call.tsβ pay one request end to end.examples/verify-signature.tsβ verify the Ed25519 signature of a paid response offline (~$0.001).examples/smoke-test.tsβ pay and call every one of the 42 paid endpoints once (~$6.85 total, USDC and/or EURC; the watchlist it creates is stopped again for free).examples/agent-demo.tsβ a small autonomous agent that searches, pays and reads profiles.examples/mcp-setup.mdβ MCP configuration for Claude, Cursor and generic clients.examples/a2a.tsβ call Sirenic as an A2A agent (quote for free, then pay on the same task via the a2a-x402 extension).tutorial-kyb-agent/β Build a KYB agent in 20 lines.n8n-nodes-sirenic/β n8n community node: seven operations (search, profile, KYB, sanctions, VAT, European company, watchlist) paid per call from inside a workflow. The credential holds a Base wallet, so spending caps are mandatory β per call and per workflow execution β the payment address is pinned, and a Dry Run mode shows the price without paying. Point the watchlist webhook at an n8n Webhook node and you have supplier monitoring in three nodes.
Test wallet setup
- Create a throwaway wallet (e.g. in MetaMask) and export its private key.
- Fund it with a couple of dollars of USDC on Base (any exchange can withdraw to Base network).
export TEST_WALLET_KEY=0x...β never commit it anywhere.
Sirenic settles on Base mainnet.
Disclaimer
Sirenic redistributes official open data as published (Etalab 2.0 and other open licenses). It does not guarantee accuracy or completeness, and outputs (including sanctions screening and AI summaries) are decision aids β not legal, financial or compliance advice.
License: MIT.