Documentation
OverviewQuickstartConceptsDecisions and errorsApprovalsVersioningSecurityExtensionsFAQPartner integration profilePartner integration profile (template)
IMPORTANT: this is a blank template. Completed profiles for named partners are stored privately, NEVER in this
repository. Copy this page into your organisation's private workspace before you fill it in. Do not open a pull
request or an issue that contains a completed profile, a real partner name, a real endpoint or a key.
Status: Draft 0.4, pre-release. For release v0.2.0-draft.4 (Starter profile).
A partner fills in one profile per operator before integrating with a marketplace's gateway. It tells the
marketplace what your agents will do, which parts of RCTP you use, and how to reach you when something goes wrong.
Most fields map to the dev.rctp.operator entry of your UCP profile
[4.1(2)].
Placeholders use .example domains. Replace every <…>.
#1. Organisation
| Field |
Value |
Legal entity (legal_entity) |
<registered company name> |
Jurisdiction (jurisdiction, ISO 3166-1 alpha-2) |
<SG> |
UCP profile URL (UCP-Agent) |
https://agents.<partner>.example/.well-known/ucp |
Agents (agent_id) |
agt:<partner>:<n>, archetype ☐ seller-agent ☐ buyer-agent |
| Marketplace(s) and market(s) |
<marketplace>, <country codes> |
Use role addresses only, never a person's name.
| Role |
Address |
| Integration |
integration@<partner>.example |
Incidents (incident_contact) |
mailto:incidents@<partner>.example or https://<partner>.example/incident |
| Security reports |
security@<partner>.example |
| Commercial |
partnerships@<partner>.example |
#3. What you implement
| Level or profile |
Applies |
Core: Agent Grant, Listing Terms (goods.small/1), offers with Deal Terms, decisions [17.1] |
☐ As seller agent ☐ As buyer agent |
Approval at level hosted_embedded [9.1] |
☐ |
Proof: funds_held, accepted, rejected, released, UCP return and refund [17.4] |
☐ As buyer agent (accepted, rejected) ☐ As holder of funds ☐ As seller agent (return) |
Not available in v0.2: marketplace_app and certified_operator levels; AP2 buyer authority; Trust, Identity, Item and Custody levels |
— |
#4. Verbs requested (seller agents)
The seller confirms every tier on the marketplace's consent page; this table is what your agent will ask for, as
tiers in the dev.rctp.agent_grant authorization details. The seller always sets the floor and other terms on the
hosted page, never the agent.
| Verb |
Scope |
Requested tier (auto, ask) |
Allowed tiers |
Why your agent needs it |
listing.create |
dev.rctp.listing:create |
ask (only tier) |
ask |
<…> |
listing.set_terms |
dev.rctp.listing:set_terms |
ask (only tier) |
ask |
<…> |
listing.reprice |
dev.rctp.listing:reprice |
<auto> |
auto, ask |
<…> |
listing.answer_buyer |
dev.rctp.listing:answer_buyer |
<auto> |
auto, ask |
<…> |
offer.counter |
dev.rctp.deal:offer_counter |
<auto> |
auto, ask |
<…> |
offer.accept |
dev.rctp.deal:offer_accept |
<ask> |
ask, auto |
<…> |
deal.commit_to_ship |
dev.rctp.deal:commit_to_ship |
<ask> |
ask, auto |
<…> |
deal.sign_contract, account.update |
none |
— |
— |
Always forbid (INV-3) |
Read the scopes and allowed tiers from the gateway's /.well-known/ucp; the table shows the registry defaults. Any
verb not granted is refused action_forbidden.
| Approval setting |
Value |
| Approval level |
hosted_embedded |
Where your app opens hosted_url |
☐ In-app browser tab ☐ System browser ☐ Other: <…> |
| Grant refresh |
☐ Every rotated refresh token persisted (reuse revokes the grant) |
#5. Extensions used
List every x- extension and every reverse-domain value you send. Each x- extension needs a tracking issue and an
end date of at most two drafts or six months (Extensions).
| Name |
Kind |
Tracking issue |
End date |
Invariants touched |
x-<partner>.<name> or <partner>.example:<name> |
☐ Verb ☐ Reason ☐ Field ☐ Deal event ☐ Method type |
#<number> |
<YYYY-MM-DD> |
<INV-…> |
☐ None.
#6. Versions
| Item |
Value |
Capability version(s) (RCTP-Version) |
2026-11-draft5 |
| SDK and version |
☐ @rctp/sdk 0.2.0-draft.4 ☐ rctp (Python) 0.2.0a4 ☐ Own implementation: <…> |
| Conformance |
Vectors run <V1–V15, V26–V29, S1–S4>, result <pass count>, date <YYYY-MM-DD>, report kept at <private location> |
#7. Endpoints
| Item |
Value |
| UCP profile URL |
https://agents.<partner>.example/.well-known/ucp |
| OAuth redirect URI (seller agents) |
https://agents.<partner>.example/rctp/callback |
Webhook URL (dev.rctp.deal config.webhook_url) |
https://agents.<partner>.example/hooks/rctp |
| Webhook types consumed |
☐ approval.decided ☐ offer.updated ☐ deal.event |
| Webhook verification |
☐ Every webhook verified (UCP signed webhook against the gateway profile, Content-Digest, Webhook-Timestamp ≤ 300 s), duplicates dropped by Webhook-Id |
| Egress IP ranges (if the marketplace asks) |
<…> |
#8. Keys and data
| Item |
Value |
| Key algorithm |
ES256 (P-256); kid = RFC 7638 thumbprint (B-1) |
Key custody (key_custody) |
<HSM / cloud KMS / other, and region> |
| Private keys exportable? |
☐ No ☐ Yes, because <…> |
| Key rotation and removal time |
<…>. A rotated seller-agent key needs a new seller consent (grants are bound to jkt). |
| Clock discipline |
☐ Clocks within 60 s of UTC (B-2) |
Data residency (data_residency) |
<country codes> |
| Data retention |
<…> |
#9. Incident response
| Item |
Value |
Incident SLA (incident_sla_hours) |
<24> hours |
| How fast you can pull a compromised key from your profile |
<…> |
| How you revoke your agents' tokens (RFC 7009) |
<…> |
| How you stop an agent that misbehaves |
<…> |
#10. Commitments
Draft 0.4 and the invariants. Tick each one.
- ☐ We will not export buyer data, contact buyers outside the marketplace, or use RCTP data for advertising [4.1(4)].
- ☐ We will put no personal data in any RCTP object, log line or webhook we produce (INV-9).
- ☐ We will never store a seller's private terms, and send them only as the
proposed_terms the seller told us to propose (INV-1, INV-5).
- ☐ We will never act on an
ask without the seller's own approval, and treat no answer as no (INV-2, INV-4).
- ☐ We will act on every
forbid reason as Decisions and errors describes, and not probe floors.
- ☐ We will report vulnerabilities privately (Security).
| Sign-off |
Value |
| Role of the approver (not a name) |
<Head of Engineering> |
| Date |
<YYYY-MM-DD> |
| Profile version |
<1> |
Source: docs/partner-integration-profile.md