mcp-server-telgea
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HTTP_TOKEN | No | Bearer token for the HTTP transport, shared with the gateway. Required when TELGEA_TRUST_FORWARDED_USER=true. | |
| TELGEA_API_KEY | Yes | Telgea API key sent as the x-api-key header. Keys are organisation-scoped and each endpoint requires its own permission. | |
| TELGEA_AUDIT_LOG | No | Path to the JSONL audit log, for example /data/audit.jsonl. | |
| TELGEA_BUDGET_STATE | No | Path used to persist the daily request budget count across restarts, for example /data/budget.json. | |
| TELGEA_CACHE_TTL_MS | No | Cache TTL in milliseconds for brief read caching. | |
| TELGEA_ENABLE_WRITES | No | Set to true to enable write tools. Write paths are disabled otherwise. | false |
| TELGEA_OPERATION_SECRET | No | Secret used to HMAC-sign prepared two-step operations, for example generated with openssl rand -hex 32. | |
| TELGEA_ENABLE_SIM_SECRETS | No | Set to true to enable telgea_get_sim_credentials, which can expose eSIM activation codes. | false |
| TELGEA_DAILY_REQUEST_BUDGET | No | Maximum number of requests the server will make in the rolling 24-hour window before refusing locally. | |
| TELGEA_TRUST_FORWARDED_USER | No | Set to true to trust the gateway-forwarded X-MCP-User identity. Requires MCP_HTTP_TOKEN and requires X-MCP-User on requests. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| telgea_search_capabilitiesB | Find the Telgea tool to use. Does not call Telgea. Discovery only. |
| telgea_server_statusA | Show which tiers are enabled on this instance and how much of the daily request budget is used. Does not call Telgea. Discovery only. |
| telgea_list_usersA | List the organisation’s users (employees): name, email, team, employee id, cost code. Filter by exact email or employeeId. Each call spends Telgea requests from the 1000/day budget shared by everyone using the key. |
| telgea_get_user_cost_thresholdB | A user’s effective cost threshold for DATA, VOICE (international calls), SMS or MMS, current spend this period, and whether usage is paused. |
| telgea_list_teamsB | List teams (billing/access groups) with member counts and cost codes. |
| telgea_create_userA | Create a user (employee) in the organisation. Does not order a plan — that is telgea_prepare_change kind=create_user_plan. Requires TELGEA_ENABLE_WRITES=true on the server. |
| telgea_update_userB | Change a user’s name, email, team, cost code or employee id. Requires TELGEA_ENABLE_WRITES=true on the server. |
| telgea_create_teamB | Create a team, optionally with members. Requires TELGEA_ENABLE_WRITES=true on the server. |
| telgea_update_teamA | Rename a team, change its cost code/emoji, or replace its member list. Requires TELGEA_ENABLE_WRITES=true on the server. userIds replaces the whole member list. |
| telgea_list_user_plansA | List subscriptions (user plans): user, status (ACTIVE, PROVISIONING, PORTING, TERMINATING…), local number and team. Sortable. Each call spends Telgea requests from the 1000/day budget shared by everyone using the key. |
| telgea_find_user_planA | Find one user’s plan by email, phone number (E.164) or ICCID. eSIM activation codes and PIN/PUK are redacted; use telgea_get_sim_credentials if you are allowed to see them. |
| telgea_get_user_planA | Full plan for a user: status, local and travel numbers with line state and SIM ICCID. eSIM activation codes and PIN/PUK are redacted; use telgea_get_sim_credentials if you are allowed to see them. |
| telgea_list_linesA | List lines (numbers) with type local/travel, state, ICCID and holder. Filter by msisdn, iccid, userId, type or state. eSIM activation codes and PIN/PUK are redacted; use telgea_get_sim_credentials if you are allowed to see them. Filtering by state costs Telgea more than other filters. |
| telgea_get_lineA | One line: state, timestamps (activated, termination scheduled), current and previous SIMs. eSIM activation codes and PIN/PUK are redacted; use telgea_get_sim_credentials if you are allowed to see them. |
| telgea_get_line_connectionA | Live network status of a line: attached or not, last seen, serving network, 2G–5G, APN, IMEI. For “my phone has no signal” support. IMEI and IP address are device data; share only with the line’s holder or IT. |
| telgea_get_sim_credentialsA | eSIM activation code (LPA string / QR content) and PIN/PUK codes for one line. Requires TELGEA_ENABLE_SIM_SECRETS=true on the server. Anyone with the activation code can install the line on their own phone. Give it only to the line’s holder. |
| telgea_set_line_suspensionA | Suspend a line (no calls, SMS or data — e.g. a lost phone) or restore a suspended line. Requires TELGEA_ENABLE_WRITES=true on the server. Suspending cuts the holder off completely until restored. Confirm with the user first. |
| telgea_set_data_restrictionA | Stop or restore mobile data on one line (numberId) or on every line of a user (userId). Calls and SMS keep working. Requires TELGEA_ENABLE_WRITES=true on the server. Confirm with the user first. |
| telgea_get_port_in_requirementsA | The fields a number port-in needs for a country, as a field list or a JSON Schema. |
| telgea_validate_port_inA | Check port-in data against Telgea’s rules without submitting anything. Does not submit. Submitting goes through telgea_prepare_change kind=submit_port_in. |
| telgea_get_port_inA | Status of one port-in (CREATED → SUBMITTED → ACCEPTED → SUCCEEDED, or REJECTED/FAILED with reason). |
| telgea_list_port_ins_for_lineA | All port-in attempts for one line. |
| telgea_list_usageA | Raw call, SMS, MMS and data records with price: timestamps, amount, roaming/international class, counterparty. Window up to 31 days; cursor paging. Each call spends Telgea requests from the 1000/day budget shared by everyone using the key. Records include who called whom. Use telgea_get_usage_analytics for totals; reach for raw records only when the detail is needed. |
| telgea_get_usage_analyticsA | Aggregated data, voice and SMS consumption per day or month, with highest/lowest/average. Filter by user, number or serving country. Cheapest way to answer “how much did we use”. |
| telgea_list_data_poolsB | Shared data pools: region, total/consumed/remaining GB, expiry, whether restrictions are active. |
| telgea_list_data_pool_membersC | Members of a data pool with each one’s data use. |
| telgea_list_ratesB | Pay-as-you-go retail rates for a home market: international voice/SMS/MMS or roaming data, per destination country. |
| telgea_list_cost_thresholdsB | Cost thresholds (monthly spend caps) for the organisation, a team or a user. |
| telgea_set_cost_thresholdA | Set a monthly spend cap on DATA, VOICE (international), SMS or MMS for the organisation, a team or a user. Reaching it pauses that usage. Requires TELGEA_ENABLE_WRITES=true on the server. May apply from next month; the result says so (appliesFromNextMonth). |
| telgea_remove_cost_thresholdA | Remove a spend cap, releasing paused usage. Requires TELGEA_ENABLE_WRITES=true on the server. |
| telgea_prepare_changeA | Step 1 of 2 for what costs money or cannot be undone: create_user_plan, add_line, replace_sim, terminate_line, terminate_plan, delete_user, submit_port_in, discard_port_in. Returns a signed preview; nothing is sent. Requires TELGEA_ENABLE_WRITES=true on the server. Show the preview and warnings to the user and get an explicit yes before committing. |
| telgea_commit_prepared_operationA | Step 2 of 2: send a prepared operation, unchanged, with its operationHash. Valid for 15 minutes, only for the user who prepared it. Requires TELGEA_ENABLE_WRITES=true on the server. Committing the same operation twice replays the first result (idempotency key from the hash). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 32 tools
Most tools target a distinct resource+action, and descriptions explicitly route between near-neighbours (e.g. list_usage vs get_usage_analytics, list_lines vs get_line). The main soft spots are find_user_plan vs get_user_plan vs list_user_plans, and get_user_cost_threshold vs list_cost_thresholds, where boundaries require reading the descriptions to resolve.
Every tool uses a uniform telgea_ verb_noun snake_case pattern (get_, list_, create_, update_, set_, remove_, find_, validate_, prepare_, commit_). Verb choices are semantically consistent across resources, so an agent can predict names.
32 tools is heavy and sits above the comfortable range, though the domain genuinely spans users, teams, lines, plans, SIMs, usage, port-ins, thresholds, pools and meta-discovery. Some consolidation is possible (e.g. find/get user plan, the several threshold readers), but each tool maps to a real operation rather than filler.
Coverage is broad and lifecycle-aware: writes are funnelled through the prepare/commit two-step, and reads cover users, teams, lines, plans, SIM credentials, usage, port-ins, thresholds, pools and rates. Minor gaps remain — no team deletion, no data-pool creation/update, no direct user deletion outside prepare_change — but these are workable.