Setup

Setup

Prerequisites

What you need How to get it
Access key Contact your account manager. The key is issued to your integration and is used as a Bearer token.
Gateway base URL Provided as part of your integration, together with the key.
An MCP client Any client that supports MCP over HTTP — Claude Code, Cursor, and others. Not required if you only want to call the endpoint directly with curl.
Treat the key as a secret

The access key does not expire. Store it the same way you store your Groove security key: keep it out of source control, out of shared documents, and out of client-side code. If it leaks, contact your account manager so it can be rotated.

Endpoint

POST https://<sinatra-gateway>/mcp

Required headers

Header Value
Authorization Bearer <your-access-key>
Content-Type application/json

The body is a standard JSON-RPC 2.0 message. Responses are returned as application/json.

Note

The endpoint is stateless — no session handshake is needed and no session header has to be echoed back. You can call tools/list or tools/call straight away. Server-to-client streaming (SSE) is disabled; every call is a plain request/response.

Option 1 — Connect an AI client

This is the normal way to use the MCP. Configure it once and your assistant handles the protocol for you.

Claude Code

claude mcp add --transport http groove https://<sinatra-gateway>/mcp \
  --header "Authorization: Bearer <your-access-key>"

Cursor and other MCP clients

Add the server to your client’s mcp.json:

{
  "mcpServers": {
    "groove": {
      "url": "https://<sinatra-gateway>/mcp",
      "headers": {
        "Authorization": "Bearer <your-access-key>"
      }
    }
  }
}

Once connected, your client lists 9 tools (see Available Tools). You can then simply ask, for example:

  • “Show me the spec for the Wager endpoint.”
  • “Sign this request with key X: request=getaccount&…
  • “Is this X-Groove-Signature valid for this request?”
  • “Generate a Python snippet for the Result endpoint.”
  • “Generate a full Go project for the Groove integration.”

Verify the connection

Ask your assistant to call get_server_info. A working connection reports the server name (groove-mcp), its version, and the number of endpoints it has loaded.

Option 2 — Call it directly over HTTP

The MCP is an ordinary HTTPS API, so you can use it from curl, Postman, or your own code — useful for a quick smoke test or for scripting signature checks in CI.

List the available tools

curl --location 'https://<sinatra-gateway>/mcp' \
--header 'Authorization: Bearer <your-access-key>' \
--header 'Content-Type: application/json' \
--data '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}'

Call a tool

Every tool is invoked with method: "tools/call", the tool name, and its arguments:

curl --location 'https://<sinatra-gateway>/mcp' \
--header 'Authorization: Bearer <your-access-key>' \
--header 'Content-Type: application/json' \
--data '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "sign_request",
    "arguments": {
      "integration": "regular",
      "query": "request=getaccount&gamesessionid=123_jdhdujdk&accountid=111&device=desktop&apiversion=1.2",
      "key": "test_key"
    }
  }
}'

Response:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "X-Groove-Signature: be426d042cd71743970779cd6ee7881d71d1f0eb769cbe14a0081c29c8ef2a09"
      }
    ],
    "isError": false
  }
}

Troubleshooting

Symptom Cause / fix
401 Unauthorized The Authorization header is missing, malformed, or the key is no longer valid. Check the header is exactly Bearer <key>; if it still fails, contact your account manager.
400 Bad RequestInvalid content type Add Content-Type: application/json.
404 Not Found The MCP is not enabled on that gateway, or the base URL is wrong. Confirm the base URL for your environment with your account manager.
413 Payload Too Large The request body exceeds the 4 MiB limit. Tool calls are small — this normally means the wrong payload was sent.
Client connects but lists no tools The client is not using the HTTP transport, or the Authorization header is not being sent.