Sources: APIs & integrations
The station's tools: the tenant's APIs, and other stations called as APIs — the integrations. Each operation says whether it reads or writes, its risk and what comes out of it.
The APIs
apis:
- name: stripe
openapi_url: https://payments.example.fr/openapi.json
base_url: https://payments.example.fr
auth: {type: api_key, key_name: Authorization, key_location: header, key_env: STRIPE_KEY}
operations:
- {id: getInvoice, access: read}
- {id: createRefund, access: write, risk: high, reversible: false}
- {id: createCreditNote, access: write, risk: medium, reversible: voidCreditNote}
- {id: voidCreditNote, access: write, risk: medium}
- {id: deleteCustomer, access: write, risk: critical, exposed: false}
- name: zendesk
auth: {type: oauth2, on_behalf_of: identity} # the tool sees WHO acts
operations:
- {id: sendReply, access: write, risk: medium, audience: external}
| attribute | effect |
|---|---|
access | read or write. A read runs right away; a write is reserved. |
risk | low · medium · high · critical. Weighs on warnings (an agent allowed to submit a high write). |
exposed: false | listed so it is documented, but never reachable. |
audience: external | the write leaves the organisation (an e-mail to the customer). It cannot carry confidential data. |
reversible | the operation that undoes it, or false. The approval screen says "irreversible"; at submit, irreversible writes go last. |
auth.on_behalf_of: identity | the call carries the person's identity, not a shared key. |
A station as an API
apis:
- name: fournisseur-materiel
station: mcp.convoy.sale/materiel-pro/mcp
The call goes through the other station: its rules apply. Our agent becomes a sub-identity there. The two logs share a correlation identifier.