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.
Creates a private word group with a name and optional description. requestId makes retries idempotent. Words join a group through save_word's addGroupIds. Subject to the plan's group limit.
Code of the learning language, for example en-GB or es-ES.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http polidict https://api.polidict.com/mcp
Creates a private word group with a name and optional description. requestId makes retries idempotent. Words join a group through save_word's addGroupIds. Subject to the plan's group limit.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| requestId* | string | |
| description | any | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
{
"type": "object",
"required": [
"requestId",
"languageCode",
"name"
],
"properties": {
"name": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 50,
"minLength": 1
},
"requestId": {
"type": "string",
"format": "uuid",
"maxLength": 36
},
"description": {
"anyOf": [
{
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
{
"type": "null"
}
]
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}Deletes one word group. Its words stay saved and only their membership in this group is removed. Requires the group's latest version. requestId makes retries idempotent.
| Argument | Type | Description |
|---|---|---|
| groupId* | string | |
| requestId* | string | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
| expectedVersion* | string | Opaque revision token from the latest read or save of this item. A stale token returns WORD_CHANGED or GROUP_CHANGED without saving. |
{
"type": "object",
"required": [
"requestId",
"languageCode",
"groupId",
"expectedVersion"
],
"properties": {
"groupId": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"requestId": {
"type": "string",
"format": "uuid",
"maxLength": 36
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
},
"expectedVersion": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 64,
"minLength": 1,
"description": "Opaque revision token from the latest read or save of this item. A stale token returns WORD_CHANGED or GROUP_CHANGED without saving."
}
},
"additionalProperties": false
}Finds the learner's word groups by name, or browses them, with IDs, versions and descriptions. Results are paged; pass nextCursor to continue. A group's words are listed by find_my_words with its group ID.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| limit | integer | |
| cursor | string | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
{
"type": "object",
"required": [
"languageCode"
],
"properties": {
"name": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 50,
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"cursor": {
"type": "string",
"pattern": "^[0-9]{1,6}$"
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}Finds the learner's saved words by text or group, or browses them, with meanings, examples, notes, images, group membership, IDs and versions. Results are paged; pass nextCursor to continue.
| Argument | Type | Description |
|---|---|---|
| text | string | |
| limit | integer | |
| cursor | string | |
| groupIds | array | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
{
"type": "object",
"required": [
"languageCode"
],
"properties": {
"text": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 50,
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"cursor": {
"type": "string",
"pattern": "^[0-9]{1,6}$"
},
"groupIds": {
"type": "array",
"items": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"minItems": 1
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}Returns the learner's languages, named word groups, a practice progress summary and the practice skills available, plus the current plan and remaining word and group capacity across all languages. Capacity is a snapshot; saves enforce the current limits. planInformationUrl links to a neutral page that explains plans and limits. A word's level reflects all its meanings and its writing, listening and speaking practice. timezone is an IANA name; when omitted, dates use UTC.
| Argument | Type | Description |
|---|---|---|
| timezone | string | |
| languageCode | string | Code of the learning language, for example en-GB or es-ES. |
{
"type": "object",
"required": [],
"properties": {
"timezone": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}Returns the connected Polidict account's ID, name, nickname and email.
No arguments.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}Returns a batch of the learner's saved words for practice, ten by default, for the meaning, writing, listening or speaking skills. selection: recommended (default) returns due practice first (early steps, then the most overdue reviews), then writing, listening or speaking for words already in progress (writing only after a meaning was answered correctly), then the newest words only when nothing is due; due returns only practice due now; new returns words not yet practised in the requested skills; all ignores scheduling. Each item includes the word, its meanings and examples, practiceTargets naming the skill and meaning to practise next, and speechUrl when saved pronunciation audio exists. The returned practiceId identifies the batch for submit_training_results, and practiceGuidance states Polidict's exercise and saving rules. Read-only; an empty list means no suitable words. timezone is an IANA name; when omitted, dates use UTC.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| skills | array | |
| groupIds | array | |
| timezone | string | |
| selection | string | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
Returns progress for one saved word. The overall level (new, learning, learned or mastered; inbox when the word has no meanings) comes from its weakest meaning or skill; learned requires every meaning plus writing, listening and speaking to be in regular reviews. Each meaning and each skill has a status (new: not practised yet and never due; learning: in short early steps; due: ready now, staying due for the rest of the learner's day; scheduled: next practice on a later date), a level, review counts and available dates. timezone is an IANA name; when omitted, dates use UTC.
| Argument | Type | Description |
|---|---|---|
| itemId* | string | |
| timezone | string | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
{
"type": "object",
"required": [
"languageCode",
"itemId"
],
"properties": {
"itemId": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"timezone": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}Looks up a word in Polidict's public dictionary and returns meanings, translations and examples. It reads only the public catalog, never the learner's saved words, and changes nothing. A miss returns no entries.
| Argument | Type | Description |
|---|---|---|
| text* | string | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
| translationLanguageCode | string | Code of the language for translations, for example uk-UA. Defaults to the signed-in learner's native language. |
{
"type": "object",
"required": [
"languageCode",
"text"
],
"properties": {
"text": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 50,
"minLength": 1
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
},
"translationLanguageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the language for translations, for example uk-UA. Defaults to the signed-in learner's native language."
}
},
"additionalProperties": false
}Creates a word, or updates an existing word when itemId and expectedVersion are both provided. Matching text alone never updates an existing word. Updates are patches: omitted fields stay unchanged and null clears supported fields. definitions edits a meaning by ID or adds one without an ID; removeDefinitionIds deletes those meanings with their examples and meaning progress; removing every meaning keeps the word. Each retained meaning needs definition text or a translation. appendExamples keeps existing examples, replaceExamples replaces them ([] clears), and the two cannot be combined. addGroupIds and removeGroupIds change only the listed memberships. imageUrl accepts a durable public HTTPS image URL; null removes the image. requestId makes retries idempotent when the input is identical. Subject to the plan's word limit.
| Argument | Type | Description |
|---|---|---|
| text | string | |
| itemId | string | ID of an existing word to update. Omit, together with expectedVersion, to create a word. |
| comment | any | |
| imageUrl | any | Durable public HTTPS URL of the image to set, or null to remove the image. Omitted keeps the current image. |
| requestId* | string | |
| addGroupIds | array | |
| definitions |
Searches stock photo providers for images that illustrate a saved word, using a short English query, and returns choices with photographer and source credits. Searching never changes the word's saved image; save_word with imageUrl sets one. Images are searched, never generated.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | |
| itemId* | string | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
{
"type": "object",
"required": [
"languageCode",
"itemId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 9,
"minimum": 1
},
"query": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 200,
"minLength": 1
},
"itemId": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}Saves the outcomes of practice exercises the learner actually attempted. confirmed records that the learner approved saving each included result, including failures; Polidict does not grade answers and stores the reported rating and whether it came from model assessment or learner self-assessment. Pass the batch's practiceId and a new requestId per submission; identical retries are idempotent. Each result needs the word's latest expectedVersion; a stale version returns WORD_CHANGED without saving. The response's progressSaved=true confirms the save, and updatedItems carries the new versions.
| Argument | Type | Description |
|---|---|---|
| results* | array | |
| timezone | string | |
| confirmed* | boolean | True when the learner saw each included result and agreed to save it. |
| requestId* | string | |
| practiceId* | string | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
{
"type": "object",
"required": [
"requestId",
"practiceId",
"languageCode",
"confirmed",
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"itemId",
"expectedVersion",
"definitionId",
"skill",
"rating",
"assessmentSource"
],
"properties": {
"skill": {
"enum": [
"meaning",
"writing",
"listening",
"speaking"
],
"type": "string"
},
"itemId": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"rating": {
"enum": [
"AGAIN",
"HARD",
"GOOD",
"EASY"
],
"type": "string",
"description": "Outcome of the attempt: AGAIN for incorrect or forgotten, HARD for correct with difficulty, GOOD for correct recall, EASY for recall the learner reported as effortless."
},
"definitionId": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"expectedVersion": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 64,
"minLength": 1,
"description": "Opaque revision token from the latest read or save of this item. A stale token returns WORD_CHANGED or GROUP_CHANGED without saving."
},
"assessmentSource": {
"enum": [
"model",
"learner"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 50,
"minItems": 1
},
"timezone": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"confirmed": {
"type": "boolean",
"const": true,
"description": "True when the learner saw each included result and agreed to save it."
},
"requestId": {
"type": "string",
"format": "uuid",
"maxLength": 36
},
"practiceId": {
"type": "string",
"format": "uuid",
"maxLength": 36
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}Renames a word group or changes its description; null clears the description. Requires the group's latest version. Sharing settings and the group image are preserved. requestId makes retries idempotent.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| groupId* | string | |
| requestId* | string | |
| description | any | |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
| expectedVersion* | string | Opaque revision token from the latest read or save of this item. A stale token returns WORD_CHANGED or GROUP_CHANGED without saving. |
{
"type": "object",
"anyOf": [
{
"required": [
"name"
]
},
{
"required": [
"description"
]
}
],
"required": [
"requestId",
"languageCode",
"groupId",
"expectedVersion"
],
"properties": {
"name": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 50,
"minLength": 1
},
"groupId": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"requestId": {
"type": "string",
"format": "uuid",
"maxLength": 36
},
"description": {
"anyOf": [
{
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
{
"type": "null"
}
]
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
},
"expectedVersion": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 64,
"minLength": 1,
"description": "Opaque revision token from the latest read or save of this item. A stale token returns WORD_CHANGED or GROUP_CHANGED without saving."
}
},
"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 9, 2026.
{
"type": "object",
"required": [
"languageCode"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"skills": {
"type": "array",
"items": {
"enum": [
"meaning",
"writing",
"listening",
"speaking"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1
},
"groupIds": {
"type": "array",
"items": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"minItems": 1
},
"timezone": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"selection": {
"enum": [
"recommended",
"due",
"new",
"all"
],
"type": "string"
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
}
},
"additionalProperties": false
}| array |
| Meaning patches. An existing definition ID edits that meaning; an entry without an ID adds a meaning. Omitted meanings and fields stay unchanged. |
| languageCode* | string | Code of the learning language, for example en-GB or es-ES. |
| removeGroupIds | array |
| expectedVersion | string | Opaque revision token from the latest read or save of this item. A stale token returns WORD_CHANGED or GROUP_CHANGED without saving. |
| removeDefinitionIds | array |
{
"type": "object",
"required": [
"requestId",
"languageCode"
],
"properties": {
"text": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 50,
"minLength": 1
},
"itemId": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1,
"description": "ID of an existing word to update. Omit, together with expectedVersion, to create a word."
},
"comment": {
"anyOf": [
{
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 300,
"minLength": 1
},
{
"type": "null"
}
]
},
"imageUrl": {
"anyOf": [
{
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 300,
"minLength": 1
},
{
"type": "null"
}
],
"description": "Durable public HTTPS URL of the image to set, or null to remove the image. Omitted keeps the current image."
},
"requestId": {
"type": "string",
"format": "uuid",
"maxLength": 36
},
"addGroupIds": {
"type": "array",
"items": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"minItems": 1
},
"definitions": {
"type": "array",
"items": {
"type": "object",
"required": [],
"properties": {
"id": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"comment": {
"anyOf": [
{
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 200,
"minLength": 1
},
{
"type": "null"
}
]
},
"definition": {
"anyOf": [
{
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 300,
"minLength": 1
},
{
"type": "null"
}
]
},
"translation": {
"anyOf": [
{
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
{
"type": "null"
}
]
},
"appendExamples": {
"type": "array",
"items": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 200,
"minLength": 1
},
"maxItems": 10,
"minItems": 1
},
"replaceExamples": {
"type": "array",
"items": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 200,
"minLength": 1
},
"maxItems": 10,
"minItems": 0
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "Meaning patches. An existing definition ID edits that meaning; an entry without an ID adds a meaning. Omitted meanings and fields stay unchanged."
},
"languageCode": {
"enum": [
"en-US",
"en-GB",
"es-ES",
"es-MX",
"uk-UA",
"pl-PL",
"fr-FR",
"fr-CA",
"de-DE",
"de-AT",
"de-CH",
"it-IT",
"ko-KR",
"ja-JP",
"sv-SE",
"ar-SA",
"nl-NL",
"nl-BE",
"zh-CN"
],
"type": "string",
"description": "Code of the learning language, for example en-GB or es-ES."
},
"removeGroupIds": {
"type": "array",
"items": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"minItems": 1
},
"expectedVersion": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 64,
"minLength": 1,
"description": "Opaque revision token from the latest read or save of this item. A stale token returns WORD_CHANGED or GROUP_CHANGED without saving."
},
"removeDefinitionIds": {
"type": "array",
"items": {
"type": "string",
"pattern": ".*\\S.*",
"maxLength": 100,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"uniqueItems": true
}
},
"additionalProperties": false
}