3GPT API

Semantic search over 3GPP technical specifications — 3,200+ documents across multiple releases, with full text and image search powered by state-of-the-art embeddings and reranking.

3,200+
Documents
290K+
Sections indexed
2
Releases (Rel-15, Rel-19)

The 3GPT API lets you search across the full text of 3GPP specifications using natural language. Your query is semantically matched against indexed content, reranked for precision, and returned with the matching text along with full section context.

All endpoints are read-only and require an API key for access.

Base URL

https://api.3gppscout.com

All endpoints are relative to this base URL. The API is served over HTTPS only.

Quick Start

Search for anything in the 3GPP spec corpus with a single request:

Request
curl -X POST https://api.3gppscout.com/search/text \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "How does RRC connection setup work in NR?",
    "rerank_top_k": 5
  }'
Response (abbreviated)
{
  "query": "How does RRC connection setup work in NR?",
  "results": [
    {
      "id": 42,
      "doc_number": "38.331",
      "doc_type": "TS",
      "version": "19.1.0",
      "release": "Rel-19",
      "section_number": "5.3.3",
      "section_title": "RRC connection establishment",
      "content": "The purpose of this procedure is to establish an RRC connection...",
      "similarity": 0.8234,
      "relevance_score": 0.9512,
      "section_text": "...full section text..."
    }
  ],
  "total": 5,
  "reranked": true,
  "elapsed_ms": 420.3
}

That's it. The API handles search, content retrieval, and reranking in a single call.

Authentication

All API requests require a valid API key passed as a Bearer token in the Authorization header.

Authorization Header
Authorization: Bearer YOUR_API_KEY

Getting an API Key

Sign in to the 3GPP Scout Dashboard and navigate to API Keys to create and manage your keys.

Error Responses

StatusMeaning
401Missing, malformed, or invalid API key
401API key has been deactivated

The /health, /docs, and /images endpoints do not require authentication.

Filtering

All search endpoints support metadata filters that narrow results before similarity matching. Filters are applied server-side for efficient pre-filtering.

FilterExample ValueDescription
filter_release"Rel-19"3GPP release (Rel-15 and Rel-19 currently indexed)
filter_doc_type"TS"Document type — TS (technical specification) or TR (technical report)
filter_doc_number"38.331"Specific document number
filter_series"38"3GPP series (e.g. 38 = NR/5G, 23 = system architecture)
filter_section_number"5.4"Exact section number (text search only)

Filters can be combined. For example, filter_series: "38" + filter_release: "Rel-19" searches only the latest 5G NR specs.

Reranking

Text search results are reranked by default using a cross-encoder reranking model. The flow is:

  1. Embed query → retrieve match_count nearest matches (default 50)
  2. Fetch the text content for each match
  3. Pass query + all candidate texts to the reranker
  4. Return the top rerank_top_k results sorted by relevance score

Reranked results include both similarity (semantic similarity, 0–1) and relevance_score (reranker output, 0–1). The relevance score is generally a better signal for result quality.

Set "rerank": false to skip reranking and return results sorted by similarity only.

List Documents

GET /documents

Returns metadata for available documents. Use filters to check if a specific document is indexed (fast) — without filters returns all ~3,200 documents (slower, cached for 60 minutes).

Query Parameters

ParameterTypeDescription
doc_numberstringFilter by document number, e.g. "38.811". Recommended — avoids scanning all documents.
releasestringFilter by release, e.g. "Rel-19"
seriesstringFilter by series, e.g. "38"
doc_typestringFilter by type: "TS" or "TR"

Examples

Check if a specific document is indexed
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.3gppscout.com/documents?doc_number=38.811"
List all TR documents in Rel-19
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.3gppscout.com/documents?doc_type=TR&release=Rel-19"
▶ Show example response
[
  {
    "id": 1,
    "doc_number": "38.811",
    "doc_type": "TR",
    "version": "15.4.0",
    "release": "Rel-15",
    "series": "38",
    "title": null,
    "filename": "38811-f40.zip",
    "total_text_chunks": 812,
    "total_image_chunks": 45,
    "status": "complete"
  }
]

Get Document

GET /documents/{document_id}

Fetch a single document by its numeric ID (as returned by /documents).

Path Parameters

ParameterTypeDescription
document_id requiredintNumeric document ID

Example

curl -H "Authorization: Bearer YOUR_API_KEY" \
  https://api.3gppscout.com/documents/42

Get Sections

GET /sections

Fetch full section text by section number. Section numbers are not unique across documents — always provide doc_number to narrow results.

Query Parameters

ParameterTypeDescription
section_number requiredstringSection to look up, e.g. "5.3.3"
doc_numberstringDocument number, e.g. "38.331"
versionstringVersion, e.g. "19.1.0"
releasestringRelease, e.g. "Rel-19"
prefixboolMatch sub-sections too (e.g. "5.4" matches "5.4.1", "5.4.6"). Default false

Example

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.3gppscout.com/sections?section_number=5.3.3&doc_number=38.331&release=Rel-19"

Table of Contents

GET /sections/toc

Lists all section numbers and titles for a document without full text — useful for browsing a spec's structure.

Query Parameters

ParameterTypeDescription
doc_number requiredstringDocument number, e.g. "38.321"
versionstringVersion, e.g. "19.1.0"

Example

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.3gppscout.com/sections/toc?doc_number=38.321"

Get Image

GET /images/{doc_number}/{version}/{image_index}

Serve an extracted figure or diagram as a PNG image. The image_path field from image search results maps directly to this endpoint.

Path Parameters

ParameterTypeDescription
doc_number requiredstringDocument number, e.g. "38.300"
version requiredstringDocument version, e.g. "19.1.0"
image_index requiredintImage index within the document (from search results)

Response

Returns the raw PNG bytes with Content-Type: image/png. No JSON wrapper.

StatusMeaning
200PNG image bytes
404Image not found for this document/version/index
No authentication required. Image URLs are designed to be embeddable directly in <img> tags, chat messages, or markdown without needing an API key.

Usage with Image Search

The typical flow is: search for images, then use the image_path from results to fetch the actual PNG.

# 1. Search for images
curl -X POST https://api.3gppscout.com/search/images \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "user plane protocol stack", "filter_doc_number": "38.300"}'

# Response includes: "image_path": "/images/38.300/19.1.0/8"

# 2. Fetch the image (no auth needed)
curl https://api.3gppscout.com/images/38.300/19.1.0/8 --output figure.png

Embedding in HTML

<img src="https://api.3gppscout.com/images/38.300/19.1.0/8"
     alt="User Plane Protocol Stack (TS 38.300)" />

MCP Server

The 3GPP Scout API includes an MCP (Model Context Protocol) server, allowing AI agents in Cursor, Claude Desktop, VS Code, and other MCP clients to use the API as a tool directly.

Add to Cursor (one click)

Add to Cursor

Clicking the button opens Cursor and installs the 3GPP Scout MCP server automatically.

Manual Configuration

For Cursor, add to .cursor/mcp.json in your workspace or user settings:

{
  "mcpServers": {
    "3gpp-scout": {
      "url": "https://api.3gppscout.com/mcp/",
      "transport": "streamable-http"
    }
  }
}

For Claude Desktop, add to claude_desktop_config.json:

{
  "mcpServers": {
    "3gpp-scout": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://api.3gppscout.com/mcp/"
      ]
    }
  }
}

Authentication

The MCP server uses OAuth 2.1 — no API key is needed in the config. On first use, your browser will open for you to sign in with your 3GPP Scout account. After approving access, the MCP client handles tokens automatically.

Available Tools

Once connected, your agent has access to all API endpoints as MCP tools:

  • search_text — semantic search over specification text
  • search_images — search diagrams, figures, and tables
  • search_combined — text + image search in one call
  • list_documents / get_document — browse available documents
  • get_sections / list_sections — fetch section text and table of contents
  • get_image — fetch extracted figures as PNG images

MCP Resource

The MCP server also provides a scout://skill-guide resource — a comprehensive guide your agent can read to understand the API, recommended workflows, and best practices.

Skill File

For agents that don't support MCP, we provide a Skill File — a standalone markdown document containing everything an LLM agent needs to use the API effectively: endpoints, parameters, workflows, and tips.

Download

https://api.3gppscout.com/skill.md

How to Use

  1. Download or copy the file from the link above
  2. Save it as SKILL.md in your project (e.g. .cursor/skills/3gpp-scout/SKILL.md)
  3. Your agent will read it automatically and know how to call the API

The skill file covers the same information as the MCP resource (scout://skill-guide) but works with any agent framework — just include it in the agent's context.

OpenClaw

The 3GPP Scout skill is published on ClawHub, the skill registry for OpenClaw. If you use an OpenClaw-compatible agent, you can install the skill directly from the registry.

Install

https://clawhub.ai/chriscarrotlabs/3gpp-scout

Configure your API key

Once installed, set your API key as the SCOUT_API_KEY environment variable:

export SCOUT_API_KEY="sk-your-key-here"

Or add it to ~/.openclaw/openclaw.json under skills."3gpp-scout".env.SCOUT_API_KEY.

The ClawHub listing has passed OpenClaw's security scan (benign, high confidence) and is updated whenever the skill file here changes.

Models & Embeddings

The API uses three Voyage AI models:

ModelPurposeDimensions
voyage-context-3Text query & chunk embedding1024
voyage-multimodal-3Image query & chunk embedding1024
rerank-2Cross-encoder reranking for text results

Text chunks are contextualized embeddings — each chunk is embedded along with metadata about the document and section it belongs to, improving retrieval quality for domain-specific queries.

Architecture

The API is a stateless server backed by cloud infrastructure:

  Client Request
       │
       ▼
  ┌──────────────────────┐
  │      3GPT API        │  api.3gppscout.com
  └──────────┬───────────┘
             │
   ┌─────────┼──────────┬──────────┐
   ▼         ▼          ▼          ▼
Embedding   Vector     Content    Image
 Model      Search     Store      Store
                     (text/JSON)  (PNGs)

Request flow for text search:

  1. Embed the query string using the text embedding model
  2. Run vector similarity search with optional metadata filters
  3. Resolve matches to their source document and chunk
  4. Fetch chunk text and section context
  5. Optionally rerank candidates for higher precision
  6. Return the final results

Request flow for image serving:

  1. Image search returns results with image_path (e.g. /images/38.300/19.1.0/8)
  2. Client fetches the image URL directly
  3. API proxies the PNG from Google Cloud Storage

Corpus Coverage

The current index covers two complete 3GPP releases:

ReleaseDocumentsSections
Rel-151,493195,216
Rel-191,789291,478
Total3,282486,694

Additional releases (Rel-16 through Rel-18, Rel-20) are being processed and will be added incrementally.

Processing Pipeline

Each document goes through a multi-stage pipeline: parsing, semantic chunking, embedding, section extraction, and image extraction. The chunking stage produces optimized chunks of 400–800 tokens for high-quality retrieval. Images are extracted as individual PNGs and served via the /images endpoint.

Health Check

GET /health

Returns API status and model info. Use this to verify the server is running.

Example

curl https://api.3gppscout.com/health
▶ Show example response
{
  "status": "ok",
  "version": "0.2.0",
  "models": {
    "text_embedding": "voyage-context-3",
    "image_embedding": "voyage-multimodal-3",
    "reranker": "rerank-2"
  }
}

OpenAPI / Swagger

The auto-generated interactive API docs are available at /swagger (Swagger UI) and /redoc (ReDoc). The raw OpenAPI schema is at /openapi.json.