Skip to main content
Glama

doctorSIM

create_order

Place the order — one tool for every vertical; type is inferred from price_token / catalog_id. Send price_token only for gift cards (no phone, no country_id). Success always returns order_id, status, and (PRO credits) credits_used — never treat raw payment-gateway text as confirmation. Guest / consumer: call as soon as the product is chosen (preview optional). Show the buyer only payment_link and order_id when one exists. Never display checkout_hash. Guest products are emailed after the buyer pays on doctorsim.com. OAuth PRO: preview first, then create — same body as preview. Multi-SKU (e.g. three gift cards): N create_order calls with a DISTINCT idempotency_key each. If a response lacks order_id, call list_orders / get_order_status — never re-create on ambiguous success. Offer account linking only if the user asks for PRO credits or saved settings.

Input Schema

NameRequiredDescriptionDefault
langNo
typeNoOrder vertical. Optional — inferred from price_token (top-up / gift card rate token vs eSIM token) or catalog_id. Set esim for travel eSIM.
phoneNoRecipient E.164 phone number. Required for mobile/airtime top-ups. Do NOT provide for gift cards or eSIM (digitally delivered) — omit it.
currencyNoTravel eSIM only: display currency.
sms_textNoCustom SMS text (max 140 chars). Only used when sms_notification=true. If omitted, a default localized message is sent.
catalog_idNoTravel eSIM only: catalog_id from get_esim_plans (with its price_token).
country_idNoDo NOT send when using price_token — destination is encoded in the token. If you must send it, copy id_country from get_countries or product search (Spain=34). Never invent a number.
operator_idNoOptional. Omit when using price_token. If sent, must be id_operator from rates/search.
price_tokenYestoken from get_operator_rates (top-up / gift card) or price_token from get_esim_plans (travel eSIM)
checkout_modeNoOptional. Omit for the default doctorsim.com hash payment_link (D-1). stripe_link returns a Stripe Checkout Session URL when agentic_stripe_link is ON; otherwise STRIPE_LINK_DISABLED (no silent fallback). PRO credits always win over stripe_link. Same checkout_hash for get_order_status. Minting a Shared Payment Token via Stripe Link Agents is a different rail — do not send stripe_link for that.
idempotency_keyNoRequired for safe retries. 1-128 printable ASCII. Same key + same account returns the original order (no second charge). Use a NEW key for each distinct SKU / denomination. Also accepted as HTTP Idempotency-Key.
sms_notificationNoTop-up only: send an SMS to the recipient (adds a fixed 0.99 EUR fee). Ignored for gift cards and eSIM.

Output Schema

NameRequiredDescriptionDefault
codeNo
typeNotopup | giftcard | esim
statusNo
paymentNoNested gateway / provider receipt details. Never the sole success signal.
currencyNo
order_idNoShow this to the buyer when present (PRO credit checkout, or after payment).
expires_atNo
environmentNoproduction | sandbox
credits_usedNoDecimal amount, normally a string, e.g. "21.98"
payment_linkNoThe only URL to show the buyer. Guest / consumer pay on doctorsim.com.
show_to_userYesFields the assistant may show the buyer.
checkout_hashNoMachine identifier for get_order_status. Never show or read aloud.
checkout_modeNocredits (PRO credit checkout) | payment_link (guest / consumer pays on doctorsim.com) | stripe_link (opt-in Stripe Checkout Session URL when requested and agentic_stripe_link is ON).
checkout_hash_usageNomachine_only
assistant_instructionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say non-readOnly, non-destructive, closed-world; the description adds substantial behavior beyond that — idempotency semantics (same key returns the original order, no second charge), what success returns (order_id, status, credits_used), payment-rail rules (PRO credits beat stripe_link, STRIPE_LINK_DISABLED has no silent fallback), and explicit display prohibitions (never show checkout_hash, only payment_link/order_id). This is exactly the mutation-context an agent needs.

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

Conciseness4/5

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

Front-loaded with the core action and routing rule, then layered with operational constraints. It is dense and slightly sprawling in the middle (payment-gateway warning, display rules, account linking), but nearly every clause carries a decision the agent must make.

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

Completeness5/5

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

For a 12-parameter mutation tool with an output schema, this covers the remaining gaps: vertical inference, guest vs PRO flow, retry/ambiguity handling, multi-SKU behavior, and display constraints. Nothing essential to calling it correctly is left unstated.

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

Parameters4/5

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

Schema coverage is already 92%, so the baseline is 3. The description still adds real value on top: price_token only for gift cards with no phone and no country_id, and a distinct idempotency_key per SKU — cross-field constraints the schema documents per-property but not jointly.

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 opens with a specific verb+resource ('Place the order') and immediately clarifies scope: one tool covering every vertical, with `type` inferred from price_token/catalog_id. An agent can tell what it does and how vertical routing works without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete when-to-call guidance: guest/consumer calls as soon as the product is chosen (preview optional), OAuth PRO must preview first with the same body. It also covers multi-SKU (N calls, distinct idempotency keys) and the ambiguity fallback to list_orders/get_order_status. It stops short of naming the sibling tools it overlaps with (create_esim_order, create_esim_topup, preview_order), so the agent must infer why those exist alongside this one.

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.

Resources