Skip to content
Back to fr-legal-kit

Card snapshot

fr-legal-kit.monnet-yanis1.workers.dev · 2026-09-07 14:07:24 UTC · f6ee0378a3b459e909eda03fed919642eb286335a834ea2d72a993eda815631d

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "protocolVersion": "0.3.0",
  "name": "fr-legal-kit",
  "description": "French legal kit for agents: e-invoice obligation calendar (Sep 2026 reform), L441-10 penalties, SIRET/IBAN checksums. Paid x402 USDC on Base.",
  "url": "https://fr-legal-kit.monnet-yanis1.workers.dev/a2a",
  "version": "1.0.0",
  "provider": {
    "organization": "Yanis Monnet EI",
    "url": "https://fr-legal-kit.monnet-yanis1.workers.dev"
  },
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "id": "late-penalties",
      "name": "/v1/late-penalties",
      "description": "French L441-10 late-payment: BCE MRO+10pts interest + 40\u20ac indemnity (D.441-5) from amount_ttc and days_late. Default MRO 2.40% (H2 2026, ECB). No live BCE fetch.",
      "tags": [
        "france",
        "invoice",
        "L441-10",
        "penalties",
        "legal"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "einvoice-who",
      "name": "/v1/einvoice-who",
      "description": "French e-invoice calendar: who must receive (2026-09-01 all) vs emit (GE/ETI 2026, PME/micro 2027). Size in, dates out. No registry lookup.",
      "tags": [
        "france",
        "e-invoice",
        "facture-electronique",
        "pdp",
        "2026"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "check-siret",
      "name": "/v1/check-siret",
      "description": "SIRET/SIREN checksum (Luhn / La Poste). Does not call INSEE.",
      "tags": [
        "france",
        "siret",
        "luhn",
        "checksum"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "check-iban",
      "name": "/v1/check-iban",
      "description": "IBAN ISO 13616 checksum. Does not prove the account exists.",
      "tags": [
        "iban",
        "checksum",
        "payments"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "due-date",
      "name": "/v1/due-date",
      "description": "French invoice due date: invoice_date + net_days (calendar). Also next_open_day skipping weekends + L.3133-1 holidays 2026\u20132027. No live calendar fetch.",
      "tags": [
        "france",
        "invoice",
        "due-date",
        "jours-feries"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "tva-rate",
      "name": "/v1/tva-rate",
      "description": "Indicative FR VAT rate table: standard 20 / intermediate 10 / reduced 5.5 / super_reduced 2.1 / exempt. Not a tax ruling.",
      "tags": [
        "france",
        "tva",
        "vat",
        "cgi"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "holidays",
      "name": "/v1/holidays",
      "description": "French metropolitan public holidays for 2026 or 2027 (C. trav. L.3133-1). Optional Alsace-Moselle extras. No live fetch.",
      "tags": [
        "france",
        "jours-feries",
        "calendar",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "payment-term-max",
      "name": "/v1/payment-term-max",
      "description": "Statutory ceiling on agreed FR B2B payment terms: 60 days after invoice issue, or 45 days end-of-month if stipulated (L441-10 I). Not a recommended term.",
      "tags": [
        "france",
        "invoice",
        "L441-10",
        "payment-terms"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "mention-fields",
      "name": "/v1/mention-fields",
      "description": "Checklist of French invoice/quote legal mention fields (L441-9, L441-10, 293 B). JSON in, list of required ids out. No lookup.",
      "tags": [
        "france",
        "invoice",
        "mentions",
        "293B",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "vat-key",
      "name": "/v1/vat-key",
      "description": "French intra-community VAT identifier from SIREN: FR + 2-digit key + SIREN. Key = (12 + 3*(siren%97))%97 (CGI 286 ter). Not a VIES proof.",
      "tags": [
        "france",
        "tva",
        "vat",
        "siren",
        "286ter"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "penalty-text",
      "name": "/v1/penalty-text",
      "description": "Statutory L441-10 / D.441-5 invoice mention strings (rate BCE MRO+10 pts + 40 \u20ac indemnity). No amount required. Default MRO 2.40% H2 2026.",
      "tags": [
        "france",
        "invoice",
        "L441-10",
        "mentions",
        "penalties"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "franchise-293b",
      "name": "/v1/franchise-293b",
      "description": "CGI 293 B franchise-en-base 2026 thresholds (services 37 500/41 250, goods 85 000/93 500) plus the statutory invoice mention. 25 000 \u20ac unique threshold was abandoned. Not a tax ruling.",
      "tags": [
        "france",
        "tva",
        "293B",
        "franchise",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "dunning-steps",
      "name": "/v1/dunning-steps",
      "description": "Suggested FR B2B dunning calendar after the due date (J+1 / J+8 / J+15). L441-10 penalties accrue without a reminder. Usage, not a statutory timetable.",
      "tags": [
        "france",
        "invoice",
        "dunning",
        "relance",
        "L441-10"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "open-days",
      "name": "/v1/open-days",
      "description": "Inclusive count of French metropolitan open days between two dates (skip Sat/Sun + L.3133-1 holidays 2026\u20132027). Optional Alsace-Moselle extras.",
      "tags": [
        "france",
        "calendar",
        "jours-ouvres",
        "jours-feries"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "invoice-numbering",
      "name": "/v1/invoice-numbering",
      "description": "French invoice numbering helper (C. com. L441-9): unique chronological sequence, no gaps. Returns next number from last_number plus the statutory rules.",
      "tags": [
        "france",
        "invoice",
        "L441-9",
        "numbering"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "amount-words",
      "name": "/v1/amount-words",
      "description": "French amount in words for invoices (douze euros et quarante centimes). Traditional hyphenation. Not a statutory mention.",
      "tags": [
        "france",
        "invoice",
        "montant",
        "lettres"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "alsace-holidays",
      "name": "/v1/alsace-holidays",
      "description": "Alsace-Moselle extra public holidays (Good Friday + St Stephen) plus the combined 2026\u20132027 calendar. In addition to L.3133-1 metropolitan days.",
      "tags": [
        "france",
        "alsace",
        "moselle",
        "jours-feries",
        "calendar"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "due-date-eom",
      "name": "/v1/due-date-eom",
      "description": "French 45-days-end-of-month due date (L441-10 I derogation). Statutory reading: 45 days after month-end of the invoice. Alternate usage: +45 then EOM. Must be stipulated.",
      "tags": [
        "france",
        "invoice",
        "L441-10",
        "due-date",
        "fin-de-mois"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "ht-ttc",
      "name": "/v1/ht-ttc",
      "description": "French HT \u2194 TTC using CGI indicative rates (20 / 10 / 5.5 / 2.1 / 0). Pass exactly one of amount_ht or amount_ttc. Not a tax ruling.",
      "tags": [
        "france",
        "tva",
        "invoice",
        "ht",
        "ttc"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "days-late",
      "name": "/v1/days-late",
      "description": "Calendar days late from due_date to as_of (L441-10 periods are calendar). Also accepts invoice_date + net_days. Feed days_late into /v1/late-penalties.",
      "tags": [
        "france",
        "invoice",
        "L441-10",
        "late",
        "calendar"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "siren-from-siret",
      "name": "/v1/siren-from-siret",
      "description": "Split a French SIRET into SIREN + NIC, checksum both (Luhn / La Poste), and compute the CGI 286 ter VAT key. No INSEE lookup.",
      "tags": [
        "france",
        "siret",
        "siren",
        "vat",
        "checksum"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "quote-validity",
      "name": "/v1/quote-validity",
      "description": "French quote (devis) validity calendar. Default 30 days from quote_date. Commercial usage, not L441-9. Returns expiry and a collable mention.",
      "tags": [
        "france",
        "devis",
        "quote",
        "validity"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "ape-naf",
      "name": "/v1/ape-naf",
      "description": "French APE/NAF rev.2 format check: 4 digits + 1 letter (62.01Z). No INSEE lookup of the label.",
      "tags": [
        "france",
        "ape",
        "naf",
        "invoice",
        "checksum"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "postcode-fr",
      "name": "/v1/postcode-fr",
      "description": "French 5-digit postcode: department prefix (Corsica 2A/2B, overseas 97x). No address lookup. Flags Alsace-Moselle 57/67/68.",
      "tags": [
        "france",
        "postcode",
        "invoice",
        "address"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "legal-form",
      "name": "/v1/legal-form",
      "description": "Extra French invoice mentions by legal form (EI/micro vs SARL/SAS/SA/SCI): EI quality, 293 B, capital, RCS. On top of /v1/mention-fields.",
      "tags": [
        "france",
        "invoice",
        "mentions",
        "ei",
        "sas",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "iban-fr",
      "name": "/v1/iban-fr",
      "description": "French IBAN structure: 27 chars, bank/branch/account/RIB key, plus ISO 13616 checksum. Does not prove the account exists.",
      "tags": [
        "france",
        "iban",
        "payments",
        "rib"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "credit-note",
      "name": "/v1/credit-note",
      "description": "French credit note (avoir): next number in a dedicated AV- sequence, collable CGI 289 mention referencing the original invoice, optional HT/TTC reversal. Does not reuse the cancelled invoice number (L441-9).",
      "tags": [
        "france",
        "invoice",
        "avoir",
        "credit-note",
        "L441-9",
        "CGI-289"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "phone-fr",
      "name": "/v1/phone-fr",
      "description": "French phone format (ARCEP numbering plan): 10-digit national or +33/0033 \u2192 E.164, grouped mention, kind mobile/geo/voip/overseas. No subscriber lookup.",
      "tags": [
        "france",
        "phone",
        "invoice",
        "e164",
        "arcep"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "capital-social",
      "name": "/v1/capital-social",
      "description": "French share-capital invoice mention for soci\u00e9t\u00e9s (SAS/SARL/SA/SCI): 'au capital de 1 000,00 \u20ac', optional variable capital. EI/micro have no capital. Format only, not a Kbis.",
      "tags": [
        "france",
        "invoice",
        "capital",
        "sas",
        "sarl",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "rcs-mention",
      "name": "/v1/rcs-mention",
      "description": "French RCS invoice mention: 'RCS Pau 404 833 048' from greffe city + SIREN/SIRET. Format only, not a Kbis lookup.",
      "tags": [
        "france",
        "invoice",
        "rcs",
        "greffe",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "invoice-currency",
      "name": "/v1/invoice-currency",
      "description": "French invoice currency: EUR is legal tender. Foreign ISO 4217 (USD/GBP/CHF/CAD/JPY) allowed; VAT is expressed in euros. Offline subset, no FX rate.",
      "tags": [
        "france",
        "invoice",
        "currency",
        "eur",
        "tva"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "escompte",
      "name": "/v1/escompte",
      "description": "French invoice early-payment discount mention (L441-9 / L441-10): collable 'Pas d'escompte pour paiement anticip\u00e9.' or 'Escompte de X % pour paiement sous N jours.'",
      "tags": [
        "france",
        "invoice",
        "escompte",
        "L441-10",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "acompte",
      "name": "/v1/acompte",
      "description": "French down-payment (acompte) invoice: next AC- number, 30% default or explicit %, remaining TTC, collable CGI 289 mention. Own L441-9 sequence.",
      "tags": [
        "france",
        "invoice",
        "acompte",
        "L441-9",
        "CGI-289"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "date-fr",
      "name": "/v1/date-fr",
      "description": "French invoice date format: YYYY-MM-DD \u2192 JJ/MM/AAAA, weekday, long form, collable 'Date de facture : \u2026'. L441-9 emission date.",
      "tags": [
        "france",
        "invoice",
        "date",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "payment-means",
      "name": "/v1/payment-means",
      "description": "French invoice means-of-payment mention (L441-9): virement, ch\u00e8que, CB, esp\u00e8ces, pr\u00e9l\u00e8vement, LCR. Default virement. Collable string.",
      "tags": [
        "france",
        "invoice",
        "payment",
        "virement",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "interest-start",
      "name": "/v1/interest-start",
      "description": "L441-10: calendar day late-payment interest starts (the day after the due date), without a reminder. Accepts due_date or invoice_date + net_days.",
      "tags": [
        "france",
        "invoice",
        "L441-10",
        "penalties",
        "due-date"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "siege-social",
      "name": "/v1/siege-social",
      "description": "French si\u00e8ge social invoice mention (L441-9): street + postcode + city, department prefix, Alsace-Moselle flag. Format only, not a Kbis.",
      "tags": [
        "france",
        "invoice",
        "adresse",
        "siege",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "net-a-payer",
      "name": "/v1/net-a-payer",
      "description": "French invoice footer: HT / VAT / TTC plus collable 'Net \u00e0 payer : 1 200,00 \u20ac'. Same CGI rates as /v1/ht-ttc. Pass exactly one of amount_ht or amount_ttc.",
      "tags": [
        "france",
        "invoice",
        "tva",
        "ttc",
        "net-a-payer"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "doc-title",
      "name": "/v1/doc-title",
      "description": "CGI 289 document title: Facture, Avoir, Facture d'acompte, Note d'honoraires (still an invoice), or Devis (not L441-9). Optional number \u2192 'Facture n\u00b0 \u2026'.",
      "tags": [
        "france",
        "invoice",
        "cgi-289",
        "honoraires",
        "devis"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "autoliquidation",
      "name": "/v1/autoliquidation",
      "description": "French reverse-charge VAT mention (autoliquidation): intra-EU CGI 283, construction 283-2 nonies, or import. Invoice shows HT; VAT due by the customer.",
      "tags": [
        "france",
        "tva",
        "autoliquidation",
        "cgi-283",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "eori",
      "name": "/v1/eori",
      "description": "French EORI format: FR + SIREN (legal entity). From a SIRET also returns FR+SIRET establishment form. Format only, no customs lookup.",
      "tags": [
        "france",
        "eori",
        "customs",
        "siren",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "duplicata",
      "name": "/v1/duplicata",
      "description": "French invoice duplicata: same original number stamped DUPLICATA. Not a new L441-9 number and not a credit note. Collable 'Ne pas comptabiliser une seconde fois.'",
      "tags": [
        "france",
        "invoice",
        "duplicata",
        "L441-9",
        "CGI-289"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "rm-mention",
      "name": "/v1/rm-mention",
      "description": "French artisan RM invoice mention: 'RM Pau 404 833 048' from city + SIREN/SIRET. Format only. RNE replaced RM for new filings in 2023; invoice usage still shows RM.",
      "tags": [
        "france",
        "invoice",
        "rm",
        "artisan",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "buyer",
      "name": "/v1/buyer",
      "description": "French invoice buyer identification (L441-9): client name + optional SIRET/SIREN + city. B2C may omit SIRET. Format only.",
      "tags": [
        "france",
        "invoice",
        "client",
        "siret",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "unit",
      "name": "/v1/unit",
      "description": "French invoice line unit of measure (L441-9): heure, jour, mois, forfait, unit\u00e9, kg, m\u00b2. Optional qty with plural. Format only.",
      "tags": [
        "france",
        "invoice",
        "unite",
        "quantite",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "cgv",
      "name": "/v1/cgv",
      "description": "French CGV invoice mention (C. com. L441-6): 'Nos conditions g\u00e9n\u00e9rales de vente s'appliquent.' Optional URL. A mention does not replace prior communication to the professional buyer.",
      "tags": [
        "france",
        "invoice",
        "cgv",
        "L441-6"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "reserve-propriete",
      "name": "/v1/reserve-propriete",
      "description": "French retention-of-title invoice clause (C. com. L.624-16): goods remain the seller's until full payment. Not for pure services.",
      "tags": [
        "france",
        "invoice",
        "reserve-propriete",
        "L624-16"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "garantie-legale",
      "name": "/v1/garantie-legale",
      "description": "French legal warranty of conformity (C. conso L.217-3): 2 years from delivery for consumer goods. Does not apply to professional buyers. Optional delivery_date \u2192 expiry.",
      "tags": [
        "france",
        "conso",
        "garantie",
        "L217-3",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "mediateur",
      "name": "/v1/mediateur",
      "description": "French consumer mediator mention (C. conso L.612-1). Required for B2C. Pass name + url of the designated mediator. Does not apply to professional buyers.",
      "tags": [
        "france",
        "conso",
        "mediateur",
        "L612-1",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "delivery",
      "name": "/v1/delivery",
      "description": "French invoice date of supply (CGI 289 / 242 nonies A): delivery or service execution vs invoice date. Distinct dates get an explicit mention.",
      "tags": [
        "france",
        "invoice",
        "livraison",
        "CGI289",
        "242-nonies-A"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "line",
      "name": "/v1/line",
      "description": "French invoice line (L441-9): designation + optional quantity/unit + unit price HT. Format only, no line-total math.",
      "tags": [
        "france",
        "invoice",
        "line",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "page",
      "name": "/v1/page",
      "description": "French multi-page invoice footer: Page X/Y. Sequential pages of one invoice (L441-9 numbering is the invoice number, not the page).",
      "tags": [
        "france",
        "invoice",
        "page",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "retractation",
      "name": "/v1/retractation",
      "description": "French 14-day consumer withdrawal (C. conso L.221-18 / L.221-19). Services: from contract date. Goods: from delivery. Does not apply to professional buyers.",
      "tags": [
        "france",
        "conso",
        "retractation",
        "L221-18",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "conservation",
      "name": "/v1/conservation",
      "description": "French invoice retention: 10 years commercial (C. com. L123-22) and 6 years tax (LPF L102 B) from the invoice date.",
      "tags": [
        "france",
        "invoice",
        "conservation",
        "L123-22",
        "archive"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "prescription",
      "name": "/v1/prescription",
      "description": "French limitation period for an unpaid invoice: 5 years B2B (C. com. L110-4) or 2 years against a consumer (C. conso L.218-2), from the due date.",
      "tags": [
        "france",
        "invoice",
        "prescription",
        "L110-4",
        "L218-2"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "garantie-commerciale",
      "name": "/v1/garantie-commerciale",
      "description": "French commercial warranty mention (C. conso L.217-21), distinct from the 2-year legal warranty. Optional months + delivery_date \u2192 expiry.",
      "tags": [
        "france",
        "conso",
        "garantie",
        "L217-21",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "export",
      "name": "/v1/export",
      "description": "French VAT exemption mention: extra-EU export CGI 262 I, or intra-EU supply CGI 262 ter I. Distinct from reverse-charge /v1/autoliquidation.",
      "tags": [
        "france",
        "tva",
        "export",
        "CGI262",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "proforma",
      "name": "/v1/proforma",
      "description": "French pro forma header: this document is not an invoice (CGI 289). Optional number.",
      "tags": [
        "france",
        "invoice",
        "proforma",
        "CGI289"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "jours-francs",
      "name": "/v1/jours-francs",
      "description": "French jours francs (C. proc. civ. 642): start day excluded; Saturday/Sunday/holiday rolls to the next open day. M\u00e9tropole holidays 2026\u20132027.",
      "tags": [
        "france",
        "delai",
        "francs",
        "CPC642",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "clause-penale",
      "name": "/v1/clause-penale",
      "description": "French contractual penalty clause (C. civ. 1231-5). Optional amount. Distinct from statutory L441-10 late-payment.",
      "tags": [
        "france",
        "contrat",
        "penale",
        "1231-5",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "periode",
      "name": "/v1/periode",
      "description": "French invoice billing period for continuous services (CGI 289): from + to dates as a collable mention.",
      "tags": [
        "france",
        "invoice",
        "periode",
        "CGI289"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "autofacturation",
      "name": "/v1/autofacturation",
      "description": "French self-billing stamp (CGI 289): the word Autofacturation on each invoice. Optional seller name. Prior agreement is the buyer's problem.",
      "tags": [
        "france",
        "invoice",
        "autofacturation",
        "CGI289"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "rgpd",
      "name": "/v1/rgpd",
      "description": "French invoice personal-data footer: RGPD art. 6.1.b/c legal bases + 10-year keep (C. com. L123-22). Optional controller name.",
      "tags": [
        "france",
        "rgpd",
        "invoice",
        "privacy"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "langue",
      "name": "/v1/langue",
      "description": "French invoice language mention: Toubon 94-665 for B2C in France; B2B defaults to French for tax control.",
      "tags": [
        "france",
        "langue",
        "toubon",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "commande",
      "name": "/v1/commande",
      "description": "French invoice purchase-order reference (number + optional date). Usage for identifying the operation (L441-9).",
      "tags": [
        "france",
        "invoice",
        "commande",
        "L441-9"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "debours",
      "name": "/v1/debours",
      "description": "French disbursements (d\u00e9bours): paid in the client's name, out of the VAT base (CGI 267). Optional amount + label.",
      "tags": [
        "france",
        "tva",
        "debours",
        "CGI267",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "arrhes",
      "name": "/v1/arrhes",
      "description": "French arrhes (C. civ. 1590), distinct from acompte: buyer forfeits, seller returns double. Requires amount_eur.",
      "tags": [
        "france",
        "contrat",
        "arrhes",
        "1590",
        "invoice"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "prorata",
      "name": "/v1/prorata",
      "description": "Calendar prorata of a monthly HT amount over an inclusive from/to window (days / days in the start month).",
      "tags": [
        "france",
        "invoice",
        "prorata",
        "calendar"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ]
}