Withdraw a declaration from the exchange
withdraw_manifestUse this when the user wants to UN-SAY a declaration they already published — the scope was wrong, the mandate changed, or they simply no longer want to be on the exchange. Identified by the key (msgid) they already hold, so nothing new is asked of them. It is NOT a delete: the exchange marks that key so the thread stops answering and accepts no further replies, records the withdrawal with any reason given, and keeps both in its ledger; the user's OTHER threads are untouched. Anything already introduced through it is two-sided and stays with the desk. A new declaration is a NEW key (publish_manifest without key). The call is staged: a dry run sends nothing, and the confirmed call is bound to the exact payload that dry run returned. Call once with dry_run=true to get the exact payload and a confirmation_token; call again with the same arguments plus that token to send. A token that does not match the payload is refused and nothing is sent.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"request_id": "<request_id>",
"key": "<key>"
},
"name": "withdraw_manifest"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The msgid (or answer_key) of the declaration being withdrawn — from the receipt that created it. | |
| reason | No | Optional reason in the user's own words, recorded with the withdrawal. | |
| dry_run | No | true returns the exact withdrawal and a confirmation_token, and withdraws nothing. | |
| request_id | Yes | Your own idempotency key for this withdrawal; quote it as the receipt. | |
| confirmation_token | No | The token from the dry run, for the confirmed withdrawal. |