> ## Documentation Index
> Fetch the complete documentation index at: https://docs.etonecarg.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Basics

> Understand the request shape, capability discovery path, and standard call pattern used by Sports MCP Server.

# MCP Basics

Sports MCP Server uses standard MCP JSON-RPC over HTTP.

## Typical workflow

1. discover the catalog through `tools/list` or the capability manifest
2. resolve fuzzy language with [`resolve_entities`](/sports-mcp-server/tool-reference/resolve_entities) when needed
3. choose the smallest tool that matches the job
4. reuse provider refs in follow-on calls

## Standard request shape

<CodeGroup>
  ```json JSON-RPC theme={null}
  {
    "jsonrpc": "2.0",
    "id": "req-1",
    "method": "tools/call",
    "params": {
      "name": "resolve_entities",
      "arguments": {
        "query": "Knicks",
        "entityType": "participant",
        "resolutionProfile": "balanced",
        "limit": 3
      }
    }
  }
  ```

  ```bash curl theme={null}
  curl "https://sports-mcp-server.etonecarg.com/" \
    -X POST \
    -H "Authorization: Bearer $SPORTS_MCP_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
    "jsonrpc": "2.0",
    "id": "req-1",
    "method": "tools/call",
    "params": {
      "name": "resolve_entities",
      "arguments": {
        "query": "Knicks",
        "entityType": "participant",
        "limit": 3
      }
    }
  }'
  ```

  ```ts TypeScript theme={null}
  const payload = {
    jsonrpc: "2.0",
    id: "req-1",
    method: "tools/call",
    params: {
      name: "resolve_entities",
      arguments: {
        query: "Knicks",
        entityType: "participant",
        resolutionProfile: "balanced",
        limit: 3,
      },
    },
  };

  const response = await fetch("https://sports-mcp-server.etonecarg.com/", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.SPORTS_MCP_API_KEY!}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
  });

  console.log(await response.json());
  ```

  ```python Python theme={null}
  import os

  import requests

  payload = {
      "jsonrpc": "2.0",
      "id": "req-1",
      "method": "tools/call",
      "params": {
          "name": "resolve_entities",
          "arguments": {
              "query": "Knicks",
              "entityType": "participant",
              "resolutionProfile": "balanced",
              "limit": 3,
          },
      },
  }

  response = requests.post(
      "https://sports-mcp-server.etonecarg.com/",
      headers={
          "Authorization": f"Bearer {os.environ['SPORTS_MCP_API_KEY']}",
          "Content-Type": "application/json",
      },
      json=payload,
      timeout=30,
  )

  response.raise_for_status()
  print(response.json())
  ```
</CodeGroup>

## Capability discovery

<Tabs>
  <Tab title="Capability manifest">
    Fetch `GET /?view=capabilities` when the host wants a cheap, published summary of the 24-tool contract, argument expectations, and capability hints.
  </Tab>

  <Tab title="Standard MCP discovery">
    Use `tools/list` when your MCP host already performs standard tool discovery and wants the full registered tool set directly.
  </Tab>
</Tabs>

## Read this next

* [Connect and Call Tools](/sports-mcp-server/getting-started/connect-and-call-tools)
* [Tool Catalog](/sports-mcp-server/tools/tool-catalog)
