Skip to main content
Glama

Get Cell

get_cell
Read-onlyIdempotent

Geolocate a cell tower by mobile network identifiers. MCC = Mobile Country Code, MNC = Mobile Network Code, LAC = Location Area Code, cell_id = Cell ID. Returns lat/lon, range, samples, radio type (GSM/UMTS/LTE).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
lacYesLocation Area Code
mccYesMobile Country Code (e.g., 310 = US)
mncYesMobile Network Code (e.g., 410 = AT&T US)
radioNoGSM | UMTS | LTE | CDMA (optional disambiguation)
cell_idYesCell ID

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
lacYesLocation Area Code
mccYesMobile Country Code
mncYesMobile Network Code
radioYesRadio type (GSM/UMTS/LTE/CDMA)
cell_idYesCell ID
range_mYesCell tower coverage range in meters
samplesYesNumber of samples collected
latitudeYesCell tower latitude
longitudeYesCell tower longitude
created_atYesISO 8601 timestamp of creation
updated_atYesISO 8601 timestamp of last update
avg_signal_strengthYesAverage signal strength

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "cell_id": 12345678,
      +    "lac": 5000,
      +    "mcc": 310,
      +    "mnc": 410
      +  },
      +  {
      +    "cell_id": 12345678,
      +    "lac": 5000,
      +    "mcc": 310,
      +    "mnc": 410,
      +    "radio": "LTE"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "avg_signal_strength": {
      +      "description": "Average signal strength",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "cell_id": {
      +      "description": "Cell ID",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "created_at": {
      +      "description": "ISO 8601 timestamp of creation",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "lac": {
      +      "description": "Location Area Code",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "latitude": {
      +      "description": "Cell tower latitude",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "longitude": {
      +      "description": "Cell tower longitude",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "mcc": {
      +      "description": "Mobile Country Code",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "mnc": {
      +      "description": "Mobile Network Code",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "radio": {
      +      "description": "Radio type (GSM/UMTS/LTE/CDMA)",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "range_m": {
      +      "description": "Cell tower coverage range in meters",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "samples": {
      +      "description": "Number of samples collected",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "updated_at": {
      +      "description": "ISO 8601 timestamp of last update",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "mcc",
      +    "mnc",
      +    "lac",
      +    "cell_id",
      +    "radio",
      +    "latitude",
      +    "longitude",
      +    "range_m",
      +    "samples",
      +    "avg_signal_strength",
      +    "created_at",
      +    "updated_at"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds that the tool returns lat/lon, range, samples, and radio type, which is helpful but does not disclose potential errors, rate limits, or data freshness. For a read-only tool with robust annotations, this is adequate but not rich.

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?

The description is two sentences long: the first states the core action, the second defines acronyms and lists return fields. It is concise, front-loaded, and contains no superfluous information.

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

Completeness3/5

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

The tool has an output schema, so detailed return value documentation is not required. However, the description lists return fields but does not explain terms like 'samples' or 'range' in context. For a simple geolocation tool, it covers the basics but could be more informative.

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?

Input schema has 100% description coverage, with each parameter clearly described (e.g., 'Mobile Country Code (e.g., 310 = US)'). The tool description defines acronyms (MCC, MNC, LAC) and mentions return fields, adding marginal value. Baseline for high schema coverage is 3, and the description does not significantly exceed that.

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

Purpose5/5

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

The description clearly states the tool's purpose as geolocating a cell tower by mobile network identifiers. It lists the required identifiers (MCC, MNC, LAC, cell_id) and the return fields, distinguishing it from sibling tools like 'cells_in_area' (which finds cells by geographic area).

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. While the sibling 'cells_in_area' suggests a related but different functionality, there is no direct comparison or advice on choosing between them. Usage context is implied but not stated.

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.

TDQS

A3.6/5.0
Disambiguation2/5

Several tools are near-indistinguishable by role: ask_pipeworx and ask_pipeworx_beta are documented as currently identical, and ask_pipeworx, ask_pipeworx_grounded, and deep_research overlap as lookup/research entry points. The six-tool Polymarket cluster and the suggest_questions/discover_tools pair add further boundary confusion despite very long descriptions.

Naming Consistency3/5

Snake_case is used consistently, and clusters like ask_pipeworx_* and polymarket_* have internal consistency. However, the global convention is mixed: verb_object names (get_cell, resolve_entity, unsubscribe) sit beside noun phrases (entity_profile, recent_changes, cells_in_area) and product-prefixed nouns (pipeworx_feedback, polymarket_edges), so tool names are not predictable from function.

Tool Count2/5

33 tools is too many for a server named Opencellid, especially since only get_cell and cells_in_area actually belong to the cell-tower domain. Even as a broader Pipeworx/data bundle, the set is heavy and includes unrelated one-offs like generate_llms_txt and scan_dependency.

Completeness2/5

For an OpenCellID server, the surface is just two lookups, missing coverage stats, operator-based search, and other natural cell-tower operations. If judged instead as a Pipeworx data-research suite, coverage is broad, but the lack of a coherent stated domain makes obvious gaps and dead ends harder to identify.