Skip to main content
Glama

Search Text Search Text Post

search_text_search_text_post
Read-only

Search 3GPP specification text by meaning. Returns matching clauses with spec number, version, section and a short excerpt. Use for "what does TS X say about Y".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language search query. Be specific — e.g. 'RRC connection reconfiguration procedure' rather than just 'RRC'.
rerankNoRerank results for higher precision. Always leave true (default) — the reranker dramatically improves result quality.
deduplicateNoCollapse near-duplicate results from different releases/versions (same doc_number + section_number), so rerank_top_k counts distinct sections. Keeps the highest-scored result (the newest release when scores tie, as identical text across releases does) and annotates it with an 'also_in' list showing each collapsed match's release, version, and scores. Ignored when filter_release is set.
match_countNoCandidate matches to retrieve before reranking. Higher = slower but more thorough. Default 30 balances speed and quality.
rerank_top_kNoNumber of final results after reranking. Use 3–5 for focused lookups, 10–20 for broad research.
filter_seriesNoRestrict by 3GPP series number: '38' = NR/5G radio, '23' = system architecture, '24' = signalling, '36' = LTE, '33' = security, '29' = core network.
prefer_latestNoAdd latest_version and latest_release (the newest indexed version of the document) to each result, and when deduplicating keep the newest matched version of each section instead of the highest-scored one.
filter_releaseNoRestrict to a specific 3GPP release. Examples: 'Rel-15', 'Rel-17', 'Rel-20'. Omit for all indexed releases (Rel-15 through Rel-20).
filter_doc_typeNoRestrict by document type: 'TS' (Technical Specification) or 'TR' (Technical Report). Omit for both.
match_thresholdNoMinimum similarity score. Leave at 0 (default) and rely on reranking for quality filtering.
available_beforeNoOnly versions uploaded to the 3GPP archive before this date (YYYY-MM-DD; before 00:00 UTC, so the day itself is excluded), e.g. a patent application's priority date. A version whose upload time is unknown is left out. Usually one version per release of each spec is indexed (the newest in that release, Rel-15 onward), so a release appears only if that version predates the cutoff; older versions are in the 3GPP archive but not searchable here.
include_childrenNoAdd each result's sub-clauses (number, title, token count; all of them up to 12, else the direct ones) and descendant_count, so you can pick the clause to read without a table-of-contents call.
filter_doc_numberNoRestrict to a specific document, e.g. '38.331' (NR RRC), '23.501' (system architecture), '38.300' (NR overview). Use the numeric format without the 'TS'/'TR' prefix.
include_section_textNoInclude the full parent section text alongside each chunk. Provides richer context but increases response size.
filter_section_numberNoRestrict to a specific section, e.g. '5.3.5'. Only useful when combined with filter_doc_number.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes
totalYes
resultsYes
rerankedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedOutput schema / properties / elapsed_ms
      Removed value: -{
      -  "title": "Elapsed Ms",
      -  "type": "number"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "query",
      -  "results",
      -  "total",
      -  "reranked",
      -  "elapsed_ms"
      -]New value: +[
      +  "query",
      +  "results",
      +  "total",
      +  "reranked"
      +]
  2. Changed3 schema fields changed
    • addedInput schema / properties / include_children
      Added value: +{
      +  "default": false,
      +  "description": "Add each result's sub-clauses (number, title, token count; all of them up to 12, else the direct ones) and descendant_count, so you can pick the clause to read without a table-of-contents call.",
      +  "title": "Include Children",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / results / items / properties / children
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "properties": {
      +          "section_number": {
      +            "title": "Section Number",
      +            "type": "string"
      +          },
      +          "section_title": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "title": "Section Title"
      +          },
      +          "token_count": {
      +            "anyOf": [
      +              {
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "title": "Token Count"
      +          }
      +        },
      +        "required": [
      +          "section_number"
      +        ],
      +        "title": "SectionChild",
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "With include_children: the section's sub-clauses, without text.",
      +  "title": "Children"
      +}
    • addedOutput schema / properties / results / items / properties / descendant_count
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "With include_children: sub-clauses at any depth.",
      +  "title": "Descendant Count"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / available_before
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "date",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Only versions uploaded to the 3GPP archive before this date (YYYY-MM-DD; before 00:00 UTC, so the day itself is excluded), e.g. a patent application's priority date. A version whose upload time is unknown is left out. Usually one version per release of each spec is indexed (the newest in that release, Rel-15 onward), so a release appears only if that version predates the cutoff; older versions are in the 3GPP archive but not searchable here.",
      +  "title": "Available Before"
      +}
    • changedOutput schema / properties / results / items / properties / also_in / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "description": "Reference to another release/version that matched the same section.",
      -      "properties": {
      -        "release": {
      -          "title": "Release",
      -          "type": "string"
      -        },
      -        "relevance_score": {
      -          "anyOf": [
      -            {
      -              "type": "number"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "title": "Relevance Score"
      -        },
      -        "similarity": {
      -          "anyOf": [
      -            {
      -              "type": "number"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "title": "Similarity"
      -        },
      -        "version": {
      -          "title": "Version",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "release",
      -        "version"
      -      ],
      -      "title": "AlsoIn",
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "description": "Reference to another release/version that matched the same section.",
      +      "properties": {
      +        "archive_uploaded_at": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "When this version was uploaded to the 3GPP archive (ISO 8601, UTC); null when unknown.",
      +          "title": "Archive Uploaded At"
      +        },
      +        "release": {
      +          "title": "Release",
      +          "type": "string"
      +        },
      +        "relevance_score": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "title": "Relevance Score"
      +        },
      +        "similarity": {
      +          "anyOf": [
      +            {
      +              "type": "number"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "title": "Similarity"
      +        },
      +        "version": {
      +          "title": "Version",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "release",
      +        "version"
      +      ],
      +      "title": "AlsoIn",
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / results / items / properties / provenance
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "When this spec version reached the public 3GPP archive, and the TSG plenary it came from.\n\nEvery value comes from the 3GPP FTP server: archive and dated plenary folder listings, 3GPP's lists of\nspecifications arising from each TSG round, and the 3GPP change request database. Unknown values stay null.",
      +      "properties": {
      +        "archive_date_source": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "'ftp_archive_listing' (the spec's folder under /ftp/Specs/archive/) or 'ftp_plenary_folder_listing' (a dated plenary folder that showed an earlier time).",
      +          "title": "Archive Date Source"
      +        },
      +        "archive_uploaded_at": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "When this version's zip was uploaded to the 3GPP archive (ISO 8601, UTC), as the 3GPP FTP folder listing at archive_url shows it. If 3GPP re-uploaded the file, the earliest time seen. Null when not found; see unknown_reasons.",
      +          "title": "Archive Uploaded At"
      +        },
      +        "archive_url": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The zip on the 3GPP FTP server whose folder listing gives archive_uploaded_at; open its folder to verify the time.",
      +          "title": "Archive Url"
      +        },
      +        "notes": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Anything a reviewer should know, e.g. the file was re-uploaded or two sources name different meetings.",
      +          "title": "Notes"
      +        },
      +        "plenary_batch": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "YYYY-MM of the plenary round whose batch of specifications includes this version (3GPP's dated folders, /ftp/Specs/YYYY-MM/).",
      +          "title": "Plenary Batch"
      +        },
      +        "plenary_batch_source": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "'tsg_spec_list' (stated in 3GPP's list of specifications arising from that TSG round), 'tsg_meeting_start' (the month the plenary in tsg_meeting started) or 'ftp_plenary_folder' (the earliest dated folder holding the zip).",
      +          "title": "Plenary Batch Source"
      +        },
      +        "statement": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The known facts as plain sentences, ready to quote, e.g. 'Uploaded to the 3GPP archive on 2026-09-24 at 16:47 UTC. Approved at TSG SA #113 (2026-09-15 to 2026-09-18).' It says 'uploaded to the 3GPP archive' and 'approved at', never 'published': no source states a publication date.",
      +          "title": "Statement"
      +        },
      +        "tsg_meeting": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Plenary meeting ID: 'SP-113' (TSG SA #113), 'RP-109' (TSG RAN), 'CP-110' (TSG CT); a trailing '-e' marks an electronic meeting.",
      +          "title": "Tsg Meeting"
      +        },
      +        "tsg_meeting_end": {
      +          "anyOf": [
      +            {
      +              "format": "date",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Last day of the plenary meeting.",
      +          "title": "Tsg Meeting End"
      +        },
      +        "tsg_meeting_name": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The meeting as 3GPP names it, e.g. 'TSG SA #113'.",
      +          "title": "Tsg Meeting Name"
      +        },
      +        "tsg_meeting_relation": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "'approved': change requests approved at this meeting created this version (3GPP CR database). 'arising_from': 3GPP lists this version among the specifications arising from this meeting. 'presented': a draft (below version 3.0.0) presented to this meeting.",
      +          "title": "Tsg Meeting Relation"
      +        },
      +        "tsg_meeting_source": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "'cr_database' (3GPP change request database export) or 'tsg_spec_list' (3GPP's list of specifications arising from that TSG round).",
      +          "title": "Tsg Meeting Source"
      +        },
      +        "tsg_meeting_source_url": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "The 3GPP file that names the meeting.",
      +          "title": "Tsg Meeting Source Url"
      +        },
      +        "tsg_meeting_start": {
      +          "anyOf": [
      +            {
      +              "format": "date",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "First day of the plenary meeting.",
      +          "title": "Tsg Meeting Start"
      +        },
      +        "unknown_reasons": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Why a field is null, by field name. archive_uploaded_at: 'not_in_archive_listing'. tsg_meeting: 'before_tsg_lists_no_approved_cr' (uploaded before March 2023, when 3GPP's per-round spec lists start, and created by no approved change request, e.g. a release upgrade), 'draft_not_listed', or 'not_in_cr_database_or_tsg_lists'. Nothing is guessed.",
      +          "title": "Unknown Reasons"
      +        }
      +      },
      +      "title": "SpecProvenance",
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "When this version was uploaded to the 3GPP archive and the TSG plenary it came from, with sources. Null when the version has no provenance row yet."
      +}
  4. First observed

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true/openWorldHint=false, so the safety profile is covered; the description usefully states the return shape (spec number, version, section, short excerpt). It adds little beyond that, but since an output schema exists, that is acceptable rather than a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences plus a quoted example, with purpose front-loaded and zero filler. Every sentence carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich schema, full annotations, and an output schema, the description only needs to convey scope and intent, which it does. It omits pagination/result-size expectations, but the schema's match_count/rerank_top_k fields largely cover that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema is unusually detailed (rerank, deduplicate, match_count, filters, etc.), so all parameter meaning is already carried. The description contributes nothing param-specific; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (search 3GPP specification text) and qualifies it as semantic ('by meaning'), which separates it from metadata-searching siblings like search_tdocs. It does not explicitly name search_combined_search_combined_post, so the boundary with the most similar sibling is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The example '"what does TS X say about Y"' implicitly frames the use case and is genuinely helpful, but there is no explicit when-to-use/when-not guidance or named alternative for keyword or metadata lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.