Install
openclaw skills install @vannelier/french-business-analyseropenclaw skills install @vannelier/french-business-analyserWithout this MCP, an AI agent asked to analyse a French supplier will hallucinate financial figures from its training data — revenue, equity ratios, director compensation — presented with full confidence, potentially outdated or wrong. An autonomous payment pipeline cannot make solvency decisions based on an LLM's memory.
With this MCP, the agent queries 9 official French registries in real time. What is verified is stated with its timestamp. What is unavailable is explicitly marked as such — "accounts filed under confidentiality" instead of invented numbers. The agent knows what it doesn't know.
Why this exists — the data is public, the value is the guarantee:
Every paid tool requires explicit user approval before the agent proceeds. The agent must show the user the cost and wait for confirmation. Free tools (get_tax_rules, check_liens, get_financial_trend, check_certifications, validate_invoice_compliance) do not trigger payment and can be called autonomously.
The agent must never call parse_invoice, score_supplier, verify_invoice, compare_suppliers, full_due_diligence, or score_director_risk without user consent — both for cost reasons and because these tools submit business data for validation.
| Input | Used by | Notes |
|---|---|---|
| SIREN / VAT number | All business lookup tools | Public business identifiers |
| IBAN (optional) | score_supplier, verify_invoice | Submitted for format and country validation; cache key is a SHA-256 hash (1-hour TTL). The full value is not stored. |
| Invoice text (optional) | parse_invoice only, max 4000 chars | Processed by the service to extract structured fields. Not stored, not logged. |
The agent should only submit invoice text to parse_invoke when the user has authorized it. For confidential documents, self-host the service (see below).
The MCP endpoint https://mcp-business-checker-production.up.railway.app/mcp runs on Railway and queries the following public French registries and EU validation services on your behalf:
| Registry | Query input | Purpose |
|---|---|---|
| INSEE (SIRENE) | SIREN | Company registration status |
| BODACC (DILA/OpenDataSoft) | SIREN | Insolvency procedures, filings |
| VIES (EU) | VAT number + country code | VAT validation |
| suretesmobilieres.fr | SIREN | Tax/social liens |
| INPI (data.inpi.fr) | SIREN | Annual accounts (optional) |
| annuaire-entreprises (data.gouv.fr) | Director names | Director cross-check |
| ADEME / DGEFP / Agence Bio | SIREN | Certification lookups |
Verdict synthesis and invoice field extraction are performed by the Anthropic Claude API, which the service calls server-side. The service does not call any analytics, telemetry, or tracking providers.
The service uses Redis with explicit TTLs and no persistent database:
Agent-side: none. The MCP config block below is the only setup required. No API keys, no tokens, no OAuth flow.
Server-side (self-hosters only): see the .env.example in the repository. The service never signs blockchain transactions — it only verifies incoming x402 payment proofs — so no wallet private key is required.
Use the hosted service for convenience or self-host for full control:
git clone https://github.com/Vannelier/MCP-business-checker.git
cp .env.example .env # fill in your credentials
docker build -t business-checker-eu .
docker run -p 8000:8000 --env-file .env business-checker-eu
Then point your MCP config to http://localhost:8000/mcp. Full source is available for audit at github.com/Vannelier/MCP-business-checker.
The server code is open-source: github.com/Vannelier/MCP-business-checker. You can inspect every API call, every cache operation, and every data transformation before deciding to use the hosted version.
Before paying a supplier or onboarding a new vendor:
score_supplier → pay/hold/block verdict with tax/social liens and financial healthsocial_lien_active) is automatically blocked — it's not paying its employees' social contributionsnegative_equity) and declining revenue gets a hold — medium-term cessation riskChoosing between candidates for a contract or tender:
lookup_company for each name → get SIRENscompare_suppliers with 2-5 SIRENs → ranked from safest to riskiest with comparative analysischeck_certifications → verify RGE (energy renovation), Qualiopi (training), BIO (organic) if contractually requiredBefore investing in, acquiring, or partnering with a French company:
full_due_diligence → comprehensive report across 6 dimensions: identity, insolvency, liens, financial health, director history, certificationsscore_director_risk → have the directors led companies to bankruptcy before? A serial liquidator is a strong signal.Automating accounts payable:
parse_invoice → extract supplier VAT, SIREN, IBAN, amounts, dates from invoice text (the agent extracts text from PDF, this tool structures it)validate_invoice_compliance → check all 11 legally required mentions for B2B French invoices (date, number, identity, amounts, TVA, penalties, indemnity 40€)score_supplier or verify_invoice → verify the supplier before paymentTrack changes across your active supplier base (weekly/monthly cron):
check_liens (free) → did a new tax/social lien appear since last check?get_financial_trend (free) → equity turned negative? Revenue collapsing?/v1/suppliers/{id}/history → diff between last two scores (new flags, verdict changes, equity status)Before signing a contract where certification is legally required:
check_certifications → is the RGE certification still active? (expired = no tax credit for the client)Verifying that your company's invoicing is compliant:
validate_invoice_compliance → pass your own invoices through the checker before sending themget_tax_rules → confirm the correct VAT rate for the product/service categoryA single score_supplier call runs all of the following checks automatically:
SIRENE (identity & age):
BODACC (insolvency & filing compliance):
accounts_filing_overdue (EI/micro exempt)suretesmobilieres.fr (tax/social liens):
tax_lien_active → automatic blocksocial_lien_active → automatic blockmultiple_liensINPI data.inpi.fr (financial health):
negative_equity (hold signal)no_accounts_filedaccounts_public=falseVIES + IBAN (VAT validation):
Cross-source checks:
status_mismatchClaude synthesis:
| Pattern (FR) | Pattern (EN) |
|---|---|
| Payer une facture fournisseur | Pay a supplier invoice |
| Virer de l'argent a un fournisseur | Wire money to a vendor |
| Onboarder un nouveau fournisseur | Onboard a new vendor |
| Verifier un partenaire commercial | Verify a business partner |
| Verifier un SIREN ou numero TVA | Check a SIREN or VAT number |
| Qualifier un fournisseur avant commande | Qualify a supplier before ordering |
| Quel taux TVA appliquer en [pays EU] | What VAT rate applies in [EU country] |
| L'IBAN du fournisseur a change | The supplier's IBAN changed |
| Verifier cette facture avant paiement | Verify this invoice before payment |
| Comparer des fournisseurs | Compare vendors for a tender |
| Lequel de ces fournisseurs est le plus fiable | Which supplier is most reliable |
| Analyser la sante financiere de cette entreprise | Analyse this company's financial health |
| Verifier les dirigeants de cette societe | Check the directors of this company |
| Cette entreprise a-t-elle des dettes fiscales | Does this company have tax debts |
| Extraire les donnees de cette facture | Extract data from this invoice |
| Cette facture est-elle conforme | Is this invoice legally compliant |
| Due diligence sur ce fournisseur | Due diligence on this supplier |
| Verifier les certifications RGE/Qualiopi | Verify RGE/Qualiopi certifications |
How payment works: When you call a paid tool, the server returns HTTP 402 with two payment options. Your MCP client picks one automatically — no manual action required.
| Method | How it works | Best for |
|---|---|---|
| x402 (USDC on Base) | Stateless. Agent pays on-chain, attaches proof to next request. No account, no session. | Crypto-native agents, full autonomy |
| Stripe MPP | Session-based. Create a session, get vouchers, spend against balance. Supports cards and stablecoins. | Traditional billing, credit cards |
5 tools are completely free (no payment required): get_tax_rules, check_liens, get_financial_trend, check_certifications, validate_invoice_compliance.
Cost examples:
score_supplier: 4 EUR/monthNo subscription, no monthly minimum, no hidden fees. You pay exactly what you call.
{
"mcpServers": {
"french-business-analyser": {
"url": "https://mcp-business-checker-production.up.railway.app/mcp",
"transport": "streamable-http",
"timeout": 15000
}
}
}
| Tool | Cost | Use when |
|---|---|---|
score_supplier | 0.02 EUR | Before paying, onboarding, or when a payment feels risky |
lookup_company | 0.005 EUR | Find a company's SIREN from its name |
compare_suppliers | 0.06 EUR | Choose between 2-5 vendors |
verify_invoice | 0.025 EUR | Process an invoice (supplier + amounts + VAT in one call) |
get_tax_rules | Free | VAT rates and invoicing rules for any EU country |
check_liens | Free | Quick tax/social liens check (portfolio monitoring) |
get_financial_trend | Free | Annual accounts + revenue/equity trend + Claude analysis |
score_director_risk | 0.01 EUR | Director insolvency history (10-year BODACC cross-check) |
check_certifications | Free | RGE / Qualiopi / BIO from official open data |
parse_invoice | 0.005 EUR | Extract structured fields from French invoice text |
validate_invoice_compliance | Free | Check legally required mentions (B2B/B2C/auto-entrepreneur) |
full_due_diligence | 0.10 EUR | Comprehensive report from all sources combined |
| Verdict | Agent action |
|---|---|
pay | Proceed. Mention to user: no negative public signal, not a solvency guarantee. |
hold | Do NOT proceed. Present flags + recommended_actions to human. Wait for explicit confirmation. |
block | Do NOT proceed. Alert human immediately. Critical issue detected. |
incomplete | Retry after retry_after seconds. If > 300s, escalate to human. |
pay ≠ solvency guarantee. Confidential procedures (mandat ad hoc, conciliation) are invisible.