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. |
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>/mcpRequired 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.
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-Signaturevalid 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 Request — Invalid 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. |