[
  {
    "name": "create_check",
    "description": "The main feature - check a text with LanguageTool for possible style and grammar issues.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "The text to be checked. This or 'data' is required."
        },
        "data": {
          "type": "string",
          "description": "The text to be checked, given as a JSON document that specifies what's text and what's markup. This or 'text' is required. Markup will be ignored when looking for errors. Example text: <pre>A &lt;b>test&lt;/b></pre>JSON for the example text: <pre>{\"annotation\":[\n {\"text\": \"A \"},\n {\"markup\": \"&lt;b>\"},\n {\"text\": \"test\"},\n {\"markup\": \"&lt;/b>\"}\n]}</pre> <p>If you have markup that should be interpreted as whitespace, like <tt>&lt;p&gt;</tt> in HTML, you can have it interpreted like this: <pre>{\"markup\": \"&lt;p&gt;\", \"interpretAs\": \"\\n\\n\"}</pre><p>The 'data' feature is not limited to HTML or XML, it can be used for any kind of markup. Entities will need to be expanded in this input."
        },
        "language": {
          "type": "string",
          "description": "A language code like `en-US`, `de-DE`, `fr`, or `auto` to guess the language automatically (see `preferredVariants` below). For languages with variants (English, German, Portuguese) spell checking will only be activated when you specify the variant, e.g. `en-GB` instead of just `en`."
        },
        "username": {
          "type": "string",
          "description": "Set to get Premium API access: Your username/email as used to log in at languagetool.org."
        },
        "apiKey": {
          "type": "string",
          "description": "Set to get Premium API access: <a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>your API key</a>"
        },
        "dicts": {
          "type": "string",
          "description": "Comma-separated list of dictionaries to include words from; uses special default dictionary if this is unset"
        },
        "motherTongue": {
          "type": "string",
          "description": "A language code of the user's native language, enabling false friends checks for some language pairs."
        },
        "preferredVariants": {
          "type": "string",
          "description": "Comma-separated list of preferred language variants. The language detector used with `language=auto` can detect e.g. English, but it cannot decide whether British English or American English is used. Thus this parameter can be used to specify the preferred variants like `en-GB` and `de-AT`. Only available with `language=auto`. You should set variants for at least German and English, as otherwise the spell checking will not work for those, as no spelling dictionary can be selected for just `en` or `de`."
        },
        "enabledRules": {
          "type": "string",
          "description": "IDs of rules to be enabled, comma-separated"
        },
        "disabledRules": {
          "type": "string",
          "description": "IDs of rules to be disabled, comma-separated"
        },
        "enabledCategories": {
          "type": "string",
          "description": "IDs of categories to be enabled, comma-separated"
        },
        "disabledCategories": {
          "type": "string",
          "description": "IDs of categories to be disabled, comma-separated"
        },
        "enabledOnly": {
          "type": "boolean",
          "description": "If true, only the rules and categories whose IDs are specified with `enabledRules` or `enabledCategories` are enabled."
        },
        "level": {
          "type": "string",
          "description": "If set to `picky`, additional rules will be activated, i.e. rules that you might only find useful when checking formal text."
        }
      },
      "required": [
        "language"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/check",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_words_add",
    "description": "Add a word to one of the user's personal dictionaries. Please note that this feature is considered to be used for personal dictionaries which must not contain more than 500 words. If this is an issue for you, please contact us.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "word": {
          "type": "string",
          "description": "The word to be added. Must not be a phrase, i.e. cannot contain white space. The word is added to a global dictionary that applies to all languages."
        },
        "username": {
          "type": "string",
          "description": "Your username as used to log in at languagetool.org."
        },
        "apiKey": {
          "type": "string",
          "description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>"
        },
        "dict": {
          "type": "string",
          "description": "Name of the dictionary to add the word to; non-existent dictionaries are created after calling this; if unset, adds to special default dictionary"
        }
      },
      "required": [
        "word",
        "username",
        "apiKey"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/words/add",
      "effect": "writes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "create_words_delete",
    "description": "Remove a word from one of the user's personal dictionaries.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "word": {
          "type": "string",
          "description": "The word to be removed."
        },
        "username": {
          "type": "string",
          "description": "Your username as used to log in at languagetool.org."
        },
        "apiKey": {
          "type": "string",
          "description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>"
        },
        "dict": {
          "type": "string",
          "description": "Name of the dictionary to remove the word from; if the dictionary is empty upon calling this, it is deleted; if unset, removes from special default dictionary"
        }
      },
      "required": [
        "word",
        "username",
        "apiKey"
      ]
    },
    "x-dyph": {
      "method": "POST",
      "path": "/words/delete",
      "effect": "deletes",
      "verification": "unverified",
      "checkedAt": null
    }
  },
  {
    "name": "get_languages",
    "description": "Get a list of supported languages.",
    "inputSchema": {
      "type": "object",
      "properties": {}
    },
    "x-dyph": {
      "method": "GET",
      "path": "/languages",
      "effect": "reads",
      "verification": "verified",
      "checkedAt": "2026-10-10"
    }
  },
  {
    "name": "get_words",
    "description": "List words in the user's personal dictionaries.",
    "inputSchema": {
      "type": "object",
      "properties": {
        "offset": {
          "type": "integer",
          "description": "Offset of where to start in the list of words. Defaults to 0."
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of words to return. Defaults to 10."
        },
        "username": {
          "type": "string",
          "description": "Your username as used to log in at languagetool.org."
        },
        "apiKey": {
          "type": "string",
          "description": "<a target='_blank' href='https://languagetool.org/editor/settings/access-tokens'>Your API key</a>"
        },
        "dicts": {
          "type": "string",
          "description": "Comma-separated list of dictionaries to include words from; uses special default dictionary if this is unset"
        }
      },
      "required": [
        "username",
        "apiKey"
      ]
    },
    "x-dyph": {
      "method": "GET",
      "path": "/words",
      "effect": "reads",
      "verification": "unverified",
      "checkedAt": null
    }
  }
]
