Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "prepare_escrow_payment" and "settle_escrow_payment"
⟨771 unchanged words⟩ check happens after the money has already moved. `arbiter` is who decides a dispute. Leave it out for the default arbiter, which is almost always right. It is one of the terms the address derives from, so pass the same value to `settle_escrow_payment`.
⟨3 unchanged words⟩ {"amount":{"type":"integer"},"arbiter":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"brand":{"anyOf":[{"type":"string ⟨133 unchanged words⟩
⟨269 unchanged words⟩ `prepare_escrow_payment`: attribution only, and ignored when malformed. `arbiter`, when one was passed to `prepare_escrow_payment`, must be passed here too: it is a term, and leaving it out derives the default arbiter's address instead.
⟨3 unchanged words⟩ {"amount":{"type":"integer"},"arbiter":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"authorization":{"anyOf":[{"additionalProperties":true, ⟨131 unchanged words⟩
Changed the definition of "payment_qr", "prepare_escrow_payment" and "settle_escrow_payment"
⟨28 unchanged words⟩ network, destination and amount already in it. Or pass its `share_with_payer.pay_link`, for a code that opens the payment on the site instead — what to hand someone who is being asked to pay, as the site's own requests do. ⚠️ A SEPARATE TOOL RATHER THAN PART OF ⟨102 unchanged words⟩
⟨660 unchanged words⟩ , so it can be set freely here. `brand` is the white-label partner the payment is being made under, if any (the `?b=` id, e.g. `escrow-me`). It is recorded on the contract for attribution only: it does not affect the address, and a malformed one is ignored rather than refused. `product_name` is what is being bought, shown on both parties' dashboards. Display only, like `brand`. A seller or nominal buyer given by email is recorded with that email as well, so the escrow shows to them the way a request made on the site does.
Changed the definition of "prepare_escrow_payment"
⟨40 unchanged words⟩ need to know a wallet to use this. The parties are checked against the sanctions lists before an address is given. If any of them is listed the answer is `error: sanctioned_party` with no address, and the payment cannot be made through this service. Returns the escrow address these terms produce, and ⟨599 unchanged words⟩
Certificate recorded, valid to 2026-12-06
Authorization not required
Changed the definition of "prepare_escrow_payment" and "settle_escrow_payment"
⟨6 unchanged words⟩ go, before anybody signs or sends anything. `seller` and `nominal_buyer` may each be a wallet address OR AN EMAIL ADDRESS — an email is converted to the wallet that person owns, so you never need to know a wallet to use this. Returns the escrow address these terms produce, and ⟨280 unchanged words⟩ read a report and decide whether to object. **`seller` and `nominal_buyer` may each be a wallet address OR an email address.** An email resolves to the wallet Privy holds for that person — made for them if they have never logged in — and the same email always resolves to the same wallet, so the address derived here is the one `settle_escrow_payment` derives too. The resolved wallets come back under `parties`. A seller given by email is paid into that wallet; they sign in with the email to reach it. `external_id` keeps two otherwise-identical payments apart, and ⟨222 unchanged words⟩
⟨21 unchanged words⟩ Unknown → Live
First tool surface recorded: 6 tools (server version 4.0.4)
https://api.stabledrop.me/api/ap2/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 9 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨3 unchanged words⟩ {"amount":{"type":"integer"},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"description":{"default":"Escrow payment","type ⟨50 unchanged words⟩ signed in.","type":"string"},"payer":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"product_name":{"anyOf":[{"type":"string" ⟨58 unchanged words⟩
⟨254 unchanged words⟩ the two reconcile: token_amount + creator_fee = amount. `brand` is the white-label partner, as in `prepare_escrow_payment`: attribution only, and ignored when malformed.
⟨13 unchanged words⟩ ":"null"}],"default":null},"brand":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null},"description":{"default":"Escrow payment","type ⟨112 unchanged words⟩
Create the escrow around the money and return a signed receipt. `seller` and `nominal_buyer` may be wallet addresses OR EMAIL ADDRESSES, exactly as in `prepare_escrow_payment`; an email converts to the same wallet it did there. Works both ways, and which one runs is ⟨109 unchanged words⟩ a signature, stops matching what the payer signed. `seller` and `nominal_buyer` may be wallet addresses or email addresses, as in `prepare_escrow_payment`; an email resolves to the same wallet it did there. ⚠️ `external_id` MUST BE THE ONE `prepare_escrow_payment` RETURNED. ⟨71 unchanged words⟩
⟨26 unchanged words⟩ {"type":"string"},"nominal_buyer":{"description":"Who may dispute and receives any refund — the PERSON, not the agent: a wallet address (0x…) OR an email address. An email is converted to that person's wallet, created for them if they have never signed in.","type":"string"},"seller":{"description":"Who gets paid: a wallet address (0x…) OR an email address. An email is converted to the wallet that person owns, created for them if they have never signed in; the same email always gives the same wallet.","type":"string"},"signature":{"anyOf ⟨19 unchanged words⟩