Fantasy World MCP Simulator
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fantasy World MCP SimulatorInitialize a world from a small cave discovered by refugees."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fantasy World MCP Simulator
A Model Context Protocol (MCP) server for procedural fantasy world generation and evolution simulation. Starting from a simple event (like "a small cave"), it simulates anthropological and geographical changes over centuries, generating rich history, dungeons, cities, and events for fantasy settings.
Features
Procedural History Generation: Simulate centuries of world evolution from simple starting conditions
Anthropological Simulation: Population growth, technology progression, social organization evolution
Geographical Changes: Resource dynamics, natural events, terrain modifications
Location Evolution: Cave → Settlement → Village → City → Ruins progression
Monster System: Dragons, giants, orcs, goblins, undead with raid mechanics, counter-attacks, extinction
Quest Generation: Auto-generated quests for monster hunts, famine, disease, resource shortages
Craft/Heritage System: Magical items, weapons, artifacts with rarities and hidden/lost heritage
Religion & Belief System: Pantheons, monotheism, animism, cults with faith-based defense, religious quests, holy items
Causal Event Tracking: Every event links back to its causes
Multiple Export Formats: JSON, Markdown, narrative, GM notes with adventure hooks
World Persistence: Load/restore worlds from saved JSON data (
loadWorldtool)
Related MCP server: rpg-mcp
Installation
# Clone or navigate to the project
cd fantasy-world-mcp
# Install dependencies
npm install
# Build the project
npm run buildConfiguration
Opencode Setup
Step 1: Build the project:
npm run buildStep 2: Add the MCP server to your opencode config (~/.config/opencode/opencode.json):
Add this to the "mcp" section of your config:
"mcp": {
"world-evolution": {
"type": "local",
"command": ["node", "/path/to/fantasy-world-mcp/dist/index.js"]
}
}Step 3: Verify it's working:
opencode mcp listYou should see:
✓ world-evolution connected
node /path/to/fantasy-world-mcp/dist/index.jsImportant: The resources parameter must be explicitly set (even to an empty object {}) when initializing a world, otherwise the API will fail.
Step 4: Start opencode and ask your AI to create a world!
VS Code / Cursor Setup
Add to your MCP client configuration:
{
"mcpServers": {
"world-evolution": {
"command": "node",
"args": ["/path/to/fantasy-world-mcp/dist/index.js"],
"cwd": "/path/to/fantasy-world-mcp"
}
}
}Alternative: npx (no installation)
{
"mcpServers": {
"world-evolution": {
"command": "npx",
"args": ["-y", "tsx", "/path/to/fantasy-world-mcp/src/index.ts"]
}
}
}Usage Guide for AI
1. Initialize a New World
Start by creating a world with initial conditions:
Tool: initializeWorld
Arguments:
{
"event": "A small cave discovered by 20 refugees fleeing a great war",
"locationType": "cave",
"region": "mountains",
"climate": "temperate",
"resources": {
"iron": 60,
"stone": 80,
"food": 40,
"water": 70
},
"population": {
"name": "The Exiles",
"size": 20,
"culture": "Mountain Folk",
"organization": "tribal"
}
}Parameter Guide:
event: Free-text description of the starting eventlocationType: cave, settlement, city, dungeon, fortress, temple, village, trade_post, ruins, landmarkregion: plains, mountains, forest, desert, swamp, hills, coastal, tundra, jungleclimate: arctic, temperate, tropical, arid, continentalresources: Object with resource names (iron, gold, silver, copper, wood, stone, food, water, magic, gems) and values 0-100population.name: Name of the starting grouppopulation.size: Initial population countpopulation.culture: Cultural identitypopulation.organization: nomadic, tribal, feudal, kingdom, empire
2. Run Simulation
Simulate history forward in time:
Tool: simulate
Arguments:
{
"worldId": "<returned from initializeWorld>",
"timespan": 500,
"stepSize": 10,
"complexity": "moderate",
"enableConflict": true,
"enableMigration": true,
"enableTechProgress": true
}Parameter Guide:
timespan: Years to simulate (100-2000 recommended)stepSize: Years per simulation step (1-50, smaller = more detailed)complexity:simple: Basic population and resource changesmoderate: + technology, migration, location evolutioncomplex: + conflict generation between populations
enableConflict: Allow wars and disputesenableMigration: Allow population movement and new settlementsenableTechProgress: Allow technological discoveries
3. Get Timeline
Retrieve the historical events:
Tool: getTimeline
Arguments:
{
"worldId": "<world ID>",
"startYear": 0,
"endYear": 500
}4. Get Current State
View the world's current state:
Tool: getWorldState
Arguments:
{
"worldId": "<world ID>"
}5. Generate Locations
Create specific locations like dungeons or cities:
Tool: generateLocation
Arguments:
{
"worldId": "<world ID>",
"locationType": "dungeon",
"name": "Dark Keep",
"description": "An ancient fortress abandoned after the great war"
}Location Types: dungeon, city, village, fortress, temple, landmark
6. Export World
Get the world in your preferred format:
Tool: exportWorld
Arguments:
{
"worldId": "<world ID>",
"format": "gm_notes",
"includeTimeline": true,
"includeLocations": true
}Export Formats:
json: Structured data for programmatic usemarkdown: Formatted documentationnarrative: Story-style chroniclegm_notes: Game master reference with adventure hooks
6b. Export World to File (For Large Worlds)
When exporting worlds after long simulations (500+ years, 100+ events), the output may exceed token limits. Use file-based export instead:
Tool: exportWorldToFile
Arguments:
{
"worldId": "<world ID>",
"format": "gm_notes",
"includeTimeline": true,
"includeLocations": true,
"filePath": "exports/myworld_1524.md" // Optional, default: exports/{worldId}_{timestamp}.{format}
}What it does:
Writes the export to a file in the
exports/directoryAuto-creates the directory if it doesn't exist
Returns the file path and file size
Avoids token limit issues with large worlds
Default file paths:
exports/{worldId}_{timestamp}.md(markdown)exports/{worldId}_{timestamp}.json(JSON)exports/{worldId}_{timestamp}.narrative(narrative)exports/{worldId}_{timestamp}.gm_notes(GM notes)
Reading exported files:
Tool: readExportFile
Arguments:
{
"filePath": "exports/myworld_1524.md",
"startLine": 1,
"endLine": 100 // Optional: read in chunks
}Pagination options:
startLine/endLine: Read specific line ranges (1-indexed)startByte/endByte: Read specific byte rangesReturns:
content,totalLines,totalBytes,lineRange,byteRange,hasMore
Use case example:
1. exportWorldToFile({ worldId: "abc-123", format: "gm_notes" })
→ Returns: { filePath: "exports/abc-123_1524.gm_notes", size: 45000 }
2. readExportFile({ filePath: "exports/abc-123_1524.gm_notes", startLine: 1, endLine: 50 })
→ Returns first 50 lines + metadata (hasMore: true)
3. readExportFile({ filePath: "exports/abc-123_1524.gm_notes", startLine: 51, endLine: 100 })
→ Returns next 50 lines + metadata (hasMore: true)
4. Continue until hasMore: falseThis allows you to export and read massive worlds (10k+ tokens) without hitting MCP response limits.
7. Add Population
Add new populations (including monsters) to an existing world:
Tool: addPopulation
Arguments:
{
"worldId": "<world ID>",
"name": "Orc Warband",
"size": 50,
"race": "monster",
"culture": "Hill Dwellers",
"organization": "tribal",
"monsterType": "orc",
"dangerLevel": 4,
"behavior": "aggressive"
}Use cases:
Add orc tribes after creating a human city
Introduce elves, dwarves, or other races mid-simulation
Spawn monster threats at specific times
8. Create Crafts/Heritage
Create magical items, weapons, books, artifacts, and lost heritage:
Tool: createCraft
Arguments:
{
"worldId": "<world ID>",
"name": "Sword of the Dawn",
"description": "A legendary blade forged in the first light of the new age",
"category": "weapon",
"rarity": "legendary",
"requiredTechLevel": 6,
"requiredResources": { "iron": 50, "magic": 30, "gems": 20 },
"creatorPopulationId": "<population ID>",
"location": "<location ID>",
"isHidden": false,
"effects": ["+3 damage", "glows in darkness", "burns undead"]
}Categories: weapon, armor, tool, artifact, book, jewelry, structure, relic
Rarities: common, uncommon, rare, legendary, mythic
Hidden Heritage: Set isHidden: true to create lost items that become adventure hooks:
"The legendary Sword of Dawn is lost. Ancient texts hint it may be hidden in an ancient battlefield."
Players can discover these during adventures
8b. Religion & Belief System
The simulation includes a complete religion/belief system that affects gameplay:
Belief Types:
Pantheon: Multiple gods with different domains (war, nature, healing, etc.)
Monotheism: Single deity worship
Animism: Nature spirits and ancestor veneration
Philosophy: Secular moral codes
Cult: Worship of powerful beings (often evil/chaotic)
Folk: Local traditions and customs
Faith Mechanics:
Defense Bonus: Populations with organized religion get +0.15 defense (war domain), holy sites give +0.10
Religious Quests: Pilgrimages, temple restoration, heresy suppression, relic recovery
Holy Items: Blessed weapons, sacred relics, religious artifacts (higher rarity)
Religious Conflicts: Populations with incompatible beliefs can become hostile
Temple Locations: Special locations with divine protection and healing properties
Example:
Population: "The Dwarven Clan"
Belief: "The Stone Father" (Monotheism, domains: fortress, war)
Defense Bonus: +0.15 (organized religion with war domain)
Holy Site: "Mountain Temple" (+0.10 defense when defending this location)9. Quest System
The simulation automatically generates serious quests when populations face problems they cannot solve:
Auto-Generated Quest Types:
Monster Hunts: When monster threat > population defense
Disease Cures: Plagues sweeping through large kingdoms/empires
Resource Recovery: Critical shortages (iron, magic, etc.)
Religious Quests: Pilgrimages, temple restoration, heresy suppression, relic recovery
Quest Properties:
Urgency: low, medium, high, critical
Deadline: Year by which quest must be completed
Heroes Needed: Number of heroes required (0 = open for players)
Consequences: Clear failure/success outcomes
Example:
CRITICAL QUEST: "Cure the Blazing Fever"
- A terrible plague is sweeping through the kingdom
- Physicians are powerless
- Heroes must find a cure in ancient texts or distant lands
- Deadline: 20 years
- Failure: Kingdom decimated, cities become ghost towns
- Success: Kingdom survives, heroes honored for generationsComplete Quests:
Tool: completeQuest
Arguments:
{
"worldId": "<world ID>",
"questId": "<quest ID>",
"success": true,
"completionNotes": "The heroes traveled to the Mountain Temple and retrieved the Sacred Herb"
}Quests appear in GM Notes exports and are prioritized by urgency. Critical quests are highlighted for immediate player attention.
10. Load/Restore Worlds
MCP servers are in-memory only. When the server restarts, worlds are lost. Use loadWorld to restore previously saved worlds:
Step 1: Save world data after creation/simulation:
// After getWorldState or exportWorld, the AI should store the full world JSON
const worldData = JSON.stringify(world);
// AI stores this in its conversation contextStep 2: After restart, load the world:
Tool: loadWorld
Arguments: {
"worldData": "{\"id\":\"abc-123\",\"timestamp\":400,\"society\":{...},...}"
}Step 3: Continue simulation:
Tool: simulate
Arguments: {
"worldId": "abc-123",
"timespan": 100
}The AI automatically handles this - just say "resume my world" or "continue the simulation" and it will use loadWorld() with the saved data.
Example Workflow
Here's a complete example of generating a fantasy setting:
// 1. Create the world with humans
const world = await initializeWorld({
event: "A city founded by refugees near a river",
locationType: "city",
region: "plains",
climate: "temperate",
resources: { food: 70, wood: 60, water: 80 },
population: {
name: "River's Edge",
size: 5000,
culture: "Riverfolk",
organization: "feudal"
}
});
// 2. Add orc threat (not available at creation)
await addPopulation({
worldId: world.worldId,
name: "Orc Warband",
size: 50,
race: "monster",
culture: "Hill Dwellers",
organization: "tribal",
monsterType: "orc",
dangerLevel: 4,
behavior: "aggressive"
});
// 3. Simulate 100 years of conflict
const history = await simulate({
worldId: world.worldId,
timespan: 100,
stepSize: 10,
complexity: "complex"
});
// 4. Export for your campaign
const campaignNotes = await exportWorld({
worldId: world.worldId,
format: "gm_notes"
});Key insight: Add monsters/populations with addPopulation() instead of trying to specify them at creation. This gives you control over timing and numbers.
AI-Generated Crafts Example
The AI can create creative items during simulation:
// After simulating 100 years, the AI might create:
// 1. A magical weapon
await createCraft({
worldId: world.worldId,
name: "Dragonbane",
description: "A greatsword forged from dragon-forged steel, humming with ancient power",
category: "weapon",
rarity: "legendary",
requiredTechLevel: 7,
requiredResources: { iron: 80, magic: 50, gems: 30 },
creatorPopulationId: "pop_123",
effects: ["+5 damage vs dragons", "burns with blue flame"]
});
// 2. A lost book
await createCraft({
worldId: world.worldId,
name: "Tome of the First Kings",
description: "Ancient scroll containing the lost history of the first civilization",
category: "book",
rarity: "mythic",
requiredTechLevel: 5,
creatorPopulationId: "pop_456",
isHidden: true, // Players must find it!
effects: ["reveals hidden truths", "grants +2 to history checks"]
});
// 3. Defensive structure
await createCraft({
worldId: world.worldId,
name: "Iron Barricade of River's Edge",
description: "Massive fortified wall reinforced with magical wards",
category: "structure",
rarity: "uncommon",
requiredTechLevel: 4,
requiredResources: { iron: 60, wood: 40, stone: 50 },
creatorPopulationId: "pop_123",
effects: ["+50% defense against raids"]
});These crafts appear in GM Notes exports and generate adventure hooks like:
"The legendary Tome of the First Kings is lost. Ancient texts hint it may be hidden in a forgotten tomb."
"The Dragonbane sword has been discovered! Powerful factions will seek to claim it."
AI vs Script: Why Use an AI Interface?
The Advantage Over Traditional Generators
Aspect | Traditional Script | AI + MCP Server |
Input | Fixed parameters/JSON | Natural language |
Flexibility | Predefined rules only | Understands intent, adapts |
Iteration | Re-run with new config | "Make orcs more hostile" |
Context | Stateless | Remembers, builds coherence |
Output | Fixed format | Adapts to your needs |
Creativity | Deterministic | Unexpected connections |
How Persistence Works
The AI stores world data in its own context, not in the MCP server:
Create world → MCP returns
worldId+ full world JSONAI saves → Stores the JSON in its conversation history/context
MCP restarts → Server loses all worlds (in-memory only)
Resume work → AI calls
loadWorld()with the saved JSON dataContinue → World is restored, simulation continues
Why this design?
MCP servers are stateless between restarts (by design)
AI context is the "database" - it remembers everything
No file I/O, no database setup, no migration issues
Worlds travel with the conversation
Concrete Examples
Script Approach (Traditional)
{ "monsterCount": 2, "timespan": 400, "enableConflict": true }→ Same output every time with same seed. Limited to predefined options.
AI Approach (This System)
Example 1: Dramatic Tension
"Create a world where ancient dragons are waking up after 500 years
of dormancy, and the human kingdom doesn't know the threat yet"→ AI adjusts monster behavior (dormant dragons), creates foreshadowing events, generates adventure hooks about "strange tremors" and "sheep disappearing"
Example 2: Iterative Refinement
"Actually, make the orc kingdom more aggressive and have them
raid the dwarven mines every 50 years"→ AI modifies monster behavior, adjusts raid frequency, creates specific conflict events without re-running everything
Example 3: Contextual Export
"Export this as handouts for my players, hiding the dragon threat"→ AI creates player-friendly version, omits DM-only information, formats as in-world documents
Example 4: Resuming After Restart
"Load my world from last session"→ AI retrieves saved JSON from context, calls loadWorld(savedData),
continues simulation where it left off
The MCP Server Pattern
This isn't just a generator—it's a simulation engine that:
Runs in-memory - Fast, no database overhead
AI manages persistence - World data lives in AI context
Load/Resume -
loadWorld()restores any saved worldIntegrates with workflow - opencode, VTTs, campaign tools
Without AI: You'd need to write code to tweak anything
With AI: You just ask, and it uses the tools
Simulation Rules
The engine simulates these anthropological and geographical processes:
Population Dynamics
Growth based on food and water availability
Decline during shortages or conflicts
Organization evolution: nomadic → tribal → feudal → kingdom → empire
Technology Progression
Populations discover technologies through a dynamic progression system based on multiple factors:
Tech Progression Formula:
Base chance: 5% per population per 10-year step
Population size bonus: +0.1% per 100 people (max +5%)
Organization bonus: tribal +0%, feudal +2%, kingdom +4%, empire +6%
Critical quest bonus: +3% per active critical quest (max +9%)
Problem overload penalty: -2% if >5 active critical quests
Resource abundance bonus: +1% per abundant resource (value > 60)
Relic/artifact bonus: +5% if population has legendary/mythic item
Trade route bonus: +2% if population has active trade routes
Maximum chance: 50%
Complete Tech Tree:
Level | Technologies | Era |
0 | Stone Tools, Fire Mastery, Basic Shelter | Stone Age |
1 | Language Development, Social Cooperation | Early Society |
2 | Agriculture, Pottery, Domestication, Basic Medicine | Neolithic |
3 | Bronze Working, Wheel, Writing, Irrigation, Mining | Bronze Age |
4 | Iron Working, Architecture, Mathematics, Law | Iron Age |
5 | Steel, Navigation, Philosophy, Advanced Medicine | Classical |
6 | Gunpowder, Printing, Telescope, Banking | Medieval |
7 | Industrial Revolution, Steam Power, Electricity | Early Modern |
8 | Telegraph, Railways, Mass Production | Industrial |
9 | Electricity Grid, Internal Combustion, Aviation | Modern |
10 | Modern Computing, Internet, Space Technology | Contemporary (cap) |
Tech Prerequisites:
Technologies unlock in order by level
Can't discover level N+1 technology without completing level N
Each technology contributes to the population's technology level
Tech Milestones:
When a population reaches a new tech level, a TECH_MILESTONE event is created in the timeline, marking significant societal advancement.
Tech Level Effects:
Level 2+: Can spawn basic heroes (Warrior, Rogue)
Level 3+: Can spawn specialized heroes (Ranger, Cleric)
Level 4+: Can spawn elite heroes (Paladin, Barbarian)
Level 5+: Can spawn rare heroes (Mage, Bard)
Relics and Tech: Populations with legendary or mythic crafts/artifacts receive a +5% bonus to tech progression, representing the knowledge and inspiration gained from powerful items.
Location Evolution
Cave → Settlement (50 years, 30+ population, tech level 3)
Settlement → Village (100 years, 100+ population, tech level 5)
Village → City (200 years, 300+ population, kingdom organization)
City → Ruins (conflict + 300 years, 20% chance per step)
Resource Dynamics
Consumption based on population size
Regeneration for non-renewable resources
Critical shortages trigger events
Natural Events
Earthquakes (mountains)
Forest fires (forest)
Droughts (plains)
Floods (swamp)
Output Examples
Timeline Output
Age of Discovery (0-50): Key developments: Beginning
Age of Settlement (50-100): Key developments: Earthquake, Agriculture
Age of Expansion (100-200): Key developments: Pottery, Migration
Age of Kingdoms (200-300): Key developments: Iron Working, Village Founded
Age of Empires (300-500): Key developments: City Founded, WritingAdventure Hooks (from GM Notes)
1. The iron mines are running dry. Adventurers must find new sources.
2. Strange magical phenomena are appearing near the Luminary Depths.
3. The war between Mountain Clan and River Tribes is escalating.
4. Ancient ruins have been disturbed. Something ancient has awakened.Tips for AI Users
Using with Opencode
Important: The MCP server maintains state during a single opencode session. Keep track of the worldId returned from initializeWorld and use it in subsequent calls.
Start opencode with the configured MCP server
Create a world - The AI will automatically include
resources: {}:"Create a fantasy world starting with a cave"With monsters:
"Create a world with dwarves and humans, enable 2 monsters (a dragon and orcs), simulate 400 years"The AI should call:
initializeWorld({ event: "a mysterious cave in the mountains", locationType: "cave", region: "mountains", climate: "temperate", population: [ {name: "Mountain Exiles", size: 25, race: "human", culture: "Highlanders", organization: "tribal"}, {name: "Dragon Horde", size: 15, race: "monster", monsterType: "dragon", dangerLevel: 8, behavior: "aggressive"} ], resources: {}, // Required - can be empty enableMonsters: true, // Enable monster spawning monsterCount: 1 // Number of auto-generated monsters })Note the worldId - The response will include a world ID like
12bff51b-...Simulate - Ask the AI to use that specific worldId:
"Simulate world 12bff51b-... for 500 years"Export - Get the final output:
"Export world 12bff51b-... as GM notes"
Pro tip: Ask the AI to "remember the world ID" or "keep track of the world" to maintain context across multiple tool calls.
Monster System
The world can include monster populations that act as threats to civilizations:
Monster Types: dragon, giant, orc, goblin, undead, beast, demon, aberration, fae
Behaviors: aggressive (raids constantly), territorial (defends lair), nomadic (migrates), dormant (sleeps), hiding (lurks)
Danger Level: 1-10 threat rating
Automatic spawning: Set
enableMonsters: trueandmonsterCount: 2to auto-generate monstersMonster events: Raids, infestations, invasions, awakening from dormancy
Adventure hooks: Monster threats automatically generate quest hooks in GM notes
Resuming Worlds After Restart
MCP servers are in-memory only. When opencode restarts, worlds are lost. But the AI can restore them:
Step 1: AI saves world data after creation/simulation:
AI stores in context:
{
"myWorld": {
"id": "abc-123",
"timestamp": 400,
"society": {...},
"events": [...],
...
}
}Step 2: After restart, AI loads the world:
Tool: loadWorld
Arguments: {
"worldData": "{\"id\":\"abc-123\",\"timestamp\":400,...}"
}Step 3: Continue simulation:
Tool: simulate
Arguments: {
"worldId": "abc-123",
"timespan": 100
}The AI automatically handles this - just say "resume my world" or "continue the simulation".
Using with OpenAI-Compatible API
If your opencode setup uses an external API:
Edit
.env.localwith your API settings:API_BASE_URL=https://your-api-endpoint.com/v1 API_KEY=your-api-key API_MODEL=your-model-nameConfigure opencode to use these env vars (check your opencode docs)
The MCP tools will still work - they run locally regardless of where the AI model comes from
Start Small: Begin with 200-300 years to see the system's behavior
Use Seeds: Pass a
seedparameter for reproducible resultsCheck Resources: Low food/water creates dramatic conflict scenarios
High Magic: Set magic > 70 for supernatural events
Multiple Populations: Create separate worlds and merge concepts
Export Early: Save interesting worlds before continuing simulation
Iterate: Generate, review, adjust parameters, regenerate
Troubleshooting
No Events Generated
Increase
timespanor decreasestepSizeSet
complexityto "moderate" or "complex"Ensure population size is reasonable (10+)
Simulation Too Simple
Use
complexity: "complex"Enable all options: conflict, migration, techProgress
Start with larger population (50+)
Export Format Issues
Try different formats:
jsonfor data,markdownfor readingSet
includeTimeline: falsefor shorter output
Quick Start
# 1. Build the project
npm run build
# 2. Add to opencode config (see Configuration section above)
# 3. Verify:
opencode mcp list
# 4. Start opencode and ask your AI:
# "Create a fantasy world starting with a cave"Development
# Build
npm run build
# Run tests
npm run test
# Start server directly
npm start
# Task Management
npm tasks # List all development tasks
node scripts/transition.cjs <id> in_progress # Mark task as in progress
node scripts/complete.cjs <id> "message" # Complete task and commitTask System
This project uses a task-based workflow for development:
Location:
tasks/directory (ignored by git)Format: Individual
.task.jsonfiles for each taskStates:
pending,in_progress,completedWorkflow:
Create task file
npm run task:transition <id> in_progressImplement, test, commit
npm run task:complete <id> "commit message"
See tasks/README.md for full documentation.
License
ISC
Available Tools
15 toolsaddPopulationA
Add a new population (including monsters) to an existing world. Use this to add orcs, elves, etc. after world creation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the population (e.g., "Orc Warband", "Elven Clan") | |
| race | Yes | Race: human, dwarf, elf, orc, monster, etc. Use "monster" for monsters | |
| size | Yes | Initial population size (e.g., 50 for a small group, 500 for a tribe) | |
| culture | Yes | Cultural identity (e.g., "Hill Dwellers", "River Folk") | |
| worldId | Yes | World ID to add population to | |
| behavior | No | Monster behavior (only for monsters) | |
| dangerLevel | No | Threat level 1-10 (only for monsters, default: 5) | |
| monsterType | No | Monster type (only if race="monster") | |
| organization | Yes | Social organization level |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the transparency burden. It discloses a key prerequisite ('existing world' and 'after world creation') and notes that monsters are included. However, it doesn't explain behavior on invalid worldId, duplicate population names, whether populations are appended, or any side effects. Some context is provided, but significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the action and object front-loaded. Every part earns its place: it names what the tool does, gives examples, and provides a usage condition. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, 6 required, and no output schema, the description could provide more context about what happens on success/failure, error conditions, or return values. It adequately explains purpose and usage but lacks necessary behavioral details for a creation tool with no annotations to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides descriptions for all 9 parameters (100% coverage), so the schema already defines the meaning of each field. The tool description adds no extra parameter-level detail beyond confirming monster support, which is already present in the schema. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a new population') and the target resource ('to an existing world'), with concrete examples (orcs, elves) and explicit scope ('including monsters'). This distinguishes it from sibling tools that focus on heroes, worlds, quests, and simulations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes usage context: 'after world creation' and examples like 'add orcs, elves, etc.' This implies it is for populating existing worlds, not for initial world setup. While it doesn't name alternatives, no sibling tools handle populations, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assignHeroToQuestB
Assign a hero to an open quest.
| Name | Required | Description | Default |
|---|---|---|---|
| heroId | Yes | Hero ID to assign | |
| questId | Yes | Quest ID to assign hero to | |
| worldId | Yes | World ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the action without revealing side effects (e.g., updating hero status, potential conflicts), validation rules, or error conditions. Significant transparency gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and contains zero wasted words. It is appropriately concise, matching the simplicity of the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description is too sparse. It does not explain relationships between worldId, questId, and heroId, nor what the result of the operation is. Incomplete for effective invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all three parameters with descriptions (100% coverage), so the baseline is 3. The tool description adds no extra parameter-level semantics beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('assign') and clearly identifies the resource (hero) and target (open quest). It distinguishes from sibling tools like completeQuest and listHeroes, making the tool's function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., hero availability, quest open status) or exclude cases like completing a quest. Implied usage only, no explicit criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
completeQuestA
Mark a quest as completed or failed. Heroes (AI-controlled) or players can complete quests.
| Name | Required | Description | Default |
|---|---|---|---|
| questId | Yes | Quest ID to complete | |
| success | Yes | Whether the quest was successful | |
| worldId | Yes | World ID | |
| failureReason | No | Why the quest failed (if failed) | |
| completionNotes | No | How the quest was completed (if successful) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds that heroes (AI-controlled) or players can complete quests, but does not disclose side effects, state transitions, return values, or any prerequisites. For a mutation tool, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states the action, and the second provides useful context about who can invoke the tool. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, no output schema, and no annotations, yet the description is minimal. It covers the core action and actor, but omits side effects, return behavior, and prerequisites. The description is adequate for a simple state transition but leaves noticeable context gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters clearly. The description adds minimal semantic value beyond the schema; it frames the action as completed/failed, which aligns with the 'success' parameter but does not elaborate on failureReason or completionNotes. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Mark') and a clear resource ('a quest'), and explicitly states the two possible outcomes: completed or failed. This distinguishes it from sibling tools like assignHeroToQuest, which handles quest assignment rather than completion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a quest needs to be marked as completed or failed) and notes that both heroes and players can perform this action. However, it does not provide explicit when-not-to-use guidance or mention alternatives, leaving the usage context somewhat implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createCraftB
Create a new craft/item/heritage object. AI should generate creative names and descriptions for magical items, weapons, books, artifacts, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the craft (e.g., "Sword of Dawn", "Tome of Ancient Secrets", "Dragonhide Barricade") | |
| rarity | Yes | Rarity level | |
| effects | No | Special effects or properties (e.g., "+3 damage", "grants night vision") | |
| worldId | Yes | World ID | |
| category | Yes | Type of craft | |
| isHidden | No | If true, the item is hidden/lost (location unknown) | |
| location | No | Current location (optional) | |
| description | Yes | Detailed description of the item and its properties | |
| requiredResources | No | Resources needed to create (e.g., {iron: 50, magic: 30}) | |
| requiredTechLevel | Yes | Minimum technology level required (0-10) | |
| creatorPopulationId | Yes | ID of population that created this |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing side effects and behaviors. It only states the action and creative guidance, omitting important details like prerequisites, persistence, required relationships, or what the response contains. This leaves significant behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core action front-loaded in the first sentence and practical AI guidance in the second. It is efficient and free of unnecessary fluff, achieving perfect conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex creation tool with 11 parameters (7 required) and no output schema or annotations, this description is insufficient. It fails to explain overall behavior, prerequisites like the existence of the world or population, return value, or side effects. The schema covers individual parameters but not the operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides thorough descriptions for all 11 parameters (100% coverage), placing the baseline at 3. The description adds slight value by instructing AI to generate creative names and descriptions, which guides the 'name' and 'description' parameters, but it does not further clarify the other parameters beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new craft/item/heritage object' with examples like magical items, weapons, books, artifacts, which identifies the action and resource specifically. This distinguishes it from sibling tools such as listWorlds or completeQuest, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating new craft items and instructs AI to generate creative names/descriptions, but it does not explicitly discuss when to use this tool versus alternatives or when not to use it. The context is present but not detailed enough to provide clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteWorldB
Delete a world
| Name | Required | Description | Default |
|---|---|---|---|
| worldId | Yes | World ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, and the description provides no behavioral disclosure about the delete operation: it is silent on permanence, cascading deletion of associated data (heroes, quests, timeline), failure modes, or any side effects. For a destructive tool, this is a critical gap that leaves the agent without essential risk awareness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence 'Delete a world' that entirely fulfills the purpose without superfluous content. Every word earns its place, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's structural simplicity, the description is incomplete for a destructive operation. It lacks critical context about the irreversible nature of deletion, the scope of what is removed, and error conditions (e.g., world not found). An agent cannot fully assess the side effects of invoking this tool, making it insufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a clear description for the single required parameter 'worldId'. The description adds no additional semantic meaning beyond what the schema already provides; the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a world' clearly states the action (delete) and resource (world), distinctly differentiating it from sibling tools like listWorlds, loadWorld, or getWorldState. The verb and object are explicit and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any warnings about prerequisites or consequences (e.g., cannot delete a world with active quests). The description relies solely on the tool name to imply usage, offering no contextual or exlusionary information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exportWorldC
Export world data in various formats
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Export format | |
| worldId | Yes | World ID to export | |
| includeTimeline | No | Include full timeline | |
| includeLocations | No | Include location details |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It mentions output formats but does not disclose whether the operation is read-only, whether it returns data directly, or whether it has side effects such as generating files or requiring specific permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler and front-loads the action. It is appropriately sized for the tool's straightforward purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, a one-line description leaves significant gaps: what 'world data' includes, what each format produces, and the shape of the result. The schema covers parameters, but overall tool behavior is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All four parameters have descriptions in the input schema, so the baseline is 3. The description adds no additional parameter meaning beyond the schema, though 'various formats' loosely aligns with the format enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Export') and resource ('world data'), clearly indicating the tool's purpose. It does not explicitly differentiate from sibling tools, but 'export' is unique among them, so the action is identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like listWorlds or getWorldState. The description only states the operation, leaving the agent to infer its appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generateLocationB
Generate a new location (dungeon, city, etc.) based on world context
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Custom name for the location | |
| worldId | Yes | World ID | |
| description | No | Custom description | |
| locationType | Yes | Type of location to generate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only says 'Generate' which implies mutation but does not disclose whether the location persists, what side effects occur, or any prerequisites like having a valid worldId. The phrase 'based on world context' is vague and does not explain behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extra words. It effectively communicates the core action and examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema and annotations, so the description needs to explain return values and side effects. It does not state what the generated location looks like, whether it is stored, or that valid worldId is required. This leaves significant gaps for an agent to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides full descriptions for all four parameters (100% coverage). The tool description adds mild value by suggesting that worldId contributes world context for generation, going beyond the schema's bare 'World ID.' However, it does not elaborate on the name or description parameters, so the additional semantic value is limited.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Generate' with the resource 'location' and provides examples (dungeon, city, etc.), clearly distinguishing it from sibling tools that handle heroes, worlds, and quests. It clearly states the tool creates a new location within a world context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for creating locations but provides no explicit guidance on when to use it versus alternatives or when not to use it. There are no sibling generation tools, but no direct comparison is given, so the usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getHeroB
Get detailed information about a specific hero
| Name | Required | Description | Default |
|---|---|---|---|
| heroId | Yes | Hero ID to retrieve | |
| worldId | Yes | World ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. The verb 'get' implicitly suggests a read operation, but the description does not explicitly state that it is read-only, nor does it mention error behavior, auth requirements, or the structure of the returned detailed information. This is a minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. It is front-loaded with the action and resource, making it easy to parse. There is no repetitive or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with two well-documented parameters, the description is adequate but not thorough. Since there is no output schema, the vague 'detailed information' leaves the return format undisclosed. The lack of explanation about how worldId contextualizes the hero is another gap, but overall the tool's simplicity keeps it from being severely incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for both parameters (heroId described as 'Hero ID to retrieve' and worldId as 'World ID'). The description does not add significant meaning beyond what the schema provides, such as explaining why both are needed or their relationship. Since schema coverage is high, the baseline is 3, and the description merely reinforces the heroId purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get detailed information about a specific hero' clearly states the action (get) and resource (hero), and specifies it's for a specific hero, distinguishing it from list-level operations like listHeroes. However, it lacks explicit sibling differentiation and the term 'detailed information' is somewhat vague about what exactly will be returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like listHeroes or getWorldState. It does not explain the context in which a specific hero ID is known or how the worldId parameter relates to the lookup, leaving the agent to infer usage from the names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTimelineB
Get timeline of events for a world
| Name | Required | Description | Default |
|---|---|---|---|
| endYear | No | End year filter | |
| worldId | Yes | World ID | |
| startYear | No | Start year filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It does not mention whether the operation is read-only, what the return value looks like, or any ordering or filtering semantics. This is a significant gap for a tool that likely returns data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero waste. It communicates the core purpose efficiently and is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must explain what the tool returns and how filters behave. It does neither, leaving the agent without sufficient context to predict the tool's output or edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter (worldId, startYear, endYear) having a description, so the baseline is 3. The description adds almost nothing beyond the schema; 'for a world' merely echoes the worldId parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('timeline of events') with a clear scope ('for a world'). This distinguishes it from sibling tools like getWorldState or listWorlds, making the purpose immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any mention of context such as filtering or prerequisites. The description simply states the action without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getWorldStateC
Get current state of a world
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Specific year snapshot (optional) | |
| worldId | Yes | World ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but adds nothing beyond the tool name—it's essentially a tautology ('Get current state of a world' restates 'getWorldState'). No mention of side effects, return format, or read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and front-loaded, though its brevity crosses into under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description should explain what 'state' includes and how the year parameter affects the result; it omits both, leaving the agent to guess the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions, so the 100% coverage sets a baseline of 3; the description adds no additional parameter context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource ('Get current state of a world'), but 'current' conflicts with the optional 'year' parameter for historical snapshots, and it doesn't distinguish from sibling getters like getHero or getTimeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool instead of alternatives like getTimeline or getHero; the use case is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initializeWorldB
Create a new world simulation. REQUIRED: Include all fields including resources:{} (can be empty).
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Random seed for deterministic generation (optional) | |
| event | Yes | Initial event, e.g., "a small cave discovered by refugees" | |
| region | Yes | Terrain type | |
| climate | Yes | Climate type | |
| resources | Yes | Resource abundance (0-100). REQUIRED: Include even if empty {}. Example: {iron: 50, food: 40} | |
| population | Yes | Array of populations (supports multiple races like human, dwarf, elf, dragonborn, orc, etc.). Can also be a single object. | |
| locationType | Yes | Starting location type | |
| monsterCount | No | Number of monster populations to spawn initially (0-3, default: 1) | |
| enableMonsters | No | Enable monster spawning during simulation (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does mention the mandatory inclusion of all fields and empty resources, but fails to disclose side effects, persistence, whether the world is immediately active, or what the return value is. This is a minimal level of transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with the core purpose in the first clause and a critical requirement following. Every word earns its place, and there is no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the schema (9 parameters, nested objects) and no output schema, the description is incomplete. It lacks context about the tool's role in the simulation lifecycle, how it relates to sibling tools like simulate or loadWorld, and what the caller should expect. An agent would need to make assumptions about return values and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% description coverage for all 9 parameters, so the baseline is 3. The description's emphasis on including resources:{} is redundant since the schema already states 'REQUIRED: Include even if empty {}.' No additional semantic value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Create a new world simulation.' This distinguishes it from sibling tools like loadWorld, listWorlds, or simulate, which operate on existing worlds or advance simulation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It only offers a parameter requirement (include all fields), which is an invocation detail, not usage context. No mention of 'use this to initialize a world before simulating' or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listHeroesA
List all heroes in a world, optionally filtered by status
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by hero status | |
| worldId | Yes | World ID to list heroes from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It states the operation is a listing with an optional filter, which is transparent about the basic behavior. However, it doesn't disclose response format, ordering, pagination, or any side effects, making it minimally sufficient for a read-only list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and scope, containing no filler or redundant information. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the core purpose and filtering capability. It doesn't specify return fields, but for a straightforward listing tool this is an acceptable gap, especially with a well-documented schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter comments. The tool description only repeats the status filter concept, adding no additional meaning beyond what the schema already provides, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'list', identifies the resource 'heroes' within a world, and mentions an optional status filter. It clearly distinguishes itself from siblings like getHero (single hero) and listWorlds (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need a collection of heroes in a world, with optional filtering. It does not explicitly provide alternatives or exclusions, but the context is clear enough for an agent to select this tool over getHero or listWorlds.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listWorldsA
List all created worlds
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral disclosure. It states a read-only listing operation but does not describe the return format (e.g., names, IDs, full objects), ordering, pagination, or any side effects. The agent is left without crucial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with zero wasted words. It is appropriately sized for a zero-parameter tool and front-loads the core action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is functionally adequate for a simple list tool, but without an output schema, it does not explain what the response contains. Adding return format details (e.g., world names vs. full world objects) would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100% (trivially). The description adds no parameter details because none exist, so the baseline of 4 applies. No further compensation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('list') and resource ('all created worlds'), which differentiates it from siblings like listHeroes (heroes) and getWorldState (world state). It is unambiguous and immediately understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. There is no mention of exclusions, preconditions, or which sibling tools to prefer for similar tasks. The context of siblings like exportWorld or getWorldState is not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loadWorldA
Load a world from previously saved JSON data. Use this when resuming a world from AI context.
| Name | Required | Description | Default |
|---|---|---|---|
| worldData | Yes | Full JSON data of the world (copy from previous getWorldState or exportWorld result) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description does not mention that loading likely overwrites the current world state, whether the JSON is validated, or what happens after loading (e.g., confirmation or errors). It only states the action without side effects, which is a significant gap for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, front-loaded with the primary action, and includes a practical usage tip. Every word is purposeful, with no redundant information. This is a model of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only one parameter and a well-described schema. However, the lack of annotations and an output schema means the description must compensate. It covers purpose and usage but omits behavioral effects like overwriting the current context or error handling. Overall, it is minimally complete but with clear gaps in side-effect disclosure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description provides 100% coverage, describing the parameter as 'Full JSON data of the world (copy from previous getWorldState or exportWorld result).' This gives clear guidance on what to pass and where to get it. Since the schema already handles the semantics, the description does not need to add more, earning the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Load a world from previously saved JSON data.' The verb 'load' and resource 'world' are specific, and the source (previously saved JSON data) distinguishes it from sibling tools like initializeWorld (create new) and getWorldState (read current state). The additional context 'resuming a world from AI context' further clarifies its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this when resuming a world from AI context.' This provides a clear context for usage. However, it does not explicitly mention alternatives or when not to use it, though sibling tools imply alternatives. The missing exclusions prevent a score of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulateC
Run simulation forward in time
| Name | Required | Description | Default |
|---|---|---|---|
| worldId | Yes | World ID to simulate | |
| stepSize | No | Years per simulation step (default: 10) | |
| timespan | Yes | Number of years to simulate | |
| complexity | No | Simulation complexity level | |
| enableConflict | No | Enable conflict events | |
| enableMigration | No | Enable migration events | |
| enableTechProgress | No | Enable technological progress |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no additional description, the tool's side effects are completely undisclosed. It does not state whether the simulation mutates the world state, whether it is reversible, what triggers are needed, or what the response contains. For a simulation tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and technically concise, but it is underspecified to the point of being unhelpful. It lacks necessary details about behavior and usage, so it is not 'appropriately sized' for a tool with this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 7 parameters, no annotations, and no output schema, the description must carry significant burden. It fails to explain what simulation does, how parameters like stepSize and complexity affect the outcome, or what happens to the world state. The schema descriptions are insufficient without contextual behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all seven parameters having descriptive text. The description itself adds no parameter information, but since the schema fully documents parameters, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Run simulation forward in time' clearly states the action (Run) and resource (simulation), with a temporal scope. However, it does not differentiate from siblings like getTimeline or getWorldState, which could be confused for retrieving simulation results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as getTimeline or initializeWorld. There are no prerequisites, exclusions, or examples of appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v1.0.0- First observed
addPopulation - First observed
assignHeroToQuest - First observed
completeQuest - First observed
createCraft - First observed
deleteWorld - First observed
exportWorld - First observed
generateLocation - First observed
getHero - First observed
getTimeline - First observed
getWorldState - First observed
initializeWorld - First observed
listHeroes - First observed
listWorlds - First observed
loadWorld - First observed
simulate
TDQS
Scored across 15 tools
Each tool targets a distinct resource and action, such as listHeroes vs getHero and assignHeroToQuest vs completeQuest. There is no overlap in functionality.
All tool names follow a consistent verb-first camelCase pattern (e.g., listWorlds, initializeWorld, generateLocation). Even 'simulate' aligns with the verb-first style, and there is no mixing of conventions.
15 tools is within the recommended range and each tool serves a clear purpose in managing the world simulation, from lifecycle operations to content generation and quest handling. No tool is redundant.
The toolset covers world lifecycle well but has significant gaps: no create/list/delete for quests, and locations/crafts have create-only operations without corresponding read tools. Agents must rely on getWorldState to indirectly access these resources.
Maintenance
Related MCP Connectors
A world built and run by AI agents. Join as a citizen: artifacts, quests, governance.
Date math and SVG rendering for fictional and custom calendars. Exact, stateless and deterministic.
- OrbismoOAuthcom.orbismo
A persistent world-building memory your AI can read and write in any chat.
Characters, campaigns, adventures & worlds for D&D 5e/5.5e, Pathfinder, Savage Worlds, Fate, & more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables creation and management of structured game worlds for text adventures and RPGs with character creation, world generation, and natural language interaction through AI integration.1MIT
- AlicenseCqualityAmaintenanceRPG game engine that lets AI run tabletop sessions without hallucinating mechanics. SQLite-backed persistence, D\&D 5e-style combat, procedural world generation, and deterministic dice.1009 npm43MIT
- AlicenseNot gradedqualityDmaintenanceA narrative graph engine that enables LLMs to generate, track, and mutate complex fictional worlds while maintaining consistency between factions, characters, and locations. It acts as a specialized RAG framework for storytelling, allowing models to manage thousands of entities without exceeding context limits.MIT
- AlicenseNot gradedqualityBmaintenanceA persistent 4X universe MCP server where AI agents play civilizations; humans can only observe through a read-only chronicle.MIT