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

smithery badge Listed on x402-list

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).

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)

EndpointPriceWhat you get
GET /v1/recherche?q=$0.001Search 30M French companies
GET /v1/entreprise/{siren}$0.005Full official French profile
GET /v1/entreprise/{siren}/etablissements$0.003All establishments (SIRET)
GET /v1/entreprise/{siren}/alertes$0.01BODACC legal alerts (insolvency…)
GET /v1/entreprise/{siren}/finances$0.01Filed financials + ratios
GET /v1/entreprise/{siren}/marches-publics$0.01Public procurement won (French DECP)
GET /v1/entreprise/{siren}/marches-publics-ue$0.02EU procurement awards (TED, identifier-matched)
GET /v1/entreprise/{siren}/risques-industriels$0.01Industrial risk: Seveso/ICPE facilities + synthesis
GET /v1/entreprise/{siren}/lobbying$0.01HATVP lobbying register (org-level: budgets, subjects, clients)
GET /v1/entreprise/{siren}/changements?depuis=$0.01New BODACC events since a date
GET /v1/entreprise/{siren}/pi$0.03Industrial property (trademarks, patents, designs)
GET /v1/entreprise/{siren}/comptes-pdf$2.00Accounts annexe notes, AI-extracted (structured)
GET /v1/entreprise/{siren}/capital$0.35Ownership from public articles, AI-extracted
GET /v1/entreprise/{siren}/liens-capitalistiques$2.00Single-level capital links between legal entities
GET /v1/entreprise/{siren}/sante$0.15AI health summary (7-day cache)
GET /v1/score/defaillance/{siren}$0.10Failure-risk score (deterministic)
GET /v1/secteur/{code_naf}/benchmarks$0.05Sector aggregates (k-anonymised)
GET /v1/kyb/{siren}$0.15Full KYB file + sanctions screening
GET /v1/kyb/batch?sirens=$0.105/coBatch KYB (2–100 companies)
GET /v1/sanctions/check?name=$0.026 official sanctions lists (UN, EU, OFAC, UK, FR, Swiss SECO), scored
GET /v1/regulateurs/fr/alertes?nom=|siren=$0.01AMF blacklists + PSAN/SGP registers (scam check, crypto providers)
GET /v1/eu/agrements?q=$0.01EU financial authorisations (ESMA, all EU/EEA, by name or LEI)
GET /v1/entreprise/{siren}/agrements$0.02Regulatory 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.02Reverse director search
GET /v1/prospection?...$0.02/pageMulti-criteria prospecting
GET /v1/rapport/{siren}$0.50PDF report
GET /v1/intelligence/{siren}$1.00Intelligence report: every block cross-referenced β€” executive summary, officersΒ΄ network, filings, trends, closed-list signals, rule-based verdict
GET /v1/entreprise/{siren}/documents$0.02List filed documents (INPI)
GET /v1/documents/{type}/{id}$0.10Download a filed document (PDF)
GET /v1/tva/verifier/{numero}$0.003EU VAT validation (VIES)
GET /v1/facturation/dossier?siren=&iban=$0.03Invoicing pack: e-invoicing prep + live VIES + IBAN/bank check + a deterministic pret_a_facturer verdict
GET /v1/iban/verifier/{iban}$0.005IBAN check + bank identification (FR/BE/AT/NL, incl. LEI) β€” not a Verification of Payee
GET /v1/surveillance/creer?cibles=$0.05/target/30dWatchlist: daily checks on companies & directors, signed webhooks + e-mail digests
GET /v1/surveillance/{token}/renouveler$0.05/target/30dRenew a watchlist (grace: 7 days after expiry)
GET /v1/eu/recherche?q=$0.003Search European registers (BE, NO, EE, LV local; CZ, SK, FI live) + GLEIF
GET /v1/eu/entreprise/{pays}/{id}$0.01Unified European profile β€” 11 countries (BE incl. NACEBEL activities & establishments; CZ, SK, FI, PL live)
GET /v1/eu/entreprise/BE/{id}/comptes$0.01Belgian filings list (official NBB Central Balance Sheet Office)
GET /v1/eu/entreprise/BE/{id}/comptes/{ref}$0.15One Belgian annual-account deposit (JSON since 2022, PDF before)
GET /v1/eu/entreprise/BE/{id}/transactions-dirigeants$0.02Insider 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

  1. Create a throwaway wallet (e.g. in MetaMask) and export its private key.
  2. Fund it with a couple of dollars of USDC on Base (any exchange can withdraw to Base network).
  3. 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.