API des outils Ofrr.io
Découvrez et exécutez les outils d’offre Ofrr.io depuis la même API que le MCP et la CLI.
L’API REST, le serveur MCP et la CLI utilisent un registre unique. Le schéma d’entrée, les permissions, la logique métier et la trace d’audit restent donc identiques sur les trois surfaces.
Points d’entrée
GET /api/v1/tools
GET /api/v1/tools/:name
POST /api/v1/tools/:name
GET /api/v1/skills
GET /api/v1/skills/:nameGET /api/v1/toolsretourne uniquement les outils autorisés pour la connexion.GET /api/v1/tools/:nameretourne le JSON Schema d’un outil.POST /api/v1/tools/:namevalide puis exécute l’outil.
Les alias REST déclarés dans le registre, comme
GET /api/v1/proposals/:proposalId, appellent exactement les mêmes handlers.
Les alias /api/v1/skills exposent la liste des playbooks et leur contenu sans
dupliquer leur définition.
Authentification
Créez une clé dans Réglages → Clés API, puis envoyez-la comme jeton bearer :
Authorization: Bearer VOTRE_CLEL’en-tête x-api-key reste également accepté. Un jeton OAuth créé lors d’une
connexion MCP se transmet avec le même en-tête Authorization.
Le justificatif détermine l’organisation et les permissions : ne transmettez jamais d’identifiant d’organisation dans le corps.
Outils d’offre
| Outil | Permission requise |
|---|---|
search_proposals | ofrr.proposals.read |
get_proposal | ofrr.proposals.read |
get_proposal_history | ofrr.proposals.read |
explain_price | ofrr.proposals.read |
get_skill | Authentification uniquement |
create_proposal_from_brief | ofrr.proposals.drafts.write |
update_proposal | ofrr.proposals.drafts.write |
recalculate_proposal | ofrr.proposals.commercial.write |
create_proposal_version | ofrr.proposals.publish |
publish_proposal | ofrr.proposals.publish |
set_proposal_status | ofrr.proposals.status.write |
record_proposal_event | ofrr.proposals.status.write |
trash_proposal | ofrr.proposals.trash |
restore_proposal | ofrr.proposals.trash |
La lecture du nom ou de l’e-mail d’un contact demande en plus
ofrr.proposals.contacts.read.
Exécution
curl https://ofrr.io/api/v1/tools/create_proposal_from_brief \
-H "Authorization: Bearer VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{
"title": "Refonte du site Acme",
"brief": "Le client veut refondre son site vitrine de douze pages..."
}'Une réponse réussie place le résultat sous data. Une entrée invalide retourne
400, un justificatif absent ou expiré 401, une permission manquante 403
et un outil inconnu 404.
Actions sensibles
publish_proposal exige confirmPublication: true. Une publication crée un
instantané immuable ; toute évolution commerciale passe ensuite par
create_proposal_version.
set_proposal_status exige une vraie référence externalActionId pour passer
une offre au statut sent. Cela permet à un agent de refléter un e-mail qu’il a
réellement envoyé depuis un autre service, sans attribuer cet envoi à Ofrr.io.
trash_proposal place l’offre dans une corbeille récupérable. La restauration
utilise restore_proposal.
CLI
export OFRR_API_KEY="VOTRE_CLE"
pnpm tools list
pnpm tools run search_proposals '{"query":"Acme"}'Consultez le registre commun pour les garanties de cohérence, le guide universel Agents IA, ou les guides Codex, Claude, Cursor et ChatGPT.