Summary
Connecting Coinbase via Composio For You MCP (https://connect.composio.dev/mcp) with a Coinbase Developer Platform ECDSA secret API key succeeds (connection status ACTIVE), but every private/account call returns 401 Unauthorized. Public market data works.
This looks like an auth-scheme mismatch: the Connect Link accepts CDP ECDSA keys, while COINBASE_LIST_WALLETS and the toolkit proxy sign Coinbase App v2 / Exchange account endpoints that those keys cannot authorize.
Environment
- Client: Grok custom MCP connector →
https://connect.composio.dev/mcp (Composio For You)
- Toolkit:
coinbase
- Auth type:
API_KEY (CDP Secret API key, ECDSA / ES256)
- Key permissions: view only (no trade, no transfer)
- IP allowlist: empty
- Key name format: full
organizations/{org_id}/apiKeys/{key_id} + PEM BEGIN EC PRIVATE KEY
- Connection alias:
coinbase-view
- Connected account:
ca_MKNoL9Lbw1c9 / coinbase_spank-scove
- Auth config actually bound:
ac_-J9hzTQTuysz (Composio default). A user-created Platform auth config ac_uhJc_KZU4dEP was not used by For You MCP.
- Date: 2026-08-23
Reproduction
- Create a CDP Secret API key at https://portal.cdp.coinbase.com/api-keys/secret
- Signature algorithm: ECDSA (not Ed25519)
- Permission: view
- No IP allowlist
- Connect Coinbase through For You MCP Connect Link and paste the key name + PEM secret.
- Connection becomes
ACTIVE.
- Call
COINBASE_LIST_WALLETS.
- Optionally
proxy_execute GET /accounts and GET /api/v3/brokerage/accounts on toolkit coinbase.
Actual behavior
| Call |
Result |
COINBASE_GET_SERVER_TIME |
200 |
COINBASE_LIST_MARKET_PRODUCTS / COINBASE_GET_PRODUCT |
200 |
COINBASE_LIST_WALLETS |
401 on GET https://api.coinbase.com/v2/accounts |
proxy_execute GET /accounts (Exchange) |
401 Unauthorized |
proxy_execute GET /time |
200 |
proxy_execute GET /api/v3/brokerage/accounts |
404 page not found (wrong host) |
COINBASE_LIST_WALLETS is documented as “via the CDP SDK” but the live request is Coinbase App GET /v2/accounts. The toolkit proxy appears bound to Coinbase Exchange (GET /time works; GET /accounts 401s with a CDP JWT key).
Expected behavior
Either:
- Map Coinbase private account/wallet reads to Advanced Trade
GET /api/v3/brokerage/accounts (or real CDP Wallet API) and sign with CDP JWT (ECDSA), or
- Reject CDP ECDSA keys on connect if this toolkit is Exchange HMAC-only, and document that Exchange key + secret + passphrase are required.
Do not mark the connection ACTIVE if stored credentials cannot authorize the toolkit’s private tools.
Composio log IDs
Please inspect these (no secrets in this report):
log_ytNlmwbTrH8W — COINBASE_LIST_WALLETS 401 on /v2/accounts
log__T3jHtC3i8zY — proxy GET /accounts 401
log_RmuwRYqak_DV — proxy Advanced Trade path 404
log_cD6Ln92zi3fA — connection became ACTIVE (ca_MKNoL9Lbw1c9)
log_u88fn75cgkMR — public market tools succeeded
Impact
Cannot list wallets or balances through Composio Coinbase. Market data only. For You MCP also does not bind a custom Platform auth config (ac_uhJc_KZU4dEP).
Ask
Please confirm the intended Coinbase auth scheme for this toolkit (CDP JWT vs Exchange HMAC vs Coinbase App v2) and fix COINBASE_LIST_WALLETS / proxy base URL accordingly.
Summary
Connecting Coinbase via Composio For You MCP (
https://connect.composio.dev/mcp) with a Coinbase Developer Platform ECDSA secret API key succeeds (connection statusACTIVE), but every private/account call returns 401 Unauthorized. Public market data works.This looks like an auth-scheme mismatch: the Connect Link accepts CDP ECDSA keys, while
COINBASE_LIST_WALLETSand the toolkit proxy sign Coinbase App v2 / Exchange account endpoints that those keys cannot authorize.Environment
https://connect.composio.dev/mcp(Composio For You)coinbaseAPI_KEY(CDP Secret API key, ECDSA / ES256)organizations/{org_id}/apiKeys/{key_id}+ PEMBEGIN EC PRIVATE KEYcoinbase-viewca_MKNoL9Lbw1c9/coinbase_spank-scoveac_-J9hzTQTuysz(Composio default). A user-created Platform auth configac_uhJc_KZU4dEPwas not used by For You MCP.Reproduction
ACTIVE.COINBASE_LIST_WALLETS.proxy_executeGET /accountsandGET /api/v3/brokerage/accountson toolkitcoinbase.Actual behavior
COINBASE_GET_SERVER_TIMECOINBASE_LIST_MARKET_PRODUCTS/COINBASE_GET_PRODUCTCOINBASE_LIST_WALLETSGET https://api.coinbase.com/v2/accountsproxy_execute GET /accounts(Exchange)Unauthorizedproxy_execute GET /timeproxy_execute GET /api/v3/brokerage/accountspage not found(wrong host)COINBASE_LIST_WALLETSis documented as “via the CDP SDK” but the live request is Coinbase AppGET /v2/accounts. The toolkit proxy appears bound to Coinbase Exchange (GET /timeworks;GET /accounts401s with a CDP JWT key).Expected behavior
Either:
GET /api/v3/brokerage/accounts(or real CDP Wallet API) and sign with CDP JWT (ECDSA), orDo not mark the connection
ACTIVEif stored credentials cannot authorize the toolkit’s private tools.Composio log IDs
Please inspect these (no secrets in this report):
log_ytNlmwbTrH8W—COINBASE_LIST_WALLETS401 on/v2/accountslog__T3jHtC3i8zY— proxyGET /accounts401log_RmuwRYqak_DV— proxy Advanced Trade path 404log_cD6Ln92zi3fA— connection became ACTIVE (ca_MKNoL9Lbw1c9)log_u88fn75cgkMR— public market tools succeededImpact
Cannot list wallets or balances through Composio Coinbase. Market data only. For You MCP also does not bind a custom Platform auth config (
ac_uhJc_KZU4dEP).Ask
Please confirm the intended Coinbase auth scheme for this toolkit (CDP JWT vs Exchange HMAC vs Coinbase App v2) and fix
COINBASE_LIST_WALLETS/ proxy base URL accordingly.