foundry-cli
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FOUNDRY_URL | Yes | Base URL of the Foundry instance, e.g. https://foundry.example.com | |
| FOUNDRY_WORLD | Yes | The world name that must be active | |
| FOUNDRY_GM_USER | Yes | Foundry user to authenticate as (must have GM role) | |
| FOUNDRY_BASIC_PASS | No | HTTP Basic Auth password | |
| FOUNDRY_BASIC_USER | No | HTTP Basic Auth username (if Foundry is behind a proxy) | |
| FOUNDRY_GM_PASSWORD | Yes | Password for that user |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| actor_listA | List all actors in the active Foundry world. Each actor includes _id, name, and type. Use Actor.<_id> as the UUID when linking to an actor sheet from journal content. |
| journal_listA | List all journal entries in the active Foundry world. |
| journal_upsertC | Create or update a journal entry by title. Idempotent. public=True sets OBSERVER ownership so players can see the journal. folder is created automatically if it does not exist. |
| journal_deleteA | Delete a journal entry by title. Returns False if not found. |
| category_listB | List all categories in a journal. |
| category_upsertB | Create a category within a journal. Idempotent. Categories must exist before pages can reference them. Common names: NPCs, Settlements, Factions, Locations. |
| category_deleteB | Delete a category from a journal by name. Returns False if not found. |
| page_listC | List all pages in a journal. Each page includes _category_name, title.level, and type fields. |
| page_upsertA | Create or update a journal page. Idempotent. content is HTML. level controls sidebar indentation (1=top, 2=indented under the preceding level-1 page). category must already exist — call category_upsert first. public=True sets OBSERVER ownership so players can see this page. index: 0-based position within the category. When set, all pages in the category are reindexed with clean sort values so the page lands at that position. Omit to leave sort order unchanged. |
| page_reorderA | Set sort order for a list of pages. Returns the number of pages updated. Assigns sort values 100000, 200000, ... to the listed pages in the given order. Pages not in the list are left untouched. Use this to establish ordering after bulk creation, or to fix sort conflicts. |
| page_deleteC | Delete a page from a journal by title. Returns False if not found. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a unique resource-action pair (actors, categories, journals, pages) with no overlaps. Operations like list, delete, upsert, and reorder are clearly separated by resource type.
All tool names follow a consistent verb_noun pattern with lowercase underscores (e.g., actor_list, category_upsert, page_reorder). No mixing of styles.
11 tools cover the essential operations for journal management in Foundry VTT: listing, creating/updating, deleting, and reordering across three resource types plus a read-only actor list. The count is well-scoped.
The tool set provides full CRUD for journals, categories, and pages, plus reordering for pages. Actors are intentionally read-only for linking. No obvious gaps in the intended domain.