worldanvil-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WA_AUTH_TOKEN | No | Your personal API token from World Anvil. | |
| WA_API_BASE_URL | No | Base URL of a proxy that injects an application key. Alternative to WA_APPLICATION_KEY. | |
| WA_APPLICATION_KEY | No | Your application key from World Anvil. Required unless using a proxy. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_identityA | Return the authenticated World Anvil user (id + username). Use to verify credentials are working. |
| list_worldsA | List all worlds owned by (or shared with) the authenticated user, with their ids. Usually the first call in a session — most other tools need a world_id from here. |
| get_worldA | Full details of one world: description, settings, counts and links. Use list_worlds first to find the world_id. |
| list_articlesA | List ALL articles in a world (auto-paginates; nothing is hidden). Every World Anvil entity — NPCs (person), locations, organizations, session reports, plots, myths — is an article with a template type, shown as [type] on each line. Optionally filter by category or template type. For keyword lookups prefer search_articles. |
| search_articlesA | Find articles in a world by keyword. Case-insensitive match against title, slug and tags. Multiple words must all match. Fast (metadata only) — to search inside article body text use search_content instead. Use get_article on a result id to read content. |
| get_articleA | Read one article in full: content (BBCode), sidebar, tags, category, relations, and template-specific fields (a person's dob/ethnicity/organizations, etc.). Content uses World Anvil BBCode; links to other articles appear as @Title mentions — those uuids can be fetched with get_article too, which makes this the way to walk the world's knowledge graph for context. |
| create_articleA | Create a new article in a world. Content is World Anvil BBCode ([h1]..[/h1], [b], [url], @Title mentions). New articles default to private+draft so you can review before publishing (pass state='public' and is_draft=false to publish immediately). |
| update_articleA | Update an existing article. Only the fields you provide are changed. NOTE: content is REPLACED wholesale — to edit, get_article first, modify, send back the full body. |
| delete_articleA | PERMANENTLY delete an article. This is irreversible — World Anvil has no trash bin for articles. Confirm with the user before deleting anything they didn't explicitly name. |
| list_categoriesA | List all categories (folders) of a world. Articles reference these by id in their category= field; use the ids to filter list_articles or to file new articles. |
| create_categoryA | Create a category (folder) in a world, optionally nested under a parent category. |
| update_categoryA | Rename a category or move it under a different parent. Only provided fields change. |
| delete_categoryA | PERMANENTLY delete a category (irreversible). Articles inside are NOT deleted — they become uncategorized. Confirm with the user first. |
| search_contentA | Full-text search INSIDE the world's text: article bodies (content, sidebars, footnotes …), GM-only secrets, and notebook notes, returning matches with context snippets. All words must appear in the same entity (case-insensitive). Backed by a local cache that self-refreshes on every call, so results are always current; the very first call on a world builds the cache and can take a minute. For title/tag lookups search_articles is faster. |
| find_referencesA | Find every article, secret or note that LINKS TO a given article. World Anvil stores links as @Title mentions, so this searches cached text for the target's uuid — exact backlinks, no false positives from name coincidences. Use it for questions like 'where is this NPC mentioned?' or before deleting an article. Self-refreshing cache; first call on a world builds it (can take a minute). |
| list_assetsA | List a world's non-article resources: secrets (GM-only notes), maps, timelines, histories (timeline events), notebooks, or subscribergroups (player visibility groups). Auto-paginates; returns one line per asset with its id. Use get_asset to read one in full. For articles use list_articles instead. |
| get_assetA | Read a single asset in full. kind=map returns the ASSEMBLED hierarchy (map + layers + marker groups + all markers with their article links — several API calls, worth it: markers are where geography meets lore). kind=notebook returns notebook + sections + notes. secret/timeline/history/subscribergroup return the entity itself. For articles use get_article. |
| export_worldA | Clone a COMPLETE world to a local directory as raw full-granularity JSON — articles, categories, secrets, map hierarchies (layers/groups/markers), timelines, histories, notebooks+notes, subscriber groups, world meta — plus downloaded image binaries and an entities.json id→{title,slug,file} index for rewriting @mention links during migration. Makes hundreds of API calls; takes minutes on a large world. Returns a summary; data goes to disk, NOT into context — read specific exported files afterwards if needed. Refuses to write into a non-empty directory that isn't a previous export. Requires an absolute output path. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/daireb/worldanvil-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server