Skip to main content
The product MCP endpoint is:
FirstSales uses the MCP Streamable HTTP transport and the stable 2025-11-25 protocol revision. Clients must send JSON-RPC messages with POST and include both application/json and text/event-stream in Accept.

Authorization

The endpoint is an OAuth-protected resource. A client must obtain an access token for the canonical resource URI and send it as a bearer token:
OAuth Protected Resource Metadata is discoverable at:
The authorization server is FirstSales at https://app.firstsales.io. Its public OAuth metadata and endpoints are:
MCP clients should use dynamic public-client registration with PKCE (S256). If the user is not signed in, FirstSales sends them through the normal login flow first. The consent flow then shows every organization and accessible workspace; the user must explicitly choose the workspace boundary before approving access. The resulting token carries only those tenant grants. The token must satisfy the configured issuer, audience/resource, expiry, and scope and must carry the delegated capability required by the requested tool. Dashboard session cookies and Developer API keys are not accepted by product MCP.

Release status

The endpoint is release-gated. Until the product OAuth/delegation authority is configured and a capability is explicitly closed/released for MCP, requests fail closed or expose no tools. OAuth registration and tenant consent do not by themselves release an API action. This prevents a partially configured server from becoming an unauthenticated data or action surface.

Production activation checklist

The backend starts this route disabled unless all of these deployment values are present and valid:
Configuration alone does not release tools. A capability must also be marked closed or released for MCP in the canonical capability ledger, have a manifest-bound tenant/delegation grant, and have an explicit first-party handler binding. Until all three conditions hold, tools/list remains empty.

Protocol behavior

  • initialize, ping, tools/list, resources/list, and prompts/list use JSON-RPC.
  • Notifications return 202 Accepted without a response body.
  • Invalid Origin, protocol, media type, or authorization values fail closed.
  • Tool execution errors are returned as MCP tool results with isError: true so an agent can recover without treating a business error as a transport failure.