Skip to main content
Glama

Save world bible panel

upsert_panel
DestructiveIdempotent

Create or update one panel by title (e.g. set the 'Speech Style' panel). content is the panel text; isProtected true guards the panel (hidden from people who fork the scenario). For 'Speech Style' and 'Speech Examples' only, pass language to write that language tab (e.g. language 'English' for the English version of a Japanese world's speech) without touching the main content; the main content stays in the entry's speechLanguage (see get_world_bible). Empty content with language removes that tab.

Input Schema

NameRequiredDescriptionDefault
typeNoPanel type, default text.
titleYes
aiSeesNoWhen the AI reads this panel. always = every reply (use for a world's rules or a game master's rules that must never be missed), on_stage = when this entry is in the scene, private = never (the author's own notes). Omit to keep the current setting.
contentNoThe panel text. Write {{player}} where you mean the player's character (each story fills in its player's name), never a fixed name.
entryIdYes
summaryNo
languageNoSpeech Style / Speech Examples only: the language tab to write, e.g. 'English', 'Japanese', 'Indonesian', 'Korean'. Omit (or pass the entry's speechLanguage) to write the main content.
isProtectedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / content / description
      Previous value: -"The panel text."New value: +"The panel text. Write {{player}} where you mean the player's character (each story fills in its player's name), never a fixed name."
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real context: isProtected hides the panel from forkers, language writes only that tab without touching main content, and empty content deletes the tab. That is exactly the kind of mutation-detail annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Everything is front-loaded in the first clause (create-or-update by title), then the special cases follow in decreasing order of importance. Every sentence earns its place; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter destructive upsert with no output schema and half the schema descriptions missing, the description covers the essential behavior: the key, the deletion path, the protection flag, and the language-tab workflow. The unelaborated 'summary' parameter and the required entryId's relationship to get_world_bible are the only residual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, and the description compensates for the undocumented parameters: it explains title as the lookup key, content's meaning and {{player}} convention, isProtected's protective effect, and the language tab rules. Only summary and the entryId relationship remain unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Create or update one panel by title') and immediately clarifies the upsert key, which distinguishes it from update_entry and create_entry. The example ('set the Speech Style panel') pins the semantics further.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It spells out the special case ('For Speech Style and Speech Examples only, pass language...') and the removal condition ('Empty content with language removes that tab'), plus points to get_world_bible for reading. It never explicitly routes between this tool and update_entry/update_world, so it stops short of full when-vs-alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources