Skip to main content
Glama

Get an order link for a report

create_order_link
Idempotent

Returns our order page with the report and countries filled in. Fees: Country $99, Enhanced $129 for two countries, Global $149 for three or more. Payment opens only when the person chooses to pay there, so send only countries and the tier, never personal details.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "countries": "<countries>",
      "tier": "<tier>"
    },
    "name": "create_order_link"
  }
}

Input Schema

NameRequiredDescriptionDefault
tierYes"country" (one or more countries), "enhanced" (exactly one country) or "global" (every country the person worked in).
languageNoOptional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored.
countriesYesThe countries to order for, as names or ISO codes, for example ["NL", "United Kingdom"]. Only countries we cover.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / countries / description
      Previous value: -"The countries to order for, each a name, native name, alias or ISO code, for example [\"NL\", \"United Kingdom\"]. Only countries we cover; call list_covered_countries when unsure."New value: +"The countries to order for, as names or ISO codes, for example [\"NL\", \"United Kingdom\"]. Only countries we cover."
    • changedInput schema / properties / language / description
      Previous value: -"Optional. The language for our own sentences (notes, offer, labels, gap and register sentences), as an ISO 639-1 code: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Default en. pt is European Portuguese, pt-BR Brazilian, zh Simplified Chinese. Facts, numbers, dates, names and authority answers stay exactly as stored; a fact translation appears only from our committed table, marked translation: true. An unknown code is answered in English with a note."New value: +"Optional. Language of our own sentences, default en: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Facts stay as stored."
    • changedInput schema / properties / tier / description
      Previous value: -"The report to order. \"country\": the Country Pension Identification Report, $99 per country, one report covering every country you tick, one or more countries. \"enhanced\": the Enhanced Pension Identification Report, $199, exactly one country. \"global\": the Global Pension Identification Report, $299, every country the person worked in, in one report; best from 3 countries."New value: +"\"country\" (one or more countries), \"enhanced\" (exactly one country) or \"global\" (every country the person worked in)."
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "checkoutUrl": {
      -      "description": "Always null from 1.11.0; kept for one version for agents that read it.",
      -      "type": "null"
      -    },
      -    "countries": {
      -      "description": "ISO 3166 alpha-2 codes of the countries ordered.",
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "expiresAt": {
      -      "description": "Always null from 1.11.0; kept for one version.",
      -      "type": "null"
      -    },
      -    "fee": {
      -      "description": "The fee, from our published prices.",
      -      "type": "string"
      -    },
      -    "language": {
      -      "additionalProperties": false,
      -      "description": "Present when language was sent: the language served, its own name, and labels for source, read date, translation and original in that language. Our sentences in this result are translations of our own wording, review recommended.",
      -      "properties": {
      -        "facts": {
      -          "description": "In the served language: facts, numbers and dates are served exactly as stored.",
      -          "type": "string"
      -        },
      -        "labels": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "original": {
      -              "type": "string"
      -            },
      -            "read": {
      -              "type": "string"
      -            },
      -            "source": {
      -              "type": "string"
      -            },
      -            "translation": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "source",
      -            "read",
      -            "translation",
      -            "original"
      -          ],
      -          "type": "object"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "note": {
      -          "description": "Why the result is in English, when the language sent is not one we serve.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "ourWording": {
      -          "description": "In the served language: these are translations of our own wording, review recommended.",
      -          "type": "string"
      -        },
      -        "requested": {
      -          "description": "The language as sent, when it reads as a language tag; empty otherwise.",
      -          "type": "string"
      -        },
      -        "served": {
      -          "enum": [
      -            "en",
      -            "ar",
      -            "da",
      -            "de",
      -            "es",
      -            "fa",
      -            "fr",
      -            "hi",
      -            "id",
      -            "it",
      -            "ja",
      -            "ko",
      -            "nb",
      -            "nl",
      -            "pl",
      -            "pt",
      -            "pt-BR",
      -            "ro",
      -            "ru",
      -            "sv",
      -            "th",
      -            "tl",
      -            "tr",
      -            "zh",
      -            "vi",
      -            "uk",
      -            "bg"
      -          ],
      -          "type": "string"
      -        },
      -        "supported": {
      -          "description": "False when the language sent is not one of ours; the result is then in English.",
      -          "type": "boolean"
      -        }
      -      },
      -      "required": [
      -        "requested",
      -        "served",
      -        "name",
      -        "supported",
      -        "note",
      -        "ourWording",
      -        "facts",
      -        "labels"
      -      ],
      -      "type": "object"
      -    },
      -    "note": {
      -      "description": "One line to pass on to the person.",
      -      "type": "string"
      -    },
      -    "offer": {
      -      "description": "The report offer, with the fee and refund terms.",
      -      "type": "string"
      -    },
      -    "orderUrl": {
      -      "description": "Our order page with the same tier and countries filled in. It never carries personal data.",
      -      "format": "uri",
      -      "type": "string"
      -    },
      -    "product": {
      -      "description": "The report name.",
      -      "type": "string"
      -    },
      -    "sample_report": {
      -      "description": "Our sample report, to read what a report holds before ordering.",
      -      "format": "uri",
      -      "type": "string"
      -    },
      -    "status": {
      -      "description": "Always order_page from 1.11.0: orderUrl is the way to order; no checkout is opened by a tool call.",
      -      "enum": [
      -        "order_page"
      -      ],
      -      "type": "string"
      -    },
      -    "tier": {
      -      "enum": [
      -        "country",
      -        "enhanced",
      -        "global"
      -      ],
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "status",
      -    "checkoutUrl",
      -    "expiresAt",
      -    "note",
      -    "countries",
      -    "tier",
      -    "product",
      -    "fee",
      -    "offer",
      -    "orderUrl"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changed
    • changedInput schema / properties / tier / description
      Previous value: -"The report to order. \"country\": the Country Pension Identification Report, $99 per country, one report covering every country you tick, one or more countries. \"enhanced\": the Enhanced Pension Identification Report, $199, exactly one country. \"global\": the Global Pension Identification Report, $299, every country the person worked in, in one report; it is meant for three or more countries."New value: +"The report to order. \"country\": the Country Pension Identification Report, $99 per country, one report covering every country you tick, one or more countries. \"enhanced\": the Enhanced Pension Identification Report, $199, exactly one country. \"global\": the Global Pension Identification Report, $299, every country the person worked in, in one report; best from 3 countries."
  3. Changed9 schema fields changed
    • changedInput schema / properties / tier / description
      Previous value: -"The report to order. \"country\": the Country Pension Identification Report, $99 per country, one report covering every country you tick, one or more countries. \"enhanced\": the Enhanced Pension Identification Report, $199, exactly one country. \"global\": the Global Pension Identification Report, $299, two or more countries, in one report."New value: +"The report to order. \"country\": the Country Pension Identification Report, $99 per country, one report covering every country you tick, one or more countries. \"enhanced\": the Enhanced Pension Identification Report, $199, exactly one country. \"global\": the Global Pension Identification Report, $299, every country the person worked in, in one report; it is meant for three or more countries."
    • changedOutput schema / properties / checkoutUrl / description
      Previous value: -"The Stripe checkout link, or null when none could be opened."New value: +"Always null from 1.11.0; kept for one version for agents that read it."
    • removedOutput schema / properties / checkoutUrl / format
      Removed value: -"uri"
    • changedOutput schema / properties / checkoutUrl / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"null"
    • changedOutput schema / properties / expiresAt / description
      Previous value: -"When the checkout link stops working, ISO 8601 UTC, or null."New value: +"Always null from 1.11.0; kept for one version."
    • changedOutput schema / properties / expiresAt / type
      Previous value: -[
      -  "string",
      -  "null"
      -]New value: +"null"
    • addedOutput schema / properties / sample_report
      Added value: +{
      +  "description": "Our sample report, to read what a report holds before ordering.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedOutput schema / properties / status / description
      Previous value: -"checkout_opened when checkoutUrl is a live Stripe checkout; order_page when a checkout could not be opened and orderUrl is the way to order."New value: +"Always order_page from 1.11.0: orderUrl is the way to order; no checkout is opened by a tool call."
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "checkout_opened",
      -  "order_page"
      -]New value: +[
      +  "order_page"
      +]
  4. Changed2 schema fields changed
    • changedOutput schema / properties / offer / description
      Previous value: -"The report offer, with prices, delivery time and refund terms. Absent when the result names mapped countries and no researched one."New value: +"The report offer, with the fee and refund terms."
    • changedOutput schema / properties / orderUrl / description
      Previous value: -"Order page for the countries in this result: tier=country&country=<ISO> for one covered country, tier=global for several. It never carries personal data. Absent when the result names mapped countries and no researched one."New value: +"Our order page with the same tier and countries filled in. It never carries personal data."
  5. Changed2 schema fields changed
    • changedInput schema / properties / language / description
      Previous value: -"Optional. The language for our own sentences (notes, offer, labels, gap and register sentences), as an ISO 639-1 code: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. Default en. pt is European Portuguese, pt-BR Brazilian, zh Simplified Chinese. Facts, numbers, dates, names and authority answers stay exactly as stored; a fact translation appears only from our committed table, marked translation: true. An unknown code is answered in English with a note."New value: +"Optional. The language for our own sentences (notes, offer, labels, gap and register sentences), as an ISO 639-1 code: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh, vi, uk, bg. Default en. pt is European Portuguese, pt-BR Brazilian, zh Simplified Chinese. Facts, numbers, dates, names and authority answers stay exactly as stored; a fact translation appears only from our committed table, marked translation: true. An unknown code is answered in English with a note."
    • changedOutput schema / properties / language / properties / served / enum
      Previous value: -[
      -  "en",
      -  "ar",
      -  "da",
      -  "de",
      -  "es",
      -  "fa",
      -  "fr",
      -  "hi",
      -  "id",
      -  "it",
      -  "ja",
      -  "ko",
      -  "nb",
      -  "nl",
      -  "pl",
      -  "pt",
      -  "pt-BR",
      -  "ro",
      -  "ru",
      -  "sv",
      -  "th",
      -  "tl",
      -  "tr",
      -  "zh"
      -]New value: +[
      +  "en",
      +  "ar",
      +  "da",
      +  "de",
      +  "es",
      +  "fa",
      +  "fr",
      +  "hi",
      +  "id",
      +  "it",
      +  "ja",
      +  "ko",
      +  "nb",
      +  "nl",
      +  "pl",
      +  "pt",
      +  "pt-BR",
      +  "ro",
      +  "ru",
      +  "sv",
      +  "th",
      +  "tl",
      +  "tr",
      +  "zh",
      +  "vi",
      +  "uk",
      +  "bg"
      +]
  6. Changed1 schema field changed
    • changedInput schema / properties / tier / description
      Previous value: -"The report to order. \"country\": the Country Pension Identification Report, $99 per country, one or more countries. \"enhanced\": the Enhanced Pension Identification Report, $499, exactly one country. \"global\": the Global Pension Identification Report, $799, two or more countries."New value: +"The report to order. \"country\": the Country Pension Identification Report, $99 per country, one report covering every country you tick, one or more countries. \"enhanced\": the Enhanced Pension Identification Report, $199, exactly one country. \"global\": the Global Pension Identification Report, $299, two or more countries, in one report."
  7. Changed2 schema fields changed
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "Optional. The language for our own sentences (notes, offer, labels, gap and register sentences), as an ISO 639-1 code: en, ar, da, de, es, fa, fr, hi, id, it, ja, ko, nb, nl, pl, pt, pt-BR, ro, ru, sv, th, tl, tr, zh. Default en. pt is European Portuguese, pt-BR Brazilian, zh Simplified Chinese. Facts, numbers, dates, names and authority answers stay exactly as stored; a fact translation appears only from our committed table, marked translation: true. An unknown code is answered in English with a note.",
      +  "maxLength": 35,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedOutput schema / properties / language
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Present when language was sent: the language served, its own name, and labels for source, read date, translation and original in that language. Our sentences in this result are translations of our own wording, review recommended.",
      +  "properties": {
      +    "facts": {
      +      "description": "In the served language: facts, numbers and dates are served exactly as stored.",
      +      "type": "string"
      +    },
      +    "labels": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "original": {
      +          "type": "string"
      +        },
      +        "read": {
      +          "type": "string"
      +        },
      +        "source": {
      +          "type": "string"
      +        },
      +        "translation": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "source",
      +        "read",
      +        "translation",
      +        "original"
      +      ],
      +      "type": "object"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "note": {
      +      "description": "Why the result is in English, when the language sent is not one we serve.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "ourWording": {
      +      "description": "In the served language: these are translations of our own wording, review recommended.",
      +      "type": "string"
      +    },
      +    "requested": {
      +      "description": "The language as sent, when it reads as a language tag; empty otherwise.",
      +      "type": "string"
      +    },
      +    "served": {
      +      "enum": [
      +        "en",
      +        "ar",
      +        "da",
      +        "de",
      +        "es",
      +        "fa",
      +        "fr",
      +        "hi",
      +        "id",
      +        "it",
      +        "ja",
      +        "ko",
      +        "nb",
      +        "nl",
      +        "pl",
      +        "pt",
      +        "pt-BR",
      +        "ro",
      +        "ru",
      +        "sv",
      +        "th",
      +        "tl",
      +        "tr",
      +        "zh"
      +      ],
      +      "type": "string"
      +    },
      +    "supported": {
      +      "description": "False when the language sent is not one of ours; the result is then in English.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "requested",
      +    "served",
      +    "name",
      +    "supported",
      +    "note",
      +    "ourWording",
      +    "facts",
      +    "labels"
      +  ],
      +  "type": "object"
      +}
  8. Added

TDQS

B3.4/5.0
Behavior4/5

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

Annotations only declare the safety profile (readOnlyHint false, idempotentHint true, destructive false, openWorld false); the description adds genuinely new behavior: the pricing tiers and the fact that payment only opens if the recipient chooses to pay. The privacy constraint reinforces that no personal data should be transmitted. There is minor tension between readOnlyHint=false and a description that reads like a pure read, and no mention of link expiry or reuse, keeping it at 4.

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?

Two tight sentences, front-loaded with what is returned, then fees, then the privacy rule. Every clause carries information, though the fee sentence could be compressed without loss.

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?

With no output schema, the description should say what the caller actually gets back — it only says "our order page," without indicating whether the result is a URL string, an object, or a token, or whether the link expires. Pricing and privacy are well covered, so the gap is narrow but real for a tool whose entire output is the link.

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

Parameters2/5

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

Schema coverage is 100%, so the schema already documents all three parameters well. The description adds fee information, but its mapping is inconsistent with the schema: the tier enum says "enhanced" means exactly one country, while the description prices Enhanced at $129 "for two countries." That contradiction actively muddies the most consequential parameter rather than clarifying it.

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?

"Returns our order page with the report and countries filled in" states a concrete verb and resource — it produces an order/checkout link pre-populated from the inputs. That is distinguishable from siblings like list_covered_countries or country_pension_facts. It stops short of 5 because the name says create_order_link while the description says it merely returns a page, leaving mild ambiguity about whether anything is persisted.

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 description implies the use case (handing someone a page where they pay) and gives an input constraint — send only countries and tier, never personal details. It gives no explicit when-to-use versus alternatives, and never points to list_covered_countries as the way to validate coverage before ordering.

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.