Thea Docs

Connect Thea to your AI

One MCP endpoint, read-only, no account and no API key.

https://thealibrary.org/mcp

What is Thea

Thea is a knowledge library that people fill in and AI models read. It holds things models usually don't know yet: local shops, recent news, people and works that are too small or too new for training data.

Most of Thea is Korean for now. If a search outside Korea comes back empty, that is expected.

Connect

Endpoint: https://thealibrary.org/mcp · MCP Streamable HTTP (stateless JSON, POST only) · protocol versions 2025-06-18, 2025-03-26 and 2024-11-05.

Auth: none. No login, no key. The server hands out an Mcp-Session-Id on initialize; rate limits are counted per session.

Claude Code

claude mcp add --transport http thea https://thealibrary.org/mcp

Clients that use mcp.json (LM Studio, Cursor and others)

{
  "mcpServers": {
    "thea": {
      "url": "https://thealibrary.org/mcp"
    }
  }
}

Clients that only speak stdio

Bridge with mcp-remote (needs Node.js):

npx mcp-remote https://thealibrary.org/mcp

In an mcp.json that wants a command:

{
  "mcpServers": {
    "thea": {
      "command": "npx",
      "args": ["mcp-remote", "https://thealibrary.org/mcp"]
    }
  }
}

No MCP at all

The same tools as OpenAI-style function definitions, for llama.cpp, Ollama, vLLM or any API that takes tools. Each tool maps to a plain GET endpoint (/ai/search, /ai/find, /ai/planet/{id}):

https://thealibrary.org/ai/tools.json

Step-by-step guides for Claude, ChatGPT, Gemini and local apps (in five languages): thealibrary.org/connect. A short guide for crawlers: /llms.txt.

Tools

All tools are read-only. Every response includes the license line to cite.

thea_search

Use it when you know a name. Returns one trimmed entry (about 1,000 characters) plus candidates when several entries share the name. Actor 박지훈 and a singer whose real name is 박지훈 are different entries; check candidates.

ParameterWhat it does
qThe name. Korean things are stored under their Korean name, foreign ones under their English name (IU → 아이유, Seogwipo → 서귀포시, 도쿄 → Tokyo). If nothing matches, try once more in the other language.
modequick (default) or detail for long sections and full candidate fields.
limitDefault 5, max 20.
Example call
thea_search {"q": "여주온천"}

thea_find

Use it when you don't know a name and want a list by area, kind or condition ("Chinese restaurants in Semarang", "girl groups in Korea", "news since August"). Filters multiply: more filters, narrower list. Up to 20 results.

ParameterWhat it does
insideOnly entries inside this area. Best is an id from thea_search; a name works if it is the official full name (제주특별자치도, 서귀포시). Abroad, ISO 3166-2 codes work (AE-DU, JP-13). If the question names an area, always pass it.
countryCountry name, e.g. Japan or 일본. Pass it first for places outside Korea.
categoryOne or more of 인물, 단체, 작품, 장소, 사건, 제품, 게임 (person, organization, work, place, event, product, game).
subjectSubject code; a parent code includes its children (1200 travel includes 1210 lodging). Restaurants are 920. subjects.json
cuisineRestaurant type: an exact value (cuisines.json), an everyday word that covers several types (중식, Chinese, 카페 — cuisine_groups.json), or a dish not in either table (갈비찜, 콩국수), which searches the menus.
fieldkey=value, several joined with ;, value * means "filled in". e.g. group_type=걸그룹, nationality=Japan, featured_in=*. All keys and values: filters.json
nameOnly entries whose name, other name or English name contains these words.
sinceDated records on or after YYYY-MM-DD. Past ones come in results (newest first), scheduled ones in upcoming.
sortrating puts entries people liked first.
pety for pet-friendly places, n for not.
limitDefault and max 20.
Example call
thea_find {"country": "Indonesia", "inside": "Semarang", "cuisine": "Chinese"}

thea_entry

Use it to open one entry in full with an id from the other two tools: every field, every connection (each with an id), and its dated records (satellites), newest first. To go deeper, call it again with an id from the result.

ParameterWhat it does
planet_idEntry id (an exact name also works, but names can be shared).
satellitesHow many dated records to list. Default 5, max 50.
satellite_typeOnly one kind of record, e.g. 음반 (albums), 수상 (awards).
Example call
thea_entry {"planet_id": "e2131374-33f6-4036-9354-8a6ee2540d33"}

search / fetch

The generic pair that ChatGPT connectors and deep research call. search takes a name or "region + kind" (여주 온천, 명일동 중식) and returns ids; fetch returns that entry as Markdown. If your client can use the three tools above, prefer them: they give same-name candidates, filters, ratings and views.

Example call
search {"query": "명일동 중식"}

Reference files

Try these

Rate limits

Thea runs on a free-tier server, so it limits bursts rather than blocking. Limits are per MCP session (per IP for direct HTTP calls).

WhatLimit
thea_search, thea_find, search10 calls in a burst, then 1 call every 6 seconds (about 600 an hour)
thea_entry, fetch100 different entries an hour (opening the same entry again doesn't count)

Over the limit you get HTTP 429 with Retry-After. Over MCP, if the wait is 8 seconds or less the server waits and then answers, so the model doesn't see an error. One IP running many sessions is capped at 10 times the per-session limit.

License

The database is CC BY 4.0. Values that come from a named source (public data, a wiki, a news article) also keep that source's terms; each entry lists its sources.

When you use Thea in an answer or a product, add one line:

Source: [Thea](https://thealibrary.org) · CC BY 4.0

Feedback

Questions, bugs, missing places or wrong data: email [email protected]. If you know places in your area, you can add them yourself at thealibrary.org.