The Summand MCP server is a remote, OAuth-authenticated streamable-HTTP endpoint. There is nothing to install — every client uses the same URL and follows the standard OAuth discovery flow.Documentation Index
Fetch the complete documentation index at: https://docs.summand.com/llms.txt
Use this file to discover all available pages before exploring further.
Endpoint
Authorization header.
OAuth discovery
The server implements RFC 9728 OAuth 2.0 Protected Resource Metadata. On any unauthenticated request, it returns401 with a WWW-Authenticate header pointing at:
Add it to claude.ai
Open Settings → Integrations
In claude.ai, open Settings and navigate to the integrations or connectors section.
Add a custom MCP server
Choose Add custom integration (or equivalent) and enter:
- Name: Summand
- URL:
https://mcp.summand.com/mcp
Authorize
Claude will redirect you to the Summand sign-in page. Sign in with the same account you use at summand.com. After approving, you’ll return to claude.ai with the integration enabled.
Add it to ChatGPT
ChatGPT supports remote MCP servers via the same discovery flow. Addhttps://mcp.summand.com/mcp as a custom connector and authorize when prompted.
Token lifecycle
- Tokens are issued by Summand’s identity provider and scoped to your user.
- Revoke a session at any time from your Summand account — the client will be prompted to re-authorize on its next call.
- Tokens carry the same access as the user who issued them: owned datasets plus anything explicitly shared with that user.
Limits
The endpoint runs on AWS API Gateway HTTP API. Responses are returned as JSON rather than streamed, so very large semantic components may take several seconds to come back. Use the
params filter on get_semantic_data to scope to a single feature when working with ebm_graphs.Troubleshooting
401on every call — your token expired or was revoked. Disconnect and reconnect the integration in your client.403 Forbidden— the dataset isn’t owned by or shared with your user. Check sharing in the dashboard.- Tool times out — try a narrower request (e.g. add
paramstoget_semantic_data).

