> ## 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.

# Get Series Hub

> Return one compact series bundle with seasons, upcoming events, leaderboard refs, and phase refs for tours and motorsports.

Canonical tool name: `get_series_hub`

Family: [Hybrid Bundle Tools](/sports-mcp-server/tools/hybrid-bundle-tools)

## What this tool is best at

Return one compact series bundle with series seasons, bounded event rows, leaderboard refs, and phase refs for tours and motorsports.

## Choose this tool when

* the product needs one tour or series surface instead of stitching schedule, rankings, and phase discovery together.
* Source ownership: GSD Lookup primary

## Use something smaller or different when

* the host only needs a single schedule list, one leaderboard, or one phase/session result slice.

## Inputs you need

### Plain-English prerequisites

* This tool does not require a prerequisite ID beyond the scoped inputs shown below.

### Required inputs in the public contract

* None.

### Optional inputs in the public contract

| Input             | What it means                                                                                                                                                    |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `seriesId`        | Series ref for the broader tour scope such as Formula 1, ATP, PGA Tour, or LPGA Tour.                                                                            |
| `seriesSeasonId`  | Series-season ref when the experience is anchored to one tour season.                                                                                            |
| `timeFrom`        | Optional bounded window start for series schedule items. When omitted, the hub applies a live-facing default browse window instead of unbounded schedule fanout. |
| `timeTo`          | Optional bounded window end for series schedule items. Pair it with `timeFrom` when the product needs an explicit browse horizon.                                |
| `includeSections` | Optional section allow-list such as `seasons`, `schedule`, `rankings`, or `phases`.                                                                              |
| `rowLimit`        | Optional cap for repeated rows such as schedule items or ranking preview rows.                                                                                   |
| `language`        | Optional BCP 47 language hint such as `en-US`. Use it when the host needs translated provider output.                                                            |

### Notes on optional inputs

* If `timeFrom` and `timeTo` are omitted, the hub applies a bounded default schedule window of roughly 6 hours lookback and 7 days lookahead. It does not perform an unbounded series crawl.
* If one time edge is provided, provide both.

## Sequencing guidance

| Needed ID or scope | Call this first                                       | Then use                                                                                                      |
| ------------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| scope              | [Tool Catalog](/sports-mcp-server/tools/tool-catalog) | Start from the smallest tool that can safely anchor the workflow, then deepen only if the user asks for more. |

## Response highlights

* Return one compact series bundle with series seasons, bounded event rows, leaderboard refs, and phase refs for tours and motorsports.

## Response shape

| Field                                                                                       | What it means                                                            |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `data.seasons[]`                                                                            | Merged season candidates for the selected series.                        |
| `data.items[]`                                                                              | Bounded schedule preview rows for the default or caller-provided window. |
| `data.overallRefs[] / data.classificationRefs[] / data.phaseRefs[]`                         | Actionable refs for rankings and phase/session deepening.                |
| `data.rankingPreview[]`                                                                     | Preview leaderboard rows from the selected best ranking view.            |
| `data.rankingPreviewRefId / data.rankingPreviewRefType / data.rankingPreviewRowsSourcePath` | Selection metadata for the preview ranking block.                        |

## Reuse next

* Reuse provider refs returned by this tool to avoid resolving the same entity again.
* Read `meta.agentHints.recommendedNextTools` and `meta.agentHints.disambiguationOptions` as non-binding host hints.

## Example requests

<Tabs>
  <Tab title="Recommended request">
    <CodeGroup>
      ```json JSON-RPC theme={null}
      {
        "jsonrpc": "2.0",
        "id": "tool-call-1",
        "method": "tools/call",
        "params": {
          "name": "get_series_hub",
          "arguments": {
            "seriesId": "SERIES_ID",
            "timeFrom": "2026-04-08T00:00:00Z",
            "timeTo": "2026-04-15T00:00:00Z"
          }
        }
      }
      ```

      ```bash curl theme={null}
      curl "https://sports-mcp-server.etonecarg.com/" \
        -X POST \
        -H "Authorization: Bearer $SPORTS_MCP_API_KEY" \
        -H "Accept: application/json, text/event-stream" \
        -H "Content-Type: application/json" \
        -H "mcp-protocol-version: 2025-03-26" \
        -d '{
        "jsonrpc": "2.0",
        "id": "tool-call-1",
        "method": "tools/call",
        "params": {
          "name": "get_series_hub",
          "arguments": {
            "seriesId": "SERIES_ID",
            "timeFrom": "2026-04-08T00:00:00Z",
            "timeTo": "2026-04-15T00:00:00Z"
          }
        }
      }'
      ```

      ```ts TypeScript theme={null}
      const payload = {
          "jsonrpc": "2.0",
          "id": "tool-call-1",
          "method": "tools/call",
          "params": {
            "name": "get_series_hub",
            "arguments": {
              "seriesId": "SERIES_ID",
              "timeFrom": "2026-04-08T00:00:00Z",
              "timeTo": "2026-04-15T00:00:00Z"
            }
          }
        };

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

      const data = await response.json();
      console.log(JSON.stringify(data, null, 2));
      ```

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

      import requests

      payload = {
        "jsonrpc": "2.0",
        "id": "tool-call-1",
        "method": "tools/call",
        "params": {
          "name": "get_series_hub",
          "arguments": {
            "seriesId": "SERIES_ID",
            "timeFrom": "2026-04-08T00:00:00Z",
            "timeTo": "2026-04-15T00:00:00Z"
          }
        }
      }

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

      response.raise_for_status()
      print(json.dumps(response.json(), indent=2))
      ```
    </CodeGroup>
  </Tab>

  <Tab title="Expanded request">
    <CodeGroup>
      ```json JSON-RPC theme={null}
      {
        "jsonrpc": "2.0",
        "id": "tool-call-1",
        "method": "tools/call",
        "params": {
          "name": "get_series_hub",
          "arguments": {
            "seriesSeasonId": "SERIES_SEASON_ID",
            "includeSections": [
              "schedule",
              "rankings"
            ],
            "rowLimit": 10,
            "timeFrom": "2026-04-08T00:00:00Z",
            "timeTo": "2026-04-15T00:00:00Z"
          }
        }
      }
      ```

      ```bash curl theme={null}
      curl "https://sports-mcp-server.etonecarg.com/" \
        -X POST \
        -H "Authorization: Bearer $SPORTS_MCP_API_KEY" \
        -H "Accept: application/json, text/event-stream" \
        -H "Content-Type: application/json" \
        -H "mcp-protocol-version: 2025-03-26" \
        -d '{
        "jsonrpc": "2.0",
        "id": "tool-call-1",
        "method": "tools/call",
        "params": {
          "name": "get_series_hub",
          "arguments": {
            "seriesSeasonId": "SERIES_SEASON_ID",
            "includeSections": [
              "schedule",
              "rankings"
            ],
            "rowLimit": 10,
            "timeFrom": "2026-04-08T00:00:00Z",
            "timeTo": "2026-04-15T00:00:00Z"
          }
        }
      }'
      ```

      ```ts TypeScript theme={null}
      const payload = {
          "jsonrpc": "2.0",
          "id": "tool-call-1",
          "method": "tools/call",
          "params": {
            "name": "get_series_hub",
            "arguments": {
              "seriesSeasonId": "SERIES_SEASON_ID",
              "includeSections": [
                "schedule",
                "rankings"
              ],
              "rowLimit": 10,
              "timeFrom": "2026-04-08T00:00:00Z",
              "timeTo": "2026-04-15T00:00:00Z"
            }
          }
        };

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

      const data = await response.json();
      console.log(JSON.stringify(data, null, 2));
      ```

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

      import requests

      payload = {
        "jsonrpc": "2.0",
        "id": "tool-call-1",
        "method": "tools/call",
        "params": {
          "name": "get_series_hub",
          "arguments": {
            "seriesSeasonId": "SERIES_SEASON_ID",
            "includeSections": [
              "schedule",
              "rankings"
            ],
            "rowLimit": 10,
            "timeFrom": "2026-04-08T00:00:00Z",
            "timeTo": "2026-04-15T00:00:00Z"
          }
        }
      }

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

      response.raise_for_status()
      print(json.dumps(response.json(), indent=2))
      ```
    </CodeGroup>
  </Tab>
</Tabs>

## Related tools

### Previous-step tools

* [`resolve_entities`](/sports-mcp-server/tool-reference/resolve_entities)
* [`list_schedule`](/sports-mcp-server/tool-reference/list_schedule)

### Next-step tools

* [`get_rankings`](/sports-mcp-server/tool-reference/get_rankings)
* [`get_phase_results`](/sports-mcp-server/tool-reference/get_phase_results)
* [`list_watchable_schedule`](/sports-mcp-server/tool-reference/list_watchable_schedule)

### Alternative tools

* No common alternatives.

## Prompt patterns this tool fits

* Use `get_series_hub` when the host already knows the right scope and needs this job directly.

## Common mistakes

* Calling `get_series_hub` before the host has the right provider refs or bounded window.
* Using `get_series_hub` when a smaller sibling tool would answer the question more directly.
