You have access to the 3GPP Scout API, a semantic search engine over 3GPP technical specifications. Use it to find specific information in 3GPP standards documents (TS and TR series).
Provider: Carrot Labs Homepage: 3gppscout.com Dashboard: dashboard.3gppscout.com API Docs: api.3gppscout.com/docs Terms of Service: 3gppscout.com/terms Privacy Policy: 3gppscout.com/privacy
Direct REST, MCP, and BYOK hosted-chat retrieval share a monthly request allowance. The Explorer plan includes 150 requests per UTC calendar month. Founding Engineer includes 1,000 requests per calendar month for $8/month. Enterprise limits follow the active agreement. View usage or upgrade at dashboard.3gppscout.com/dashboard/billing.
text
https://api.3gppscout.com
All search and document endpoints require a Bearer token (API key).
How to get an API key:
sk-Set your API key via environment variable:
text
export SCOUT_API_KEY="sk-your-key-here"
Or set skills."3gpp-scout".apiKey / skills."3gpp-scout".env.SCOUT_API_KEY in ~/.openclaw/openclaw.json.
The key is included in every request as a Bearer token:
text
Authorization: Bearer $SCOUT_API_KEY
For Cursor, Claude, Codex, or another MCP client, fetch and follow:
text
https://api.3gppscout.com/agent-setup/prompt.md
The hosted Streamable HTTP MCP URL is:
text
https://api.3gppscout.com/mcp/
MCP uses OAuth 2.1, so no Scout API key belongs in the MCP configuration. The
first connection or tool call opens a browser for sign-in. After authorization,
verify the connection by calling list_documents with doc_number="38.331"
and release="Rel-19"; keep both filters so verification returns a small list.
REST API keys, OAuth-authenticated MCP tools, and BYOK hosted-chat retrieval
share the same request allowance. Regular Scout-funded hosted chat uses
prepaid credits instead. If a tool or endpoint returns HTTP 402, inspect the error's
detail object. The stable machine-readable code is
api_quota_exhausted, and the response includes:
current_planused, limit, and remainingreset_at as a UTC timestampupgrade.plan ( Founding Engineer)upgrade.price ( 8 USD per month)upgrade.requests_per_month ( 1000)upgrade.url ( https://dashboard.3gppscout.com/dashboard/billing)Do not retry repeatedly while remaining is zero. Wait until reset_at or
present the absolute upgrade.url to the user. FastMCP-generated tools expose
the same FastAPI error payload.
Semantic search over specification text. This is your primary tool.
Request body (JSON):
ParameterTypeDefaultDescriptionquerystring—Required. Natural language search querymatch_countint30Candidate matches before reranking (1–200)match_thresholdfloat0.0Minimum similarity score (0–1)rerankbooltrueRerank results for higher precisionrerank_top_kint10Results to keep after reranking (1–50)include_section_textbooltrueInclude the full parent section textdeduplicatebooltrueCollapse duplicates across releases/versions; see also_infilter_releasestringnulle.g. "Rel-19", "Rel-15"filter_doc_typestringnull"TS" or "TR"filter_doc_numberstringnulle.g. "38.331", "23.501"filter_seriesstringnulle.g. "38" (NR/5G), "23" (system architecture)filter_section_numberstringnulle.g. "5.3.3"
Response fields:
FieldTypeDescriptionquerystringEcho of the search queryresultsTextResult[]Matching text chunkstotalintNumber of results returnedrerankedboolWhether reranking was appliedelapsed_msfloatServer processing time in ms
Each TextResult contains:
doc_number, doc_type, version, release — document metadatasection_number, section_title — which section the chunk is fromcontent — the matched text chunksimilarity — semantic similarity score (0–1)relevance_score — reranker score (0–1), present when rerankedsection_text — full parent section text (when include_section_text=true)section_token_count — token count of the parent sectionalso_in — when deduplicate is true, other releases/versions that matched the same section (each entry has release, version, and scores)Semantic search over figures, diagrams, and tables in specifications.
Request body (JSON):
ParameterTypeDefaultDescriptionquerystring—Required. Natural language querymatch_countint10Number of results (1–50)match_thresholdfloat0.3Minimum similarity (0–1)deduplicatebooltrueCollapse duplicates across releases/versions; see also_infilter_releasestringnulle.g. "Rel-19"filter_doc_numberstringnulle.g. "38.300"filter_seriesstringnulle.g. "38"
Each ImageResult contains:
doc_number, doc_type, version, release — document metadatasection_number — which section the image is incaption — figure/table captioncontext_before, context_after — surrounding textimage_path — path to the image filesimilarity — semantic similarity scorealso_in — when deduplicate is true, other releases/versions for the same figure (each entry has release, version, and similarity)Text + image search in a single request. Useful for broad questions where both text passages and diagrams are relevant.
Request body (JSON):
ParameterTypeDefaultDescriptionquerystring—Required. Natural language querytext_match_countint30Text candidates before reranking (1–200)text_match_thresholdfloat0.0Text similarity threshold (0–1)rerankbooltrueRerank text resultsrerank_top_kint10Text results after reranking (1–50)include_section_textbooltrueInclude full parent section textimage_match_countint5Image results to return (1–50)image_match_thresholdfloat0.0Image similarity threshold (0–1)filter_releasestringnullFilter both searches by releasefilter_doc_typestringnullFilter text search by doc typefilter_doc_numberstringnullFilter both searches by documentfilter_seriesstringnullFilter both searches by seriesfilter_section_numberstringnullFilter text search by section
Response has text_results (TextResult[]) and image_results (ImageResult[]).
List available 3GPP documents with metadata. Use filters to check if a specific document or release is indexed — this is fast (1-2 lookups). Without filters returns all ~3,200 documents which is slower.
Query parameters:
ParameterTypeDefaultDescriptiondoc_numberstringnullFilter by document number, e.g. "38.811". **Recommended.**releasestringnullFilter by release, e.g. "Rel-19"seriesstringnullFilter by series, e.g. "38"doc_typestringnullFilter by type: "TS" or "TR"
Example: Check if TR 38.811 has a Rel-19 version:
text
GET /documents?doc_number=38.811&release=Rel-19
Get a single document by its numeric ID.
Fetch full section text by section number.
Query parameters:
ParameterTypeDefaultDescriptionsection_numberstring—Required. Numeric ( 5.3.3), trailing-letter ( 5.3.1a), or annex ( A.1, B.2.3)doc_numberstring—Required. e.g. 38.331, 23.501versionstringnulle.g. 19.1.0releasestringnulle.g. Rel-19prefixboolfalseMatch sub-sections too — works for numeric ( 5.4 → 5.4.1) and annex ( A → A.1)
Behavior on no match: Returns HTTP 200 with an empty list []. If you get an empty
list, call GET /sections/toc?doc_number=… to see the document's actual section IDs —
your section number may use a different form (e.g. annex letter case, or the doc isn't indexed yet).
Table of contents for a document — section numbers and titles without full text.
Query parameters:
ParameterTypeDefaultDescriptiondoc_numberstring—Required. e.g. "38.321"versionstringnulle.g. "19.1.0"
Fetch an extracted image (PNG) from a specification. No authentication required.
The image_path field in image search results (e.g. /images/38.300/19.1.0/5)
maps directly to this endpoint. Construct the full URL as:
text
https://api.3gppscout.com/images/{doc_number}/{version}/{image_index}
Returns image/png on success, 404 if the image doesn't exist.
The index covers the full published TS/TR corpus for Rel-15 through Rel-20 — not a Rel-15 + Rel-19 subset. Production currently serves 8,700+ document versions, 1.3M+ sections, 2.6M+ text vectors, and 225K+ image vectors.
The corpus is kept current with the 3GPP source: new and bumped specifications are discovered, processed, and merged into the live search index (incremental apply for spec updates; full Vertex rebuilds on a monthly cadence). Do not treat the index as frozen at an older release pair.
The /sections artifacts for the production corpus were refreshed after the
annex-heading parser fix, so annex sections such as A.1 are available via
GET /sections when the caller provides doc_number.
Series 38 = NR/5G, 23 = system architecture, 24 = signaling protocols, 36 = LTE, 33 = security, 29 = core network protocols.
POST /search/text with a focused query and rerank_top_k: 5content field for the matched chunksection_text for the full section contextGET /sections/toc
with the doc_number from the resultGET /sections/toc?doc_number=38.331GET /sections?section_number=5.3.3&doc_number=38.331GET /sections?section_number=A.1&doc_number=38.874prefix=true to get a section and all its sub-sectionsPOST /search/combined to get both text and diagramsfilter_series to narrow to a domain (e.g. "38" for NR)rerank_top_k to 15–20 for more diverse resultsfilter_release: "Rel-15" for an earlier releasefilter_release: "Rel-20" (or another release) for a later versionrelevance_score from
the reranker is a much better quality signal than raw similarity.filter_doc_number dramatically improves result quality.include_section_text: true (the default) to get the full parent
section. The content field is a chunk (~400-800 tokens), while
section_text gives the complete section for full context./search/text over /search/combined when you only need text.
Combined search is slower because it queries both indexes.match_threshold too high. The default of 0.0 with reranking
gives the best results. The reranker handles quality filtering.image_path (e.g. /images/38.300/19.1.0/5). Construct the full URL:
https://api.3gppscout.com{image_path}. No authentication required.Queries you send to this API are processed by the 3GPP Scout service to perform vector search. The API does not store your queries beyond transient usage logs for billing. The corpus consists entirely of publicly available 3GPP specifications — no proprietary or user-supplied data is stored in the search index. See 3gppscout.com/privacy for the full privacy policy.