> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Sportradar MCP server

The Sportradar MCP connector routes your AI agent's tool calls to Sportradar's own MCP server through Scalekit. Each user signs in to Sportradar once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 7 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Analytics, AI, Developer Tools
**Tools:** 7: 7 read, 0 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Sportradar MCP server app
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=SPORTRADARMCP)

## What you can do

- **Search developer guides**: search Sportradar guide pages by keyword and read a full guide page
- **Explore API endpoints**: list available API specs, browse or search endpoints, and view an endpoint's parameters and security
- **Check basketball coverage**: find the coverage level offered for the Sportradar Basketball API

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Sportradar MCP connection

   In **AgentKit > Connections**, create a Sportradar MCP connection and copy its redirect URI. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

4. ### Register an OAuth app

   Sportradar MCP server connections use your own OAuth app. Register one with Sportradar MCP server and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Sportradar MCP connection.

5. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'sportradarmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Sportradar MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'sportradarmcp_get-coverage',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "sportradarmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Sportradar MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="sportradarmcp_get-coverage",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'sportradarmcp_fetch',
  toolInput: {
    id: '<id>',
  },
  connector: 'sportradarmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="sportradarmcp_fetch",
    tool_input={
        "id": "<id>",
    },
    connection_name="sportradarmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `sportradarmcp_fetch`

Fetch · Read-only

Get detailed information about a Sportradar guide page by its ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `id` (`string`, required): The ID of the guide to retrieve. Must use `search` tool to get the ID.

Example input: `{"id":"<id>"}`

### `sportradarmcp_get-coverage`

Get Coverage · Read-only

Find the coverage level for a Sportradar Basketball API.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `sportradarmcp_get-endpoint`

Get Endpoint · Read-only

Get detailed information about a specific API endpoint, including security schemes and parameters.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `method` (`string`, required): The HTTP method (e.g. GET, POST, PUT, DELETE).
- `path` (`string`, required): The API endpoint path (e.g. /api/v1/users).
- `title` (`string`, required): Title of the OpenAPI spec. Use tool 'list-specs' or 'search-endpoints' to see available specs.

Example input: `{"method":"<method>","path":"<path>","title":"<title>"}`

### `sportradarmcp_list-endpoints`

List Endpoints · Read-only

List all API paths and HTTP methods for a spec, organized by path.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `title` (`string`, required): Title of the OpenAPI spec. Use tool 'list-specs' or 'search-endpoints' to see available specs.

Example input: `{"title":"<title>"}`

### `sportradarmcp_list-specs`

List Specs · Read-only

List all available Sportradar OpenAPI specs.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs: none.

Example input: `{}`

### `sportradarmcp_search`

Search · Read-only

Search Sportradar guide pages by query and return matching results with titles and excerpts.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`string`, required): search query

Example input: `{"query":"<query>"}`

### `sportradarmcp_search-endpoints`

Search Endpoints · Read-only

Search through API paths, operations, and parameters to discover relevant endpoints.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `pattern` (`string`, required): Search pattern (case-insensitive)

Example input: `{"pattern":"<pattern>"}`

## Related

Other Analytics connectors ([all 95](/agentkit/connectors/?category=analytics)):

- [Microsoft 365](/agentkit/connectors/microsoft365/): Scalekit connector, OAuth, 317 tools
- [HubSpot](/agentkit/connectors/hubspot/): Scalekit connector, OAuth, 457 tools
- [Snowflake](/agentkit/connectors/snowflake/): Scalekit connector, OAuth, 42 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
