Skip to content
grostifyConnectDocs

MCP server reference

Technical reference of the MCP server of each integration. Transport, authorization, the tool list, errors and limits.

On this page

You do not need this page to publish your API. It is for teams that want to know exactly what the MCP clients see, or connect a client of their own.

Endpoint

Text
POST https://connect.grostify.com/t/{slug}/mcp
PropertyValue
TransportStreamable HTTP, stateless. One JSON-RPC 2.0 message per POST, answered as application/json.
Not supportedServer sent events, batches and Mcp-Session-Id. GET and DELETE answer 405.
Protocol versions2025-11-25, 2025-06-18 and 2025-03-26
BodyUp to 1 MB
AvailabilityOnly integrations that are live with a verified domain. The rest answer 404.

Notifications answer 202 without a body.

Authorization

The server follows the MCP authorization spec with OAuth 2.1. A request without a token answers 401 with:

HTTP
WWW-Authenticate: Bearer resource_metadata="https://connect.grostify.com/.well-known/oauth-protected-resource/t/acme/mcp", scope="mcp:tools"

Metadata

DocumentURL
Protected resource (RFC 9728)/.well-known/oauth-protected-resource/t/{slug}/mcp
Authorization server (RFC 8414)/.well-known/oauth-authorization-server/t/{slug}

The issuer is https://connect.grostify.com/t/{slug}, with these endpoints under it: /oauth/authorize, /oauth/token, /oauth/revoke and /oauth/register.

Clients

  • Client ID metadata documents of Claude, Claude Code and ChatGPT.
  • Dynamic client registration (RFC 7591) for public clients whose redirect is Claude's or ChatGPT's callback, or a loopback address (localhost or 127.0.0.1).

Flow

ParameterValue
GrantAuthorization code with PKCE S256
resourceThe MCP address, exactly
Scopesmcp:tools (always) and offline_access
Client authenticationnone or private_key_jwt

Tokens

TokenLifetime
Authorization code60 seconds, single use
Access token (JWT ES256)15 minutes
Refresh token30 days, renewed on each use

Revoking a token at /oauth/revoke closes the whole connection.

Tools

tools/list returns, in a single page and sorted by name, the tools enabled in the channel of the connection.

JSON
{  "name": "acme_track_shipment",  "title": "Track a shipment",  "description": "Returns the status of a shipment by its tracking number...",  "inputSchema": {    "type": "object",    "properties": {      "tracking_number": { "type": "string", "description": "Tracking number, for example ACM4820193746." }    },    "required": ["tracking_number"],    "additionalProperties": false  },  "annotations": { "readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": true }}

listChanged is false. A client sees changes in the next conversation.

Errors

Errors in the tool itself come back as a result with isError: true and a message for the model:

SituationMessage
Missing argumentMissing required argument "x".
Unknown argumentUnknown argument "x".
Your API took too longThe API did not answer in time.
Your API answered 401The API rejected the credential. The user must reconnect the account.
Your API answered 403The user has no permission for this in the company's system.
Your API answered 404Not found. API said: ...
Your API answered 429The API is rate limiting. Try again later.
Your API answered 5xxThe API failed. Try again later.
Rate limit of the connectionToo many requests for this connection. Wait a minute and try again.
Session in your system expiredThe connection to Acme expired. Reconnect the connector.

A tool that does not exist or is not enabled answers the JSON-RPC error -32602 Unknown tool.

Rate limits

ScopeLimit
Requests per connection300 per minute and 10,000 per day
Requests per integration3,000 per minute
Requests without a valid token, per IP60 per minute

Every authenticated MCP request counts toward these limits, not only tool calls: initialize, tools/list and notifications too.