Skip to main content
Glama

Replace what has been spent

set_character_overlay
DestructiveIdempotent

Replace the whole record of what this character has spent and taken: hit points, slots, uses, hit dice, conditions, death saves, equip and attune toggles, counts. A full replace, checked against the sheet. Prefer update_character_state for a single change. Returns: The record as stored.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "campaign": "<campaign>",
      "character": "<character>",
      "overlay": "<overlay>"
    },
    "name": "set_character_overlay"
  }
}

Input Schema

NameRequiredDescriptionDefault
overlayYesThe overlay, in the shape `get_character` returns it.
campaignYesThe campaign, by its slug (what its link says) or its id.
characterYesThe character, by its slug.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=true and readOnly=false, and the description usefully specifies what is destroyed (the entire spent/taken record, field by field) plus that the write is validated against the sheet. It stops short of stating whether keys omitted from the overlay are cleared versus preserved, which is the single most consequential behavior for a destructive full replace.

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?

Three compact sentences: the replace scope and field list first, the validation constraint second, the alternative third, and a short return note last. The field enumeration is long but earns its place because the overlay schema is untyped.

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 a destructive, idempotent, nested-object write with no output schema, the definition covers scope, validation, and the sibling alternative, and gives a one-line return statement. It is slightly incomplete on failure behavior and on the omit-vs-clear semantics for a 'full replace', which matter for a tool flagged destructive.

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 100%, so `campaign` and `character` identifier forms are already documented; the description adds real value for `overlay`, whose schema is an empty-property object, by enumerating the categories it must carry and noting it is validated against the sheet. The remaining gap is that it does not say whether the overlay must be complete or may be partial.

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?

Names a specific verb and resource ('Replace the whole record of what this character has spent and taken') and enumerates the exact state covered: hit points, slots, uses, hit dice, conditions, death saves, equip and attune toggles, counts. It also explicitly contrasts itself with the sibling `update_character_state`, so an agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

States the alternative by name and the condition that selects it: 'Prefer `update_character_state` for a single change.' This implies the inverse — use this tool when replacing many fields at once — and adds the 'checked against the sheet' constraint that gates successful invocation.

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.