Skip to content

Serve read tools of payment connectors on the shared endpoint, not crypto - #1345

Merged
helpcodeai merged 1 commit into
mainfrom
fix/shared-endpoint-payments-readonly
Oct 30, 2026
Merged

helpcodeai merged 1 commit into
mainfrom
fix/shared-endpoint-payments-readonly

Conversation

@helpcodeai

Copy link
Copy Markdown
Contributor

Summary

The shared /mcp endpoint (the URL listed in the Claude directory) withheld every payment and banking connector, including their read tools, while it served cryptocurrency connectors (Binance, Coinbase, Deribit, ...) because they sit in the finance category.

The Anthropic Software Directory Policy, section 4A, rules out software that transfers money or executes financial transactions autonomously without human-in-the-loop safeguards, and says cryptocurrency software is not generally allowed. It does not restrict reading payment data. This aligns the default profile with that:

Connector kind Default profile (Claude, API keys, unknown clients) ChatGPT profile / ChatGPT app
payments, banking, PAYONE read tools only (was: none) none (unchanged)
cryptocurrency (sorare, binance, coinbase, deribit, coinglass, coingecko, zerion, helius, blockcypher) none (was: all but sorare) unchanged (all but sorare)
everything else all all

A tool counts as a read tool by the same readOnlyHint derivation the endpoint already uses to route run_read_tool / run_write_tool.

Changes

  • shared-toolset.ts: sharedEndpointAccess(slug, profile) (all / read / none); excludedOnSharedEndpoint and isExcludedAdapterSlug take the profile. The refusal for a withheld tool says why (money vs cryptocurrency). anythingmcp_list_connectors adds readToolsOnlyHere for connectors served partly; notServedHere keeps the connectors withheld whole.
  • In-chat setup (setup_find_connectors / setup_install_connector): SetupContext.profile, set by the controller from the OAuth client's redirect URIs, so a Claude chat can find and install payment connectors (results say servedHere: Read tools only), never cryptocurrency ones. Without a profile the stricter ChatGPT rule applies.
  • ChatGPT app toolset passes the chatgpt profile: unchanged behaviour.

Deployment modes: the shared endpoint serves the fixed tool set on Cloud by default (sharedEndpointMode); self-hosted instances default to direct and are unaffected unless they set MCP_SHARED_ENDPOINT_TOOLS=fixed. A server's own URL (/mcp/<serverId>) serves every connector as before in both modes.

Type

  • Bug fix
  • Other: directory policy alignment

Testing

  • Added/updated unit tests

Commands (worktree root unless noted):

  • cd packages/backend && npx jest src/adapters/connector-setup.service.spec.ts src/mcp-server: 29 suites, 540 tests passed.
  • cd packages/backend && npx tsc --noEmit -p tsconfig.json: clean.
  • cd packages/backend && npm test: 811 suites passed, 4 skipped (live specs); 24092 tests passed.
  • cd packages/backend && npm run lint: 0 errors, 11 existing warnings, no files rewritten.

Checklist

  • My code follows the existing code style
  • I have tested my changes locally
  • I have updated documentation (if applicable): no existing doc describes the exclusion
  • All existing tests pass (npm test)
  • This PR has a descriptive title

The Claude directory policy rules out software that moves money or
trades autonomously and, in general, cryptocurrency software. It does not
rule out reading payment data. The default (Claude) profile of the shared
endpoint now serves the read tools of payment and banking connectors and
withholds their write tools, and no longer serves cryptocurrency
connectors. The ChatGPT profile keeps its previous exclusions.
@helpcodeai
helpcodeai requested a review from D3nisty as a code owner October 30, 2026 17:17
@helpcodeai
helpcodeai merged commit 38ad10b into main Oct 30, 2026
15 checks passed
@helpcodeai
helpcodeai deleted the fix/shared-endpoint-payments-readonly branch October 30, 2026 17:26
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant