Scythian dictionary access

An MCP server and JSON API over the English Wiktionary's Proto-Scythian entries — the reconstructed Eastern Iranian language of the steppe nomads (Scythians, Sarmatians, Saka), ancestor of Ossetian and Khotanese. Scythian left no texts: every lemma is a scholarly reconstruction (asterisked, e.g. *tiɣri 'bitter'), and the corpus is a few dozen words — this service exists so LLMs cite those real reconstructions, their etymologies and their descendant trees instead of inventing "Scythian". Read-only.

MCP JSON API politely cached rate limited

Connect an MCP client

Remote streamable-HTTP endpoint — no auth, read-only: https://scythian.valksor.com/mcp

Claude Code — CLI

claude mcp add --transport http scythian https://scythian.valksor.com/mcp

Cursor · Cline — remote url (~/.cursor/mcp.json)

{
  "mcpServers": {
    "scythian": { "url": "https://scythian.valksor.com/mcp" }
  }
}

VS Code .vscode/mcp.json

{
  "servers": {
    "scythian": { "type": "http", "url": "https://scythian.valksor.com/mcp" }
  }
}

Claude Desktop · Windsurf · other stdio clients — bridge via mcp-remote (claude_desktop_config.json)

{
  "mcpServers": {
    "scythian": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://scythian.valksor.com/mcp"]
    }
  }
}

Claude Desktop only accepts command-based (stdio) servers in its config, so a bare url is rejected — the bridge above wraps the remote endpoint. On Pro/Team/Enterprise you can instead add it under Settings → Connectors → Add custom connector and paste https://scythian.valksor.com/mcp.

Codex CLI ~/.codex/config.toml

[mcp_servers.scythian]
command = "npx"
args = ["-y", "mcp-remote", "https://scythian.valksor.com/mcp"]

Rule of thumb: clients with native streamable-HTTP/SSE support take the url directly (Claude Code, Cursor, Cline, VS Code); stdio-only desktop apps wrap it with npx -y mcp-remote https://scythian.valksor.com/mcp.

Two tools

search_scythian
query — Scythian: the lemma in any spelling (plain ASCII works: tigri finds *tiɣri; θ may be typed t or th); English: the word itself.
Returns senses + descendant handles (full payloads inline by default). With search_language=eng the query is an English word, matched against every entry's glosses, and the result lists the matching lemmas plus their entries.
get_descendants_scythian
entry_id (the bare lemma), word_class (the part of speech) from a handle.
Returns the full descendants payload — the reconstructed headword, etymology, English glosses and the reflex tree through Sarmatian→Alanic→Ossetian and Saka→Khotanese. Proto-Scythian has no inflection tables; descendants are this dictionary's depth.

Or call the JSON API

curl "https://scythian.valksor.com/api/search?query=tigri"
curl "https://scythian.valksor.com/api/search?query=bitter&search_language=eng"
curl "https://scythian.valksor.com/api/descendants?entry_id=tiɣri&word_class=adjective"

Interactive docs: /api/docs · OpenAPI schema: /api/openapi.json · LLM usage: /llms.txt

How lookup works

Plain ASCII works as a query — the reconstructed lemmas carry diacritics and special letters (ɣ θ δ β ə, macrons, carons), and every lemma is indexed under its folded spellings (tigri*tiɣri; hatti or haththi*haθθi; erzatu*ərzatu), with the result saying which way it was found (search_method = direct · lemma_index · translations). The reconstruction asterisk is optional. English→Scythian works from the same index: with search_language=eng the query is matched against every entry's English glosses — reconstructed languages have no Wiktionary translation tables, so the service sweeps the whole corpus once at startup and answers from its own index. Most English words match nothing: the reconstructed corpus is a few dozen lemmas — try simple concrete words ('horse', 'gold', 'bitter').