GET https://api.prime.coinbase.com/v1/portfolios to list portfolios; capture portfolio_id
GET https://api.prime.coinbase.com/v1/portfolios/{portfolio_id}/balances?balance_type=TRADING_BALANCES to retrieve spot balances; use balance_type=VAULT_BALANCES for custody balances
GET https://api.prime.coinbase.com/v1/portfolios/{portfolio_id}/wallets to enumerate wallets and their wallet_ids for downstream transfer operations
Known gotchas
The signature timestamp must be within 30 seconds of the server clock; Coinbase Prime returns 401 INVALID_SIGNATURE for stale timestamps — use NTP-synced time sources
Prime API scopes are set per API key in the console; a key without the Wallets:Read scope returns 403 on /wallets even with valid authentication
Custody balances and trading balances are separate sub-accounts; querying TRADING_BALANCES will not show assets held in vault custody — use VAULT_BALANCES or TOTAL_BALANCES
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp