distribution.techdistribution.tech

MCP tool

Approve and get the pay link

approve_plan

Sign a plan at the terms_fingerprint from plan_quote, under the brand terms a person at the brand accepted for this key, and get the Stripe Checkout link.

Overview

Sign a plan at the terms_fingerprint from plan_quote, under the brand terms a person at the brand accepted for this key, and get the Stripe Checkout link the brand or its finance person pays (card or Link up to $10,000, US bank account at any size). Only inside the key's mandate: a refusal names the limit (no mandate, expired, signing not allowed, terms not accepted, channel, plan maximum, monthly cap) and how much over, so you can take it to a person. A plan that changed since the quote is refused with terms_changed: quote again. A plan over the campaign's budget is refused with over_budget and its over_by_cents, always: nobody can approve an overage, the brand included, so remove a creator or ask a person at the brand to raise the budget, then quote again. Signing a signed plan returns its order and resumes payment; it never signs twice. Needs an idempotency_key.

Server
https://app.distribution.tech/api/mcp
Scope
plans:approve
Changes data
Yes, pass an idempotency_key

Arguments

Arguments of approve_plan
NameTypeRequiredDescription
idempotency_keystringYesYour unique id for this request. Retry with the same id and the same arguments to get the same answer; it never runs twice.
plan_idstring (uuid)YesThe plan you quoted with plan_quote.
terms_fingerprintstringYesThe terms_fingerprint from plan_quote.

Call with curl

The server speaks streamable HTTP, so one JSON-RPC tools/call request runs the tool. Set DISTRIBUTION_API_KEY to a key from Developers with the plans:approve scope; the arguments shown are the required ones.

curl
curl -X POST "https://app.distribution.tech/api/mcp" \
  -H "Authorization: Bearer $DISTRIBUTION_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "approve_plan",
    "arguments": {
      "idempotency_key": "<string>",
      "plan_id": "<uuid>",
      "terms_fingerprint": "<string>"
    }
  }
}'

Result

The answer's structuredContent follows the tool's output schema (the same JSON is in its text content). It has these fields:

Result fields of approve_plan
NameTypeRequiredDescription
plan_idstring (uuid)No
status"approved"No
approved_atstring (date-time)No
already_signedbooleanNo
orderobject or nullNo
paymentobjectNo
structuredContent, every field with its type
{
  "plan_id": "<uuid>",
  "status": "approved",
  "approved_at": "<date-time>",
  "already_signed": false,
  "order": {},
  "payment": {
    "next": "checkout",
    "pay_url": "<string>",
    "options": [
      {
        "rail": "checkout",
        "label": "<string>",
        "clears": "<string>"
      }
    ]
  }
}

Get access

Keys are created in Developers once your brand is approved. Connect an agent to ask for access, then read the agent guide for the full flow.