MCP Server

Cofferline

com.cofferline/treasury
Crypto & Web3 Payments & Fintech Security Public & reachable MCP 2026-07-28

What this MCP does

Provides policy-controlled agent wallet treasury operations, token conversions, gas top-ups, prediction-market orders, delegations, statements, and emergency controls.

cancel_all_pm_orders
Cancel every resting order for the credential, optionally within one market. Auth required.
Input schema
{'type': 'object', 'required': ['credential_id'], 'properties': {'market': {'type': 'string', 'description': 'optional market filter'}, 'credential_id': {'type': 'string', 'description': 'stored credential id (uuid)'}}}
cancel_intent
Cancel a planned intent (a few-second window before execution claims it). Auth required.
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'intent id (uuid)'}}}
cancel_pm_order
Cancel one resting prediction-market order. Auth required.
Input schema
{'type': 'object', 'required': ['order_id', 'credential_id'], 'properties': {'venue': {'enum': ['polymarket'], 'type': 'string', 'default': 'polymarket', 'description': 'prediction-market venue (default polymarket)'}, 'order_id': {'type': 'string', 'description': "the venue's order id"}, 'credential_id': {'type': 'string', 'description': 'stored credential id (uuid)'}}}
check_pm_order
Pre-flight policy check for a prediction-market order: would this cost be allowed right now? Auth required.
Input schema
{'type': 'object', 'required': ['wallet', 'condition_id', 'cost_usd'], 'properties': {'state': {'type': 'object', 'description': 'optional current exposure: {market_exposure_usd, realized_loss_today_usd, total_open_exposure_usd} as decimal strings'}, 'wallet': {'type': 'string', 'description': 'wallet address'}, 'cost_usd': {'type': 'string', 'description': 'order cost in USD, decimal string'}, 'condition_id': {'type': 'string', 'description': 'market/condition identifier'}}}
check_spend
Pre-flight policy check: would this spend be allowed under the wallet's policy right now? Auth required.
Input schema
{'type': 'object', 'required': ['wallet', 'amount_usd', 'token'], 'properties': {'token': {'type': 'string', 'description': 'token symbol, e.g. USDC'}, 'wallet': {'type': 'string', 'description': 'wallet address'}, 'amount_usd': {'type': 'string', 'description': 'spend amount in USD, decimal string'}, 'counterparty': {'type': 'string', 'description': 'optional counterparty address to screen'}}}
complete_siwe_login
Finish wallet sign-in: exchanges the signed SIWE message for a cl_sess_… session token — use it as the Authorization bearer on every authenticated tool. Free, no auth.
Input schema
{'type': 'object', 'required': ['message', 'signature'], 'properties': {'message': {'type': 'string', 'description': 'the exact SIWE message from start_siwe_login'}, 'signature': {'type': 'string', 'description': "the wallet's signature over the message, 0x…"}}}
confirm_delegation
Activate a prepared delegation by supplying the owner's signature over its enable digest. Auth required.
Input schema
{'type': 'object', 'required': ['id', 'enable_sig'], 'properties': {'id': {'type': 'string', 'description': 'delegation id (uuid)'}, 'owner': {'type': 'string', 'description': 'optional owner address, when it differs from the caller'}, 'enable_sig': {'type': 'string', 'description': "owner's 65-byte signature over the digest, 0x…"}}}
create_intent
Create a conversion or gas_topup intent; the executor pipeline plans and fills it under policy. Auth required.
Input schema
{'type': 'object', 'required': ['wallet', 'kind', 'sell_token', 'buy_token', 'sell_amount'], 'properties': {'kind': {'enum': ['conversion', 'gas_topup'], 'type': 'string'}, 'venues': {'type': 'array', 'items': {'type': 'string'}, 'description': 'optional venue override'}, 'wallet': {'type': 'string', 'description': 'wallet address'}, 'buy_token': {'type': 'string', 'description': 'ERC-20 address being bought'}, 'sell_token': {'type': 'string', 'description': 'ERC-20 address being sold'}, 'sell_amount': {'type': 'string', 'description': 'base units, decimal string'}, 'max_slippage_bps': {'type': 'number', 'description': 'optional per-intent slippage cap'}}}
create_pm_order
Place a prediction-market limit order under policy, signed server-side with the stored credential. Polymarket: condition_id, token_id, action, price_usd (e.g. '0.55'), size_shares. Auth required.
Input schema
{'type': 'object', 'required': ['wallet', 'credential_id', 'action'], 'properties': {'state': {'type': 'object', 'description': 'optional current exposure: {market_exposure_usd, realized_loss_today_usd, total_open_exposure_usd} as decimal strings'}, 'venue': {'enum': ['polymarket'], 'type': 'string', 'default': 'polymarket', 'description': 'prediction-market venue (default polymarket)'}, 'action': {'enum': ['buy', 'sell'], 'type': 'string'}, 'wallet': {'type': 'string', 'description': 'treasury wallet whose policy governs the order'}, 'token_id': {'type': 'string', 'description': 'Polymarket: outcome token id, decimal string'}, 'price_usd': {'type': 'string', 'description': "Polymarket: limit price, '0.xx'"}, 'size_shares': {'type': 'string', 'description': 'Polymarket: share count, decimal string'}, 'condition_id': {'type': 'string', 'description': 'Polymarket: market condition id'}, 'credential_id': {'type': 'string', 'description': 'stored credential id (uuid)'}, 'client_order_id': {'type': 'string', 'description': 'optional idempotency uuid'}}}
export_account
Export all of this account's data in one document. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {}}
get_auto_topup
The auto-topup rule and how many pre-signed authorizations remain. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {}}
get_balance
Prepaid fee balance: settled credits minus fee debits. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {}}
get_benchmarks
Measured execution benchmarks: median savings vs arrival quote by USD size bucket, from real completed intents only. Free, no auth.
Input schema
{'type': 'object', 'required': [], 'properties': {}}
get_delegation
Fetch one delegation. Auth required.
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'delegation id (uuid)'}}}
get_intent
Fetch an intent, including fills and the post-trade report once filled. Auth required.
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'intent id (uuid)'}}}
get_me
Identify the authenticated account: address, kind, scopes. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {}}
get_pm_onboarding
Polymarket trade-readiness for an address: live approval status plus the calldata for anything missing (executed outside MCP — this server cannot sign). Auth required.
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'the trading address to check'}}}
get_pm_signer_rotation
Calldata to swap the Polymarket funder Safe's owner to a new EOA — the owner executes it outside MCP (this server cannot sign). Auth required.
Input schema
{'type': 'object', 'required': ['id', 'new_owner'], 'properties': {'id': {'type': 'string', 'description': 'credential id (uuid)'}, 'new_owner': {'type': 'string', 'description': 'the replacement owner address'}}}
get_policy
List policy versions, newest first (the first entry is active). Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'max results'}, 'wallet': {'type': 'string', 'description': 'optional wallet filter'}}}
get_quotes
Live venue quote comparison for a token conversion (CoW + ParaSwap on Base). Free, no auth.
Input schema
{'type': 'object', 'required': ['sell_token', 'buy_token', 'sell_amount'], 'properties': {'chain_id': {'type': 'number', 'description': '8453 (Base)'}, 'buy_token': {'type': 'string', 'description': 'ERC-20 address being bought'}, 'sell_token': {'type': 'string', 'description': 'ERC-20 address being sold'}, 'sell_amount': {'type': 'string', 'description': 'sell amount in base units, decimal string'}}}
get_statement
Deterministic monthly statement derived from the append-only ledger — same period, same bytes. Auth required.
Input schema
{'type': 'object', 'required': ['wallet', 'period'], 'properties': {'format': {'type': 'string', 'description': "'json' (default) or 'csv'"}, 'period': {'type': 'string', 'description': 'calendar month, YYYY-MM'}, 'wallet': {'type': 'string', 'description': 'wallet address'}}}
list_delegations
List delegations, newest first. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'max results'}, 'account': {'type': 'string', 'description': 'optional smart-account filter'}}}
list_feedback
Every feature request ever submitted, public and unauthenticated. Free.
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'max results'}}}
list_intents
List intents, newest first. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'max results'}, 'offset': {'type': 'number', 'description': 'skip this many'}, 'wallet': {'type': 'string', 'description': 'optional wallet filter'}}}
list_pm_credentials
List stored venue credentials — metadata only, never material. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {}}
list_pm_orders
The credential's resting orders straight from the venue — recover state after a disconnect. Auth required.
Input schema
{'type': 'object', 'required': ['credential_id'], 'properties': {'market': {'type': 'string', 'description': 'optional market filter'}, 'credential_id': {'type': 'string', 'description': 'stored credential id (uuid)'}}}
list_tokens
Tokens the platform accepts on an intent, per chain — what create_intent will admit. Free, no auth.
Input schema
{'type': 'object', 'required': [], 'properties': {'chain_id': {'type': 'number', 'description': 'limit to one chain; omit for every supported chain'}}}
offboard_account
Close this account for good: revokes every credential, scrubs personal data, retires the account. Irreversible; confirm_wallet_address must be the account's own wallet address, typed exactly. Auth required.
Input schema
{'type': 'object', 'required': ['confirm_wallet_address'], 'properties': {'reason': {'type': 'string', 'description': 'optional reason, recorded'}, 'confirm_wallet_address': {'type': 'string', 'description': "the account's wallet address, typed to confirm"}}}
panic
Emergency stop, one call: suspends the account, revokes every API key, session, delegation and venue credential, and returns all unwind calldata for the owner. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {'reason': {'type': 'string', 'description': 'optional reason, recorded'}}}
poll_events
Poll typed treasury events with a monotonic cursor (intent lifecycle, budget thresholds, reconciliation, security alerts). Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {'type': {'type': 'string', 'description': 'optional event-type filter, e.g. intent.filled'}, 'limit': {'type': 'number', 'description': 'max results'}, 'cursor': {'type': 'number', 'description': 'resume after this event id'}, 'wallet': {'type': 'string', 'description': 'optional wallet filter'}}}
prepare_delegation
Prepare a scoped session-key grant for a Kernel smart account: exact call allowlist, expiry, optional rate limit. Returns the ONE EIP-712 digest the account owner signs outside MCP (this server cannot sign) — then call confirm_delegation with the signature. Auth required.
Input schema
{'type': 'object', 'required': ['account', 'chain_id', 'calls', 'valid_until'], 'properties': {'calls': {'type': 'array', 'items': {'type': 'object', 'required': ['target', 'selector', 'value_limit'], 'properties': {'target': {'type': 'string', 'description': 'contract address'}, 'selector': {'type': 'string', 'description': 'function selector, 0x + 8 hex chars'}, 'value_limit': {'type': 'string', 'description': 'max native value per call, wei, decimal string'}}}, 'description': 'allowed calls: each {target: contract address, selector: 0x + 4 bytes, value_limit: max native value in wei as decimal string}'}, 'account': {'type': 'string', 'description': 'the Kernel smart account granting scope'}, 'chain_id': {'type': 'number', 'description': '8453 (Base) or 84532 (Base Sepolia)'}, 'rate_limit': {'type': 'object', 'description': 'optional {count, interval_secs}: max delegated calls per interval'}, 'valid_after': {'type': 'number', 'description': 'optional start, unix seconds'}, 'valid_until': {'type': 'number', 'description': 'expiry, unix seconds'}}}
prepare_pm_order
Prepare a client-signed Polymarket order: policy-checked, then returns the exact EIP-712 payload to sign outside MCP (this server cannot sign) plus a prepare_id — submit both via submit_pm_order. Auth required.
Input schema
{'type': 'object', 'required': ['venue', 'wallet', 'credential_id', 'condition_id', 'token_id', 'action', 'price_usd', 'size_shares'], 'properties': {'state': {'type': 'object', 'description': 'optional current exposure: {market_exposure_usd, realized_loss_today_usd, total_open_exposure_usd} as decimal strings'}, 'venue': {'enum': ['polymarket'], 'type': 'string'}, 'action': {'enum': ['buy', 'sell'], 'type': 'string'}, 'wallet': {'type': 'string', 'description': 'treasury wallet whose policy governs the order'}, 'token_id': {'type': 'string', 'description': 'outcome token id, decimal string'}, 'price_usd': {'type': 'string', 'description': "limit price, '0.xx'"}, 'size_shares': {'type': 'string', 'description': 'share count, decimal string'}, 'condition_id': {'type': 'string', 'description': 'market condition id'}, 'credential_id': {'type': 'string', 'description': 'stored credential id (uuid)'}, 'client_order_id': {'type': 'string', 'description': 'optional idempotency uuid'}}}
put_policy
Create or update the wallet's treasury policy (immutable versioning; PUT creates the next version). Auth required. Body must match /schemas/policy-v1.json — only version, wallet and chain_id are required; omitted fields take the platform defaults published in the manifest and are stored into the document, and the response lists them in `defaulted`.
Input schema
{'type': 'object', 'required': ['policy'], 'properties': {'policy': {'type': 'object', 'description': 'PolicyV1 document; {"version":1,"wallet":"0x…","chain_id":8453} is a complete one'}}}
remove_auto_topup
Remove the auto-topup rule and its unused authorizations. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {}}
renew_delegation
Renew an active delegation: same scope, fresh expiry, no authority gap. Returns a NEW digest to sign and confirm exactly like prepare_delegation. Auth required.
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'delegation id (uuid)'}, 'valid_until': {'type': 'number', 'description': 'optional new expiry, unix seconds; defaults to the original duration'}}}
resolve_pm_funder
Resolve an owner EOA to its Polymarket funder Safe candidates. Auth required.
Input schema
{'type': 'object', 'required': ['owner'], 'properties': {'owner': {'type': 'string', 'description': 'owner EOA address'}}}
revoke_delegation
Revoke a delegation. The reply includes calldata the owner can send on-chain for hard finality. Auth required.
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'delegation id (uuid)'}}}
revoke_pm_credential
Revoke a venue credential; its sealed ciphertext is destroyed. Auth required.
Input schema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'credential id (uuid)'}}}
screen_address
OFAC SDN counterparty screening for an address. Free, no auth.
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'EVM address to screen'}}}
set_auto_topup
Configure auto-topup: when the prepaid balance falls below threshold_usd, the platform settles one of the pre-signed EIP-3009 authorizations you supply (signed outside MCP — this server cannot sign). Auth required.
Input schema
{'type': 'object', 'required': ['threshold_usd', 'authorizations'], 'properties': {'max_per_month': {'type': 'number', 'description': 'cap on automatic top-ups per month (default 10)'}, 'threshold_usd': {'type': 'string', 'description': 'refill when balance drops below this, USD decimal string'}, 'authorizations': {'type': 'array', 'items': {'type': 'object', 'required': ['from', 'to', 'value', 'valid_after', 'valid_before', 'nonce', 'signature'], 'properties': {'to': {'type': 'string', 'description': 'platform recipient address'}, 'from': {'type': 'string', 'description': 'payer address'}, 'nonce': {'type': 'string', 'description': '32-byte nonce, 0x…'}, 'value': {'type': 'string', 'description': 'USDC base units, decimal string'}, 'signature': {'type': 'string', 'description': 'EIP-3009 signature, 0x…'}, 'valid_after': {'type': 'string', 'description': 'unix seconds, decimal string'}, 'valid_before': {'type': 'string', 'description': 'unix seconds, decimal string'}}}, 'description': 'pre-signed transferWithAuthorization payloads: each {from, to, value, valid_after, valid_before, nonce, signature}'}}}
start_siwe_login
Start wallet sign-in: returns a single-use SIWE message. Sign it with the wallet outside MCP (this server cannot sign), then call complete_siwe_login. Free, no auth.
Input schema
{'type': 'object', 'required': ['address'], 'properties': {'address': {'type': 'string', 'description': 'wallet address to authenticate'}, 'chain_id': {'type': 'number', 'description': '8453'}}}
store_pm_credential
Store a prediction-market venue credential (verified live against the venue, sealed at rest, material never returned). Polymarket, either shape: signer_private_key + maker (derives API creds), or api_key + secret + passphrase + maker + signer. Auth required.
Input schema
{'type': 'object', 'required': [], 'properties': {'label': {'type': 'string', 'description': 'optional display label'}, 'maker': {'type': 'string', 'description': 'Polymarket: funder (maker) address'}, 'venue': {'enum': ['polymarket'], 'type': 'string', 'default': 'polymarket', 'description': 'prediction-market venue (default polymarket)'}, 'secret': {'type': 'string', 'description': 'Polymarket: CLOB API secret (explicit-creds shape)'}, 'signer': {'type': 'string', 'description': 'Polymarket: signer address (explicit-creds shape)'}, 'api_key': {'type': 'string', 'description': 'Polymarket: CLOB API key (explicit-creds shape)'}, 'passphrase': {'type': 'string', 'description': 'Polymarket: CLOB API passphrase (explicit-creds shape)'}, 'signature_type': {'type': 'number', 'description': 'Polymarket: 0 EOA, 1 Magic/email, 2 browser proxy (default 1)'}, 'signer_private_key': {'type': 'string', 'description': 'Polymarket: signer EOA private key, 0x…'}}}
submit_feedback
Submit a feature request ($1 anti-spam fee, charged to the prepaid balance when funded). Auth required. Payment flow: call once without x_payment — a 402 reply lists the exact EIP-3009 requirements (amount, USDC asset, recipient, EIP-712 domain). Sign a transferWithAuthorization for them outside MCP (this server cannot sign), then call again with x_payment set to the base64 of {x402Version:1, scheme:'exact', network, payload:{signature, authorization}}.
Input schema
{'type': 'object', 'required': ['title', 'body'], 'properties': {'body': {'type': 'string', 'description': 'the request, 20-4000 chars'}, 'title': {'type': 'string', 'description': 'short title, 8-120 chars'}, 'x_payment': {'type': 'string', 'description': 'base64 X-PAYMENT value from a previously answered 402 (see description)'}}}
submit_pm_order
Submit a prepared Polymarket order with the maker's EIP-712 signature from prepare_pm_order. Auth required.
Input schema
{'type': 'object', 'required': ['prepare_id', 'signature'], 'properties': {'signature': {'type': 'string', 'description': "the maker's 65-byte EIP-712 signature, 0x…"}, 'prepare_id': {'type': 'string', 'description': 'prepare id (uuid) from prepare_pm_order'}}}
sync_pm_fills
Pull the venue's fills for a credential into the wallet's ledger. Idempotent — safe to repeat. Auth required.
Input schema
{'type': 'object', 'required': ['wallet', 'credential_id'], 'properties': {'wallet': {'type': 'string', 'description': 'treasury wallet whose books receive the fills'}, 'credential_id': {'type': 'string', 'description': 'stored credential id (uuid)'}}}
topup_balance
Top up the prepaid balance with USDC. Auth required. Payment flow: call once without x_payment — a 402 reply lists the exact EIP-3009 requirements (amount, USDC asset, recipient, EIP-712 domain). Sign a transferWithAuthorization for them outside MCP (this server cannot sign), then call again with x_payment set to the base64 of {x402Version:1, scheme:'exact', network, payload:{signature, authorization}}.
Input schema
{'type': 'object', 'required': ['amount_usd'], 'properties': {'x_payment': {'type': 'string', 'description': 'base64 X-PAYMENT value from a previously answered 402 (see description)'}, 'amount_usd': {'type': 'string', 'description': 'top-up amount in USD, decimal string'}}}
wrap_pm_usdc
Wrap the funder Safe's USDC.e into Polymarket's pUSD, platform-relayed so the user pays no gas. Omit amount_base_units to wrap the full balance. Auth required.
Input schema
{'type': 'object', 'required': ['credential_id'], 'properties': {'credential_id': {'type': 'string', 'description': 'stored credential id (uuid)'}, 'amount_base_units': {'type': 'string', 'description': 'optional amount in base units, decimal string'}}}
Added
wrap_pm_usdc
Sept. 17, 2026, 12:34 p.m.
Added
sync_pm_fills
Sept. 17, 2026, 12:34 p.m.
Added
resolve_pm_funder
Sept. 17, 2026, 12:34 p.m.
Added
get_pm_onboarding
Sept. 17, 2026, 12:34 p.m.
Added
submit_pm_order
Sept. 17, 2026, 12:34 p.m.
Added
prepare_pm_order
Sept. 17, 2026, 12:34 p.m.
Added
cancel_all_pm_orders
Sept. 17, 2026, 12:34 p.m.
Added
cancel_pm_order
Sept. 17, 2026, 12:34 p.m.
Added
list_pm_orders
Sept. 17, 2026, 12:34 p.m.
Added
create_pm_order
Sept. 17, 2026, 12:34 p.m.
Added
get_pm_signer_rotation
Sept. 17, 2026, 12:34 p.m.
Added
revoke_pm_credential
Sept. 17, 2026, 12:34 p.m.
Added
list_pm_credentials
Sept. 17, 2026, 12:34 p.m.
Added
store_pm_credential
Sept. 17, 2026, 12:34 p.m.
Added
remove_auto_topup
Sept. 17, 2026, 12:34 p.m.
Added
get_auto_topup
Sept. 17, 2026, 12:34 p.m.
Added
set_auto_topup
Sept. 17, 2026, 12:34 p.m.
Added
topup_balance
Sept. 17, 2026, 12:34 p.m.
Added
get_balance
Sept. 17, 2026, 12:34 p.m.
Added
panic
Sept. 17, 2026, 12:34 p.m.
Added
list_delegations
Sept. 17, 2026, 12:34 p.m.
Added
get_delegation
Sept. 17, 2026, 12:34 p.m.
Added
revoke_delegation
Sept. 17, 2026, 12:34 p.m.
Added
renew_delegation
Sept. 17, 2026, 12:34 p.m.
Added
confirm_delegation
Sept. 17, 2026, 12:34 p.m.
Added
prepare_delegation
Sept. 17, 2026, 12:34 p.m.
Added
cancel_intent
Sept. 17, 2026, 12:34 p.m.
Added
list_intents
Sept. 17, 2026, 12:34 p.m.
Added
get_intent
Sept. 17, 2026, 12:34 p.m.
Added
create_intent
Sept. 17, 2026, 12:34 p.m.