Official passport, visa and ID photo requirements for 290 documents, with source and date.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Resolve a user's country and document into the slug the other tools take. Pass the words the user used ('India passport', 'Schengen visa', 'UK passport digital', '2x2'). Returns JSON text with up to 5 matches, each with 'slug' (use it for get_photo_spec and get_make_link), the country, the document family, the title and a 'url' to cite, plus an 'attribution' line to quote with the answer.
The user's words for the document, usually country plus document type, e.g. 'Canada passport' or 'US visa'.
Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages.
Optional country name, alias, ISO code or slug to restrict the matches to one country, e.g. 'India', 'UK', 'us'.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http surepassportphoto https://surepassportphoto.com/mcp/
Resolve a user's country and document into the slug the other tools take. Pass the words the user used ('India passport', 'Schengen visa', 'UK passport digital', '2x2'). Returns JSON text with up to 5 matches, each with 'slug' (use it for get_photo_spec and get_make_link), the country, the document family, the title and a 'url' to cite, plus an 'attribution' line to quote with the answer.
| Argument | Type | Description |
|---|---|---|
| query* | string | The user's words for the document, usually country plus document type, e.g. 'Canada passport' or 'US visa'. |
| locale | string | Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages. |
| country | string | Optional country name, alias, ISO code or slug to restrict the matches to one country, e.g. 'India', 'UK', 'us'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "The user's words for the document, usually country plus document type, e.g. 'Canada passport' or 'US visa'."
},
"locale": {
"enum": [
"en",
"es",
"fr",
"de",
"pt",
"hi",
"ar",
"zh",
"ru",
"vi",
"tr",
"id",
"ja"
],
"type": "string",
"description": "Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages."
},
"country": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Optional country name, alias, ISO code or slug to restrict the matches to one country, e.g. 'India', 'UK', 'us'."
}
},
"additionalProperties": false
}A link that opens the photo tool for one document, so the user takes or uploads the photo on their own device. The photo is processed privately in the user's browser and is never sent through this connection: never ask the user for the photo here. Returns JSON text with 'url' (give it to the user), an 'instruction' sentence and an 'attribution' line.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Document slug in the form '<country-slug>/<document-slug>', exactly as returned by find_document (for example 'united-states/passport', 'india/passport', 'schengen/schengen-visa'). The ISO-code form 'us/passport' is also accepted. |
| client | string | Short lower-case name of the assistant for the link's utm_medium, e.g. 'claude', 'gemini', 'chatgpt'. Default 'assistant'. |
| locale | string | Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"minLength": 3,
"description": "Document slug in the form '<country-slug>/<document-slug>', exactly as returned by find_document (for example 'united-states/passport', 'india/passport', 'schengen/schengen-visa'). The ISO-code form 'us/passport' is also accepted."
},
"client": {
"type": "string",
"pattern": "^[a-z0-9_-]{1,32}$",
"description": "Short lower-case name of the assistant for the link's utm_medium, e.g. 'claude', 'gemini', 'chatgpt'. Default 'assistant'."
},
"locale": {
"enum": [
"en",
"es",
"fr",
"de",
"pt",
"hi",
"ar",
"zh",
"ru",
"vi",
"tr",
"id",
"ja"
],
"type": "string",
"description": "Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages."
}
},
"additionalProperties": false
}The official photo requirements of one document: print size in mm and inches, pixel size, digital file limits, head height and eye line as percentages of the photo height, background, glasses, expression, head covering, photo age, the authority's own guidance on photos taken at home, the source URL and the date it was last verified. Returns JSON text; numbers are millimetres, pixels, kilobytes or percentages as named. Quote the 'url' and the 'attribution' line in the answer and offer 'makeUrl' when the user wants the photo made.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Document slug in the form '<country-slug>/<document-slug>', exactly as returned by find_document (for example 'united-states/passport', 'india/passport', 'schengen/schengen-visa'). The ISO-code form 'us/passport' is also accepted. |
| locale | string | Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"minLength": 3,
"description": "Document slug in the form '<country-slug>/<document-slug>', exactly as returned by find_document (for example 'united-states/passport', 'india/passport', 'schengen/schengen-visa'). The ISO-code form 'us/passport' is also accepted."
},
"locale": {
"enum": [
"en",
"es",
"fr",
"de",
"pt",
"hi",
"ar",
"zh",
"ru",
"vi",
"tr",
"id",
"ja"
],
"type": "string",
"description": "Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages."
}
},
"additionalProperties": false
}Every country in the dataset with its ISO code, slug, number of documents and the URL of its page. Returns JSON text (about 12 KB) with 'count', 'countries' and an 'attribution' line. Use find_document instead when the user already named a country.
| Argument | Type | Description |
|---|---|---|
| locale | string | Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"locale": {
"enum": [
"en",
"es",
"fr",
"de",
"pt",
"hi",
"ar",
"zh",
"ru",
"vi",
"tr",
"id",
"ja"
],
"type": "string",
"description": "Language of the prose fields (title, summary, rules). One of: en, es, fr, de, pt, hi, ar, zh, ru, vi, tr, id, ja. Default 'en'. Official quotes and every number are identical in all languages."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.