Cofferline
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Treasury and risk controls for agent wallets: policies, quotes, prediction-market orders.
| Author | com.cofferline |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 122 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Cofferline": {
"url": "https://mcp.cofferline.com",
"transport": "streamable-http"
}
}
}
Measured tools (47)
get_quotesLive venue quote comparison for a token conversion (CoW + ParaSwap on Base). Free, no auth.
Parameters:
sell_token(required) — string — ERC-20 address being soldbuy_token(required) — string — ERC-20 address being boughtsell_amount(required) — string — sell amount in base units, decimal stringchain_id— number — 8453 (Base)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_benchmarksMeasured execution benchmarks: median savings vs arrival quote by USD size bucket, from real completed intents only. Free, no auth.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
screen_addressOFAC SDN counterparty screening for an address. Free, no auth.
Parameters:
address(required) — string — EVM address to screen
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_tokensTokens the platform accepts on an intent, per chain — what create_intent will admit. Free, no auth.
Parameters:
chain_id— number — limit to one chain; omit for every supported chain
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_feedbackEvery feature request ever submitted, public and unauthenticated. Free.
Parameters:
limit— number — max results
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
submit_feedbackSubmit 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}}.
Parameters:
title(required) — string — short title, 8-120 charsbody(required) — string — the request, 20-4000 charsx_payment— string — base64 X-PAYMENT value from a previously answered 402 (see description)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
start_siwe_loginStart 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.
Parameters:
address(required) — string — wallet address to authenticatechain_id— number — 8453
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
complete_siwe_loginFinish 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.
Parameters:
message(required) — string — the exact SIWE message from start_siwe_loginsignature(required) — string — the wallet's signature over the message, 0x…
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_meIdentify the authenticated account: address, kind, scopes. Auth required.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
export_accountExport all of this account's data in one document. Auth required.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
offboard_accountClose 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.
Parameters:
confirm_wallet_address(required) — string — the account's wallet address, typed to confirmreason— string — optional reason, recorded
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
put_policyCreate 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`.
Parameters:
policy(required) — object — PolicyV1 document; {"version":1,"wallet":"0x…","chain_id":8453} is a complete one
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_policyList policy versions, newest first (the first entry is active). Auth required.
Parameters:
limit— number — max resultswallet— string — optional wallet filter
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
check_spendPre-flight policy check: would this spend be allowed under the wallet's policy right now? Auth required.
Parameters:
wallet(required) — string — wallet addressamount_usd(required) — string — spend amount in USD, decimal stringtoken(required) — string — token symbol, e.g. USDCcounterparty— string — optional counterparty address to screen
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
check_pm_orderPre-flight policy check for a prediction-market order: would this cost be allowed right now? Auth required.
Parameters:
wallet(required) — string — wallet addresscondition_id(required) — string — market/condition identifiercost_usd(required) — string — order cost in USD, decimal stringstate— object — optional current exposure: {market_exposure_usd, realized_loss_today_usd, total_open_exposure_usd} as decimal strings
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
poll_eventsPoll typed treasury events with a monotonic cursor (intent lifecycle, budget thresholds, reconciliation, security alerts). Auth required.
Parameters:
type— string — optional event-type filter, e.g. intent.filledlimit— number — max resultscursor— number — resume after this event idwallet— string — optional wallet filter
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_statementDeterministic monthly statement derived from the append-only ledger — same period, same bytes. Auth required.
Parameters:
wallet(required) — string — wallet addressperiod(required) — string — calendar month, YYYY-MMformat— string — 'json' (default) or 'csv'
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_intentCreate a conversion or gas_topup intent; the executor pipeline plans and fills it under policy. Auth required.
Parameters:
wallet(required) — string — wallet addresskind(required) — stringsell_token(required) — string — ERC-20 address being soldbuy_token(required) — string — ERC-20 address being boughtsell_amount(required) — string — base units, decimal stringvenues— array — optional venue overridemax_slippage_bps— number — optional per-intent slippage cap
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_intentFetch an intent, including fills and the post-trade report once filled. Auth required.
Parameters:
id(required) — string — intent id (uuid)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_intentsList intents, newest first. Auth required.
Parameters:
limit— number — max resultsoffset— number — skip this manywallet— string — optional wallet filter
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
cancel_intentCancel a planned intent (a few-second window before execution claims it). Auth required.
Parameters:
id(required) — string — intent id (uuid)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
prepare_delegationPrepare 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.
Parameters:
account(required) — string — the Kernel smart account granting scopechain_id(required) — number — 8453 (Base) or 84532 (Base Sepolia)calls(required) — array — allowed calls: each {target: contract address, selector: 0x + 4 bytes, value_limit: max native value in wei as decimal string}valid_until(required) — number — expiry, unix secondsrate_limit— object — optional {count, interval_secs}: max delegated calls per intervalvalid_after— number — optional start, unix seconds
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
confirm_delegationActivate a prepared delegation by supplying the owner's signature over its enable digest. Auth required.
Parameters:
id(required) — string — delegation id (uuid)enable_sig(required) — string — owner's 65-byte signature over the digest, 0x…owner— string — optional owner address, when it differs from the caller
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
renew_delegationRenew an active delegation: same scope, fresh expiry, no authority gap. Returns a NEW digest to sign and confirm exactly like prepare_delegation. Auth required.
Parameters:
id(required) — string — delegation id (uuid)valid_until— number — optional new expiry, unix seconds; defaults to the original duration
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
revoke_delegationRevoke a delegation. The reply includes calldata the owner can send on-chain for hard finality. Auth required.
Parameters:
id(required) — string — delegation id (uuid)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_delegationFetch one delegation. Auth required.
Parameters:
id(required) — string — delegation id (uuid)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_delegationsList delegations, newest first. Auth required.
Parameters:
limit— number — max resultsaccount— string — optional smart-account filter
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
panicEmergency 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.
Parameters:
reason— string — optional reason, recorded
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_balancePrepaid fee balance: settled credits minus fee debits. Auth required.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
topup_balanceTop 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}}.
Parameters:
amount_usd(required) — string — top-up amount in USD, decimal stringx_payment— string — base64 X-PAYMENT value from a previously answered 402 (see description)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
set_auto_topupConfigure 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.
Parameters:
threshold_usd(required) — string — refill when balance drops below this, USD decimal stringauthorizations(required) — array — pre-signed transferWithAuthorization payloads: each {from, to, value, valid_after, valid_before, nonce, signature}max_per_month— number — cap on automatic top-ups per month (default 10)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_auto_topupThe auto-topup rule and how many pre-signed authorizations remain. Auth required.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
remove_auto_topupRemove the auto-topup rule and its unused authorizations. Auth required.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
store_pm_credentialStore 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.
Parameters:
label— string — optional display labelmaker— string — Polymarket: funder (maker) addressvenue— string — prediction-market venue (default polymarket)secret— string — Polymarket: CLOB API secret (explicit-creds shape)signer— string — Polymarket: signer address (explicit-creds shape)api_key— string — Polymarket: CLOB API key (explicit-creds shape)passphrase— string — Polymarket: CLOB API passphrase (explicit-creds shape)signature_type— number — Polymarket: 0 EOA, 1 Magic/email, 2 browser proxy (default 1)signer_private_key— string — Polymarket: signer EOA private key, 0x…
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_pm_credentialsList stored venue credentials — metadata only, never material. Auth required.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
revoke_pm_credentialRevoke a venue credential; its sealed ciphertext is destroyed. Auth required.
Parameters:
id(required) — string — credential id (uuid)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_pm_signer_rotationCalldata to swap the Polymarket funder Safe's owner to a new EOA — the owner executes it outside MCP (this server cannot sign). Auth required.
Parameters:
id(required) — string — credential id (uuid)new_owner(required) — string — the replacement owner address
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_pm_orderPlace 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.
Parameters:
wallet(required) — string — treasury wallet whose policy governs the ordercredential_id(required) — string — stored credential id (uuid)action(required) — stringstate— object — optional current exposure: {market_exposure_usd, realized_loss_today_usd, total_open_exposure_usd} as decimal stringsvenue— string — prediction-market venue (default polymarket)token_id— string — Polymarket: outcome token id, decimal stringprice_usd— string — Polymarket: limit price, '0.xx'size_shares— string — Polymarket: share count, decimal stringcondition_id— string — Polymarket: market condition idclient_order_id— string — optional idempotency uuid
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_pm_ordersThe credential's resting orders straight from the venue — recover state after a disconnect. Auth required.
Parameters:
credential_id(required) — string — stored credential id (uuid)market— string — optional market filter
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
cancel_pm_orderCancel one resting prediction-market order. Auth required.
Parameters:
order_id(required) — string — the venue's order idcredential_id(required) — string — stored credential id (uuid)venue— string — prediction-market venue (default polymarket)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
cancel_all_pm_ordersCancel every resting order for the credential, optionally within one market. Auth required.
Parameters:
credential_id(required) — string — stored credential id (uuid)market— string — optional market filter
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
prepare_pm_orderPrepare 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.
Parameters:
venue(required) — stringwallet(required) — string — treasury wallet whose policy governs the ordercredential_id(required) — string — stored credential id (uuid)condition_id(required) — string — market condition idtoken_id(required) — string — outcome token id, decimal stringaction(required) — stringprice_usd(required) — string — limit price, '0.xx'size_shares(required) — string — share count, decimal stringstate— object — optional current exposure: {market_exposure_usd, realized_loss_today_usd, total_open_exposure_usd} as decimal stringsclient_order_id— string — optional idempotency uuid
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
submit_pm_orderSubmit a prepared Polymarket order with the maker's EIP-712 signature from prepare_pm_order. Auth required.
Parameters:
prepare_id(required) — string — prepare id (uuid) from prepare_pm_ordersignature(required) — string — the maker's 65-byte EIP-712 signature, 0x…
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_pm_onboardingPolymarket trade-readiness for an address: live approval status plus the calldata for anything missing (executed outside MCP — this server cannot sign). Auth required.
Parameters:
address(required) — string — the trading address to check
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
resolve_pm_funderResolve an owner EOA to its Polymarket funder Safe candidates. Auth required.
Parameters:
owner(required) — string — owner EOA address
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
sync_pm_fillsPull the venue's fills for a credential into the wallet's ledger. Idempotent — safe to repeat. Auth required.
Parameters:
wallet(required) — string — treasury wallet whose books receive the fillscredential_id(required) — string — stored credential id (uuid)
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
wrap_pm_usdcWrap 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.
Parameters:
credential_id(required) — string — stored credential id (uuid)amount_base_units— string — optional amount in base units, decimal string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.