Créer avec l'IA
Flowie Exchange est conçu pour être piloté par l'IA. Pointez Claude Desktop, Claude Code, Cursor, n8n ou votre propre agent vers l'API et il peut émettre, recevoir et gérer des factures électroniques Peppol comme des appels d'outils natifs — sans code de liaison, sans wrapper sur mesure. Cette page est le hub de toutes les surfaces IA : les serveurs MCP, les docs prêtes pour les agents et l'onboarding d'agents en self-service.
Authorization préservé — donc JWT, clés flw_*, cloisonnement par locataire, limites de débit et simulateurs du sandbox fonctionnent à l'identique.
Outils IA
Trois façons de mettre Flowie Exchange devant un agent. La plupart des intégrations commencent par le serveur MCP.
Serveur MCP →
Connectez Claude Desktop, Claude Code, Cursor ou un agent Python personnalisé via le Model Context Protocol et appelez l'API comme des outils natifs.
Docs pour agents →
Des docs exploitables par machine — llms.txt comme index de pages rapide, llms-full.txt comme corpus entier, plus une tranche Markdown par endpoint.
Onboarding d'agents →
Laissez un agent se provisionner : bootstrap sandbox sans friction (aucun humain dans la boucle) ou consentement de style OAuth avec PKCE pour les octrois de portée en production.
Serveur MCP
Flowie publie deux serveurs Model Context Protocol, chacun en production et en staging. Connectez-en un à Claude, ChatGPT, Cursor, VS Code ou Claude Code et connectez-vous avec votre identifiant Flowie habituel (SSO et Google compris) : aucune clé d'API, rien à demander à Flowie au préalable.
https://docs.get-flowie.com/mcp.md (en anglais).
Quel serveur choisir ?
- App (
/agent-hub/mcp) — ce que veulent la plupart des gens : utiliser l'application Flowie via un LLM (Claude, ChatGPT, Cursor…). Demandes d'achat, approbations, tâches, budgets, flows, formulaires, partenaires, paiements, documents. Il agit comme l'utilisateur connecté, avec exactement ses droits. Connexion uniquement. - API Exchange (
/exchange/mcp) — pour les intégrations : un système qui parle à Flowie (ERP, scripts, backends, pipelines automatisés). Émettre, recevoir, valider et suivre des factures électroniques, entreprises, partenaires, annuaire. En général avec une clé d'API ; la connexion fonctionne aussi.
Vous pouvez enregistrer les deux dans le même client. Ils ne partagent pas d'identifiants : une clé d'API ne fonctionne que sur le serveur API Exchange, et le serveur App n'accepte qu'une connexion. back.p2p-flowie.com est la production ; back.flowie.ink est le staging.
Le volume tranche aussi. Le serveur App travaille au rythme d'une personne : 60 requêtes par minute et par utilisateur, un objet par appel ; au-delà, le 429 désigne ce serveur comme issue. Le serveur API Exchange porte le volume : le budget d'une clé d'API va de 120 à 2 400 requêtes par minute selon l'offre (voir Limites de débit & quotas), send_documents_batch envoie plusieurs documents en un appel, et les instructions de chaque serveur nomment l'autre : un agent connecté au mauvais sait où aller.
Créer un document tient en un appel sur l'un comme sur l'autre, avec le même vocabulaire. Sur le serveur API Exchange, send_document avec type, from, to et un document portant number, issueDate, currency et lines (description, quantity, unitPrice, vatRate en pourcentage) crée le document, calcule ses totaux et l'envoie ; une Idempotency-Key rend la relance sûre (référence). Sur le serveur App, create_transaction_document avec documentType, number, issuedAt, l'autre partie (buyerId quand vous vendez, sellerId quand vous achetez) et lineItems (quantity, unitPrice, taxRate en pourcentage) le crée dans l'application Flowie, totaux calculés, sans l'envoyer nulle part.
Endpoints
| Serveur | Ce qu'il expose | Authentification | Production | Sandbox / staging |
|---|---|---|---|---|
| App — celui que veulent la plupart des gens | L'application Flowie sous forme d'outils : ce que peut faire l'agent IA intégré à Flowie, en agissant comme l'utilisateur connecté | Connexion uniquement — aucune clé d'API | https://back.p2p-flowie.com/agent-hub/mcp |
https://back.flowie.ink/agent-hub/mcp |
| API Exchange — pour les intégrations | Chaque opération documentée de l'API Exchange (facturation électronique, entreprises, partenaires, annuaire) | Connexion, clé d'API flw_* ou JWT utilisateur |
https://back.p2p-flowie.com/exchange/mcp |
https://back.flowie.ink/exchange/mcp |
…/exchange/mcp/full fonctionne toujours : c'est un alias du serveur API Exchange, conservé pour que les configurations existantes continuent de marcher. Utilisez /exchange/mcp pour toute nouvelle installation.
Sur le serveur App, list_my_organizations liste les organisations auxquelles vous avez accès, chaque outil accepte un organization_id facultatif, et search_flowie_api / call_flowie_api atteignent toute autre opération de la plateforme. Le serveur API Exchange expose un outil par opération documentée. Aucun nombre d'outils n'est indiqué ici, volontairement : les ensembles suivent l'API. Votre client affiche l'ensemble réel, et tools/list le renvoie.
Le transport est Streamable HTTP. L'ancien transport SSE n'est plus monté.
Démarrage rapide — Claude Code
Production, serveur App :
claude mcp add --transport http flowie-app https://back.p2p-flowie.com/agent-hub/mcp
Lancez ensuite /mcp dans Claude Code, choisissez flowie-app puis Authenticate. Un navigateur s'ouvre sur la page de connexion Flowie. Pour ajouter aussi le serveur API Exchange :
claude mcp add --transport http flowie-api https://back.p2p-flowie.com/exchange/mcp
Par projet, versionnez plutôt un fichier .mcp.json :
{
"mcpServers": {
"flowie-app": {
"type": "http",
"url": "https://back.p2p-flowie.com/agent-hub/mcp"
}
}
}
Démarrage rapide — Claude.ai et Claude Desktop
Paramètres → Connecteurs → Ajouter un connecteur personnalisé, collez l'URL, puis Connecter et connectez-vous. Ni client ID, ni secret.
https://back.p2p-flowie.com/agent-hub/mcp
ChatGPT fonctionne de la même façon : ajoutez un connecteur personnalisé (mode développeur) avec cette URL et l'authentification OAuth.
Démarrage rapide — Cursor / VS Code
Cursor — ~/.cursor/mcp.json ou .cursor/mcp.json, puis cliquez sur Connect à côté du serveur :
{
"mcpServers": {
"flowie-app": {
"url": "https://back.p2p-flowie.com/agent-hub/mcp"
}
}
}
VS Code — .vscode/mcp.json. VS Code utilise "servers" et "type": "http" :
{
"servers": {
"flowie-app": {
"type": "http",
"url": "https://back.p2p-flowie.com/agent-hub/mcp"
}
}
}
Démarrage rapide — Amazon Quick
Amazon Quick (abonnement Enterprise) se connecte aux serveurs MCP distants et transforme chaque outil en action. Un administrateur ajoute Flowie une fois et le partage avec l'équipe :
- Dans la console Amazon Quick, ouvrez Connectors → Create for your team → Model Context Protocol (MCP).
- Name :
Flowie. MCP server endpoint :https://back.p2p-flowie.com/agent-hub/mcp. Connection type et Auth server connection type : Public network. - Choisissez User authentication (OAuth). Flowie prend en charge l'enregistrement dynamique des clients : Amazon Quick s'enregistre seul, laissez l'identifiant et le secret client vides.
- Create and continue, connectez-vous sur la page Flowie, vérifiez les actions, puis partagez le connecteur.
Chaque personne se connecte avec son propre compte Flowie : les actions s'exécutent avec ses droits. Ajoutez https://back.p2p-flowie.com/exchange/mcp de la même façon pour l'API Exchange. Amazon Quick conserve les 100 premiers outils d'un serveur : les deux serveurs listent d'abord leurs outils essentiels (envoyer et retrouver des factures, approbations, demandes d'achat et commandes, fournisseurs, budgets, et search_flowie_api / call_flowie_api pour tout le reste). Quand Flowie ajoute des outils, choisissez Sync sur le connecteur pour les récupérer.
Staging / sandbox
Mêmes commandes sur l'hôte de staging, avec un compte de staging :
claude mcp add --transport http flowie-app-staging https://back.flowie.ink/agent-hub/mcp
claude mcp add --transport http flowie-api-staging https://back.flowie.ink/exchange/mcp
Authentification
Deux façons d'entrer. Choisissez selon qui agit, pas selon le client utilisé.
| Méthode | À utiliser quand | Ce que vous configurez |
|---|---|---|
| Connexion (OAuth 2.1 + PKCE) | Une personne est derrière l'agent — Claude, ChatGPT, VS Code, Cursor, Claude Code, tout client interactif. Les deux serveurs. | Rien. Juste l'URL du serveur. Le client ouvre la page de connexion Flowie la première fois. |
Clé d'API (flw_live_… / flw_test_…) |
Personne n'est présent — un ERP, une CI, un cron, un service back-end. | Un en-tête Authorization: Bearer. Serveur API Exchange uniquement. |
La connexion suit le flux d'autorisation MCP standard. Un appel non authentifié renvoie 401 avec WWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource/mcp" ; ces métadonnées listent authorization_servers: ["https://<hôte>/exchange"], dont les métadonnées (<hôte>/exchange/.well-known/oauth-authorization-server) donnent l'endpoint d'autorisation <hôte>/exchange/oauth/authorize, l'endpoint de jeton <hôte>/exchange/v1/oauth/token et l'endpoint d'enregistrement <hôte>/exchange/v1/oauth/register. L'enregistrement dynamique de client est pris en charge (RFC 7591, client public, PKCE S256), et une redirection vers votre propre machine est acceptée sur n'importe quel port. La page de connexion est l'identifiant Flowie habituel : SSO et Google fonctionnent. Le jeton d'accès dure 24 heures et le client le renouvelle avec un jeton de rafraîchissement, sans nouveau consentement.
Le jeton est lié à votre compte Flowie : il atteint les organisations auxquelles vous avez accès, avec les droits que vous y détenez. Un agent ne peut rien faire que vous ne pourriez faire vous-même.
claude mcp add --transport http flowie-api https://back.p2p-flowie.com/exchange/mcp \
--header "Authorization: Bearer flw_live_..."
C'est la voie clé d'API (clé de production sur l'hôte de production ; une clé flw_test_… sur l'hôte de staging atteint tous les destinataires de test du guide du sandbox — en obtenir une en un clic). Détails complets : auth.md.
Démarrage rapide — Python (SDK mcp)
Pour les agents personnalisés, le SDK Python officiel mcp parle streamable-HTTP directement :
# pip install mcp
import asyncio, os
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
URL = "https://back.flowie.ink/exchange/mcp"
KEY = os.environ["FLOWIE_KEY"]
async def main():
async with streamablehttp_client(
URL, headers={"Authorization": f"Bearer {KEY}"}
) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
print(f"{len(tools.tools)} tools available")
# Appeler un outil par son nom avec des arguments de style REST
result = await session.call_tool(
"list_documents",
arguments={"direction": "incoming", "status": "unread", "limit": 5},
)
print(result.content[0].text)
asyncio.run(main())
Catalogue d'outils (serveur API Exchange)
Le serveur API Exchange expose un outil MCP par opération documentée. Les plus utiles pour les agents :
| Outil | Ce qu'il fait |
|---|---|
send_document | Envoyer une facture électronique / un avoir / une commande sur Peppol. |
list_documents | Filtrer par sens, statut, type, plage de dates. |
search_documents | Recherche plein texte + structurée sur tous les documents. |
get_document_structured | Vue plate, pensée pour les agents — chaque champ en type primitif. |
validate_document | Prévalider un payload avec les règles BIS / EN-16931. |
update_lifecycle | Approuver, refuser, marquer payée, contester. |
search_directory | Trouver des participants Peppol par nom, TVA ou pays. |
verify_recipient | Vérifier qu'un identifiant Peppol peut recevoir un type de document donné. |
resolve_company | Rechercher par TVA / SIREN — obtenir l'identifiant Peppol + le profil enrichi. |
create_company | Enregistrer un émetteur, avec publication automatique sur le SMP Peppol. |
get_compliance_report | Dernier statut de rapport PPF (FR) ou SDI (IT) pour un document. |
list_business_terms | Chaque terme métier EN 16931 avec son obligation française — ce que signifie un identifiant BT, et si la réforme l'exige. |
Lancez tools/list via MCP pour énumérer l'ensemble complet avec les schémas d'entrée et les descriptions. Le schéma d'entrée de chaque outil reflète le corps de requête de l'endpoint REST — voir la référence API pour la forme canonique.
Workflow courant — « Quelles factures sont arrivées cette semaine ? »
L'agent choisit les bons outils depuis le prompt ; vous ne faites rien.
User: "What invoices arrived this week and which ones are still unpaid?"
Agent → list_documents({direction: "incoming", since: "2026-04-26"})
→ for each: get_document_structured({documentId})
→ for each unpaid: get_compliance_report({documentId})
→ summarises totals by supplier, flags the ones past dueDate
Workflow courant — « Envoie une facture à ACME »
Trois outils, une seule chaîne. L'agent vérifie le destinataire avant d'envoyer.
User: "Bill ACME BVBA €4,500 + VAT for April consulting, due in 30 days."
Agent → search_directory({q: "ACME BVBA"}) # trouve le peppolId
→ verify_recipient({peppolId, documentType: "INVOICE"})
→ send_document({
type: "invoice",
from: "comp_abc123",
to: "0208:0123456789",
document: {
number: "INV-2026-0451",
issueDate: "2026-04-30",
dueDate: "2026-05-30",
currency: "EUR",
lines: [{
description: "Consulting — April 2026",
quantity: 1, unit: "lot",
unitPrice: 4500.00, vatRate: 21
}]
}
})
L'agent voit le documentId + le deliveryStatus renvoyés et vous en rend compte. Passez une Idempotency-Key au niveau REST si vous voulez la sécurité en cas de retry — MCP la transmet comme argument d'outil.
Workflow courant — « Marque INV-0417 comme payée »
User: "INV-2026-0417 was paid yesterday — close the loop."
Agent → search_documents({number: "INV-2026-0417"}) # → documentId
→ update_lifecycle({
documentId,
status: "paid",
note: "Paid 2026-04-29 via SEPA"
})
Le changement de cycle de vie déclenche automatiquement la déclaration au PPF (FR) ou au SDI (IT) le cas échéant — l'agent n'a pas besoin de le savoir. Surveillez compliance.reported sur votre flux de webhooks pour la confirmation. Les factures belges sautent cette étape (HERMES hors service au 31/12/2025).
Workflow courant — « Onboarde un nouveau fournisseur »
User: "Add Globex SRL (VAT IT09876543210) as a partner and check they're on Peppol."
Agent → resolve_company({vatNumber: "IT09876543210"}) # profil enrichi
→ verify_recipient({peppolId}) # canReceive: true?
→ save_partner({...}) # dans votre CRM/ERP
HTTP direct (sans SDK)
MCP n'est que du JSON-RPC sur un POST HTTP. Si vous ne voulez pas du SDK :
# 1. Initialiser la session
curl -X POST https://back.flowie.ink/exchange/mcp \
-H "Authorization: Bearer $FLOWIE_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {"name": "curl", "version": "1.0"}
}
}'
# 2. Lister les outils
curl -X POST https://back.flowie.ink/exchange/mcp \
-H "Authorization: Bearer $FLOWIE_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# 3. Appeler un outil
curl -X POST https://back.flowie.ink/exchange/mcp \
-H "Authorization: Bearer $FLOWIE_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{
"name":"list_documents",
"arguments":{"direction":"incoming","limit":5}
}
}'
Erreurs
Les erreurs MCP reflètent les erreurs REST sous-jacentes — mêmes codes, même forme, emballées dans du JSON-RPC. Un 401 côté REST remonte en erreur MCP -32001 avec le code d'erreur Flowie d'origine dans data.errorCode. Voir le catalogue des erreurs pour tout ce que vous pourriez rencontrer.
Les deux erreurs propres à MCP :
tool not found— ce nom d'outil n'existe pas sur ce serveur. Lanceztools/listpour obtenir les noms exacts. Les outils App (workflows, tâches, demandes d'achat, budgets…) sont sur/agent-hub/mcp, pas sur/exchange/mcp.invalid arguments— schéma d'entrée non respecté. Lanceztools/listet suivez l'inputSchemaà la lettre.
Limites de débit & quotas
Les appels MCP héritent de votre quota REST — il n'y a pas de budget séparé. Un tools/call MCP = une requête REST. Utilisez la même logique de repli sur l'en-tête X-Flowie-RateLimit-Remaining ; l'en-tête est exposé sur l'enveloppe de réponse JSON-RPC sous _meta.
Serveur App : 60 requêtes JSON-RPC par minute et par utilisateur sur /agent-hub/mcp, au rythme d'une personne. Au-delà, la réponse est 429 avec Retry-After. Pour du volume, utilisez le serveur Exchange, qui accepte de 120 à 2 400 requêtes par minute selon l'offre.
Sandbox
Pointez l'agent vers https://back.flowie.ink/exchange/mcp avec une clé flw_test_… et toutes les fonctions du sandbox marchent : erreurs forcées via X-Sandbox-Force-Error, destinataires simulés (0208:SIM_HAPPY, SIM_DISPUTE, TEST_AP_FAIL), simulateurs de cycle de vie, tout. Voir le guide du sandbox pour le menu complet.
mcpServers. Enregistrez à la fois flowie-exchange-sandbox (clé de test, URL sandbox) et flowie-exchange-prod (clé de production, URL prod). Puis demandez explicitement à l'agent : « Utilise le serveur sandbox pour faire un essai à blanc. »
Dépannage
401— « Unauthorized: sign in to Flowie to use these tools. » Le client n'a pas terminé la connexion. Dans Claude Code, lancez/mcp, choisissez le serveur, Authenticate ; ailleurs, cliquez sur Connect à côté du serveur.- « Server not found » depuis
claude.ai/api/…/mcp/start-auth/mcpsrv_…— le connecteur claude.ai a été supprimé ou ré-ajouté pendant que Claude Code tournait. Redémarrez Claude Code, ou ajoutez le serveur directement avecclaude mcp add --transport http flowie-app https://back.p2p-flowie.com/agent-hub/mcp. - Une clé d'API est refusée sur
/agent-hub/mcp— normal : le serveur App n'accepte qu'une connexion. Utilisez/exchange/mcppour les clés. - Clé refusée sur l'autre hôte — les clés
flw_live_…fonctionnent surback.p2p-flowie.com, les clésflw_test_…surback.flowie.ink.
Docs pour agents
Tout le site de documentation est publié sous forme exploitable par machine, selon la convention llms.txt. Pointez un agent (ou un pipeline RAG) vers ces fichiers au lieu de scraper le HTML — chaque page porte un <link rel="alternate" type="text/markdown"> pour que les outils les découvrent automatiquement.
| Ressource | De quoi il s'agit |
|---|---|
llms.txt | Index des pages avec titres et descriptions d'une ligne — une recherche rapide pour qu'un agent décide quoi récupérer. |
llms-full.txt | Le corpus entier dans un seul fichier — chaque page à la suite, en Markdown propre. À déposer directement dans une fenêtre de contexte. |
llms/reference/index.md | Répertoire des tranches Markdown par endpoint — un fichier par opération d'API, pour qu'un agent ne tire que l'endpoint dont il a besoin. |
openapi.json | La spécification OpenAPI 3.1 complète — la même qui génère les schémas d'outils MCP. |
Tout ce qui est sous docs.get-flowie.com est accessible ainsi : https://docs.get-flowie.com/llms.txt, https://docs.get-flowie.com/llms-full.txt, et un fichier Markdown par endpoint sous https://docs.get-flowie.com/llms/reference/.
Onboarding d'agents
Un agent n'a pas besoin qu'un humain lui remette une clé. Deux parcours en self-service lui permettent de se provisionner seul — voir le guide complet d'onboarding d'agents pour les deux.
- Bootstrap sandbox — un seul POST non authentifié renvoie une clé
flw_test_…valable 7 jours plus une entreprise sandbox de départ. Aucun humain dans la boucle ; idéal pour le prototypage, les démos et la CI d'agents. Voir le flux de bootstrap. - Consentement OAuth (PKCE) — quand l'agent doit agir pour le compte d'un utilisateur réel, le flux de consentement de style OAuth émet une clé à portée limitée, de niveau production, après approbation de l'utilisateur. Voir le flux de consentement OAuth.