Skip to main content
Glama

When does a departure deadline run out

deadline_check
Read-onlyIdempotent

The date a departure deadline runs out, from our deadline register and the date the person left or died, with the official source and read date. Where the start event depends on the person's circumstances, the date is an estimate and says what to confirm. Nothing is stored.

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": {
      "country": "<country>",
      "date": "<date>"
    },
    "name": "deadline_check"
  }
}

Input Schema

NameRequiredDescriptionDefault
dateYesThe date, YYYY-MM-DD, not after today.
eventNo"left" or "died". Optional when the country has only one.
countryYesThe country left: ISO code or English name, for example JP or Japan.
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / country / description
      Previous value: -"The country left: ISO 3166 alpha-2 code or English name, for example \"JP\" or \"Japan\". Call with any value to get the list of countries we hold."New value: +"The country left: ISO code or English name, for example JP or Japan."
    • changedInput schema / properties / event / description
      Previous value: -"\"left\": the date the person left that country. \"died\": the date of death, for clocks that run from a death. Optional when the country has only one."New value: +"\"left\" or \"died\". Optional when the country has only one."
    • 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."
    • changedOutput schema / (root)
      Previous value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "arithmetic": {
      -      "description": "How the date is worked out.",
      -      "type": "string"
      -    },
      -    "clocks": {
      -      "description": "Dates computed from register rows that state both the start event and the period.",
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "clockStarts": {
      -            "description": "What starts the clock, as the register row states it.",
      -            "type": "string"
      -          },
      -          "daysFromToday": {
      -            "type": "integer"
      -          },
      -          "endsOn": {
      -            "description": "The date plus the period, YYYY-MM-DD.",
      -            "type": "string"
      -          },
      -          "freeOfficialRoute": {
      -            "additionalProperties": false,
      -            "description": "The free official route, first: the official page this rule was read from (its source), the official steps we hold from that body's own pages, and its contacts where we hold them, each with the page it was read from and the date we read it.",
      -            "properties": {
      -              "contacts": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "kind": {
      -                      "enum": [
      -                        "phone",
      -                        "email",
      -                        "form",
      -                        "post",
      -                        "web",
      -                        "office"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "note": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "read": {
      -                      "type": "string"
      -                    },
      -                    "sourceUrl": {
      -                      "format": "uri",
      -                      "type": "string"
      -                    },
      -                    "value": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "kind",
      -                    "value",
      -                    "note",
      -                    "sourceUrl",
      -                    "read"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "contactsNote": {
      -                "description": "Set when we hold no checked contact for this body.",
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "institution": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "sourcePage": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "read": {
      -                    "type": "string"
      -                  },
      -                  "url": {
      -                    "format": "uri",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "url",
      -                  "read"
      -                ],
      -                "type": "object"
      -              },
      -              "steps": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "publisher": {
      -                      "type": "string"
      -                    },
      -                    "quote": {
      -                      "description": "The official wording, verbatim.",
      -                      "type": "string"
      -                    },
      -                    "quoteLang": {
      -                      "type": "string"
      -                    },
      -                    "read": {
      -                      "type": "string"
      -                    },
      -                    "text": {
      -                      "description": "Our English gloss of the official wording.",
      -                      "type": "string"
      -                    },
      -                    "url": {
      -                      "format": "uri",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "text",
      -                    "quote",
      -                    "quoteLang",
      -                    "publisher",
      -                    "url",
      -                    "read"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "required": [
      -              "sourcePage",
      -              "steps",
      -              "institution",
      -              "contacts",
      -              "contactsNote"
      -            ],
      -            "type": "object"
      -          },
      -          "ifMissed": {
      -            "description": "What the register row says happens if it is missed.",
      -            "type": "string"
      -          },
      -          "kind": {
      -            "description": "window_ends: the period to act ends on endsOn. transfer_from: from endsOn the money can be moved away, on the conditions the rule states.",
      -            "enum": [
      -              "window_ends",
      -              "transfer_from"
      -            ],
      -            "type": "string"
      -          },
      -          "periodUsed": {
      -            "description": "The words of the register row the period was read from.",
      -            "type": "string"
      -          },
      -          "quote": {
      -            "additionalProperties": false,
      -            "description": "The source's own wording, verbatim, and the English translation stored in our register where the original is not English.",
      -            "properties": {
      -              "text": {
      -                "type": "string"
      -              },
      -              "translation": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "text",
      -              "translation"
      -            ],
      -            "type": "object"
      -          },
      -          "read": {
      -            "description": "The date we read the source, YYYY-MM-DD.",
      -            "type": "string"
      -          },
      -          "rowId": {
      -            "description": "The row in our deadline register, https://pensionhunter.ai/deadlines.",
      -            "type": "string"
      -          },
      -          "rule": {
      -            "description": "The rule, as our register states it.",
      -            "type": "string"
      -          },
      -          "runsFor": {
      -            "description": "How long it runs, as the register row states it.",
      -            "type": "string"
      -          },
      -          "source": {
      -            "description": "The domain of the official source.",
      -            "type": "string"
      -          },
      -          "sourceGap": {
      -            "description": "What the official source does not say, as the register row records it.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "enum": [
      -              "open",
      -              "passed"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "rowId",
      -          "rule",
      -          "clockStarts",
      -          "runsFor",
      -          "ifMissed",
      -          "sourceGap",
      -          "source",
      -          "read",
      -          "quote",
      -          "freeOfficialRoute",
      -          "kind",
      -          "periodUsed",
      -          "endsOn",
      -          "status",
      -          "daysFromToday"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "country": {
      -      "type": "string"
      -    },
      -    "date": {
      -      "description": "The date sent, YYYY-MM-DD.",
      -      "type": "string"
      -    },
      -    "event": {
      -      "enum": [
      -        "left",
      -        "died"
      -      ],
      -      "type": "string"
      -    },
      -    "iso2": {
      -      "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"
      -    },
      -    "next_step": {
      -      "additionalProperties": false,
      -      "description": "What we add to the free official route, as one structured field built from the finding: one line to pass on, the pre-filled order link with a source tag, the tier, the country and the fee from our price config. Country tier for one or two likely countries; Global only when three or more countries are likely. Absent when the result found nothing in a country we research, or names only mapped countries.",
      -      "properties": {
      -        "compare": {
      -          "additionalProperties": false,
      -          "description": "For two likely countries: two Country reports against one Global report, both prices from our config. Global is best from 3 countries.",
      -          "properties": {
      -            "country_reports_usd": {
      -              "type": "integer"
      -            },
      -            "global_usd": {
      -              "type": "integer"
      -            },
      -            "reason": {
      -              "type": "string"
      -            },
      -            "recommended": {
      -              "enum": [
      -                "country"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "country_reports_usd",
      -            "global_usd",
      -            "recommended",
      -            "reason"
      -          ],
      -          "type": "object"
      -        },
      -        "countries": {
      -          "description": "Every country the step covers, ISO codes.",
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        },
      -        "country": {
      -          "description": "ISO 3166 alpha-2 code of the country, or the first of them.",
      -          "type": "string"
      -        },
      -        "line": {
      -          "description": "One line to pass on to the person, with the fee.",
      -          "type": "string"
      -        },
      -        "order_url": {
      -          "description": "Our order page with tier and countries filled in and utm_source=connector, utm_medium=mcp, utm_campaign=<tool>. Never personal data.",
      -          "format": "uri",
      -          "type": "string"
      -        },
      -        "price_usd": {
      -          "description": "The fee in whole US dollars, from our price config.",
      -          "type": "integer"
      -        },
      -        "refund": {
      -          "description": "The refund promise, from our pricing config.",
      -          "type": "string"
      -        },
      -        "refund_url": {
      -          "description": "The page that defines the refund promise.",
      -          "format": "uri",
      -          "type": "string"
      -        },
      -        "tier": {
      -          "enum": [
      -            "country",
      -            "global"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "line",
      -        "order_url",
      -        "tier",
      -        "country",
      -        "countries",
      -        "price_usd",
      -        "refund",
      -        "refund_url"
      -      ],
      -      "type": "object"
      -    },
      -    "note": {
      -      "description": "Identification only; the official body decides.",
      -      "type": "string"
      -    },
      -    "rulesWithoutDate": {
      -      "description": "Rules we hold for this country and event whose start is not stated or is not the date given: shown with their source, no date.",
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "clockStarts": {
      -            "description": "What starts the clock, as the register row states it.",
      -            "type": "string"
      -          },
      -          "freeOfficialRoute": {
      -            "additionalProperties": false,
      -            "description": "The free official route, first: the official page this rule was read from (its source), the official steps we hold from that body's own pages, and its contacts where we hold them, each with the page it was read from and the date we read it.",
      -            "properties": {
      -              "contacts": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "kind": {
      -                      "enum": [
      -                        "phone",
      -                        "email",
      -                        "form",
      -                        "post",
      -                        "web",
      -                        "office"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "note": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "read": {
      -                      "type": "string"
      -                    },
      -                    "sourceUrl": {
      -                      "format": "uri",
      -                      "type": "string"
      -                    },
      -                    "value": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "kind",
      -                    "value",
      -                    "note",
      -                    "sourceUrl",
      -                    "read"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "contactsNote": {
      -                "description": "Set when we hold no checked contact for this body.",
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "institution": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              },
      -              "sourcePage": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "read": {
      -                    "type": "string"
      -                  },
      -                  "url": {
      -                    "format": "uri",
      -                    "type": "string"
      -                  }
      -                },
      -                "required": [
      -                  "url",
      -                  "read"
      -                ],
      -                "type": "object"
      -              },
      -              "steps": {
      -                "items": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "publisher": {
      -                      "type": "string"
      -                    },
      -                    "quote": {
      -                      "description": "The official wording, verbatim.",
      -                      "type": "string"
      -                    },
      -                    "quoteLang": {
      -                      "type": "string"
      -                    },
      -                    "read": {
      -                      "type": "string"
      -                    },
      -                    "text": {
      -                      "description": "Our English gloss of the official wording.",
      -                      "type": "string"
      -                    },
      -                    "url": {
      -                      "format": "uri",
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "text",
      -                    "quote",
      -                    "quoteLang",
      -                    "publisher",
      -                    "url",
      -                    "read"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "required": [
      -              "sourcePage",
      -              "steps",
      -              "institution",
      -              "contacts",
      -              "contactsNote"
      -            ],
      -            "type": "object"
      -          },
      -          "ifMissed": {
      -            "description": "What the register row says happens if it is missed.",
      -            "type": "string"
      -          },
      -          "quote": {
      -            "additionalProperties": false,
      -            "description": "The source's own wording, verbatim, and the English translation stored in our register where the original is not English.",
      -            "properties": {
      -              "text": {
      -                "type": "string"
      -              },
      -              "translation": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "text",
      -              "translation"
      -            ],
      -            "type": "object"
      -          },
      -          "read": {
      -            "description": "The date we read the source, YYYY-MM-DD.",
      -            "type": "string"
      -          },
      -          "rowId": {
      -            "description": "The row in our deadline register, https://pensionhunter.ai/deadlines.",
      -            "type": "string"
      -          },
      -          "rule": {
      -            "description": "The rule, as our register states it.",
      -            "type": "string"
      -          },
      -          "runsFor": {
      -            "description": "How long it runs, as the register row states it.",
      -            "type": "string"
      -          },
      -          "source": {
      -            "description": "The domain of the official source.",
      -            "type": "string"
      -          },
      -          "sourceGap": {
      -            "description": "What the official source does not say, as the register row records it.",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "whyNoDate": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "rowId",
      -          "rule",
      -          "clockStarts",
      -          "runsFor",
      -          "ifMissed",
      -          "sourceGap",
      -          "source",
      -          "read",
      -          "quote",
      -          "freeOfficialRoute",
      -          "whyNoDate"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "sample_report": {
      -      "description": "Our sample report, to read what a report holds before ordering.",
      -      "format": "uri",
      -      "type": "string"
      -    },
      -    "today": {
      -      "description": "The day the result was computed, UTC, YYYY-MM-DD.",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "country",
      -    "iso2",
      -    "event",
      -    "date",
      -    "today",
      -    "clocks",
      -    "rulesWithoutDate",
      -    "arithmetic",
      -    "note",
      -    "next_step"
      -  ],
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changed
    • changedOutput schema / properties / next_step / properties / compare / description
      Previous value: -"For two likely countries: two Country reports against one Global report, both prices from our config. Global is recommended from three countries."New value: +"For two likely countries: two Country reports against one Global report, both prices from our config. Global is best from 3 countries."
  3. Changed5 schema fields changed
    • addedOutput schema / properties / next_step / properties / compare
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "For two likely countries: two Country reports against one Global report, both prices from our config. Global is recommended from three countries.",
      +  "properties": {
      +    "country_reports_usd": {
      +      "type": "integer"
      +    },
      +    "global_usd": {
      +      "type": "integer"
      +    },
      +    "reason": {
      +      "type": "string"
      +    },
      +    "recommended": {
      +      "enum": [
      +        "country"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "country_reports_usd",
      +    "global_usd",
      +    "recommended",
      +    "reason"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / next_step / properties / refund
      Added value: +{
      +  "description": "The refund promise, from our pricing config.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_step / properties / refund_url
      Added value: +{
      +  "description": "The page that defines the refund promise.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedOutput schema / properties / next_step / required
      Previous value: -[
      -  "line",
      -  "order_url",
      -  "tier",
      -  "country",
      -  "countries",
      -  "price_usd"
      -]New value: +[
      +  "line",
      +  "order_url",
      +  "tier",
      +  "country",
      +  "countries",
      +  "price_usd",
      +  "refund",
      +  "refund_url"
      +]
    • addedOutput schema / properties / sample_report
      Added value: +{
      +  "description": "Our sample report, to read what a report holds before ordering.",
      +  "format": "uri",
      +  "type": "string"
      +}
  4. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and non-open-world, and the description adds genuinely new behavior: results come from a register with an official source and read date, some dates are estimates because the start event depends on circumstances, and 'Nothing is stored.' That estimate caveat and the no-persistence guarantee are not derivable from annotations.

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?

Three short sentences, front-loaded with the returned value and its provenance, then the estimate caveat, then the no-storage note. Every sentence earns its place, though the phrasing is slightly compressed and the caveat clause is a little tangled.

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 no output schema, the description does the work of sketching the response: the date, the official source, the read date, and a flag about what to confirm for estimated cases. Combined with full schema coverage on four parameters and a safe read-only annotation profile, an agent has enough to call it correctly.

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%, including format, length bounds, enum values and the language default, so the schema carries the parameter burden. The description only echoes the 'left or died' event concept and adds no syntax, precedence or interaction rules beyond the schema.

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?

The description states a specific resource and result: the date a departure deadline runs out, derived from a deadline register plus the leave/death event. It is clear what the tool returns, but it never contrasts itself with plausible siblings such as country_pension_facts or authority_answer, so an agent must infer which tool answers a deadline question.

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?

Usage is only implied: the tool is for questions about when a departure deadline expires. There is no explicit when-to-use, no when-not-to-use, and no named alternative among the ten siblings, so routing remains a judgment call.

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.