Skip to main content
Glama

event_apply

Checks a declared event against canonical game state, then returns a precondition-bound transition and stamped next state to keep rules legal under SRD 5.2.1.

Instructions

Evaluate one declared event against a canonical state and return a precondition-bound transition proposal plus stamped next_state. Supply a stable host event identity (for Discord, the message/event snowflake) as idempotency_key; omission produces a deterministic auto key. Persist only through transition.commit so stale or out-of-order events fail closed. Event types: turn-start; round-advance; action / bonus-action / reaction; free-interaction; move; stand-up; condition-gained / condition-ended; damage; heal; death-save; and ruling. A ruling is authorized DM discretion, including the calling agent-DM when it holds that authority, and is never mislabeled as a rule. srdcheck never owns state, produces an event, advances time, or generates randomness.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
eventYes
stateYes
request_idNo
table_policyNo
asserted_factsNo
policy_contextNo
table_decisionNo
idempotency_keyNostable caller-owned event identity; use the Discord message/event ID when applicable

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
whyYes
dataNo
factsYes
adapterYes
verdictYes
rule_idsYes
citationsYes
exit_codeYes
assumptionsYes
explanationYes
rule_resultYes
checked_scopeYes
coverage_levelYes
state_mutationYes
table_decisionYes
unchecked_scopeYes
Behavior4/5

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

With no annotations, the description carries the full transparency burden and delivers substantial context: idempotency auto-key behavior, fail-closed handling of stale/out-of-order events, the rule vs. ruling distinction with DM authority, and the guarantee that srdcheck does not own state, produce events, advance time, or generate randomness. This covers key concerns for a stateful evaluation tool, though it omits details like error responses or authorization requirements.

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

Conciseness4/5

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

The description is densely packed and front-loaded with the core purpose in the first sentence, followed by idempotency, persistence, event types, and boundary statements. Every sentence adds value and there is no filler. It is longer than ideal, but the complexity of the tool justifies the length, though the event type enumeration could have been shortened by referring to the schema.

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

Completeness3/5

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

For a tool with massive nested schemas and low coverage, the description provides essential high-level orientation: evaluation-only, idempotency, fail-closed behavior, and ruling authority. It benefits from the existing output schema, so return values need no elaboration. However, it leaves significant gaps around state/event construction and policy inputs, which are crucial for an agent to invoke the tool correctly; the description is a good overview but not a complete guide.

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

Parameters2/5

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

Schema coverage is only 13%, so the description should compensate, but it adds little beyond the schema. It restates idempotency_key usage (already in schema) and lists event types (already an enum). The only genuinely new semantic is the deterministic auto key on omission. Most complex parameters (state, event, table_policy, asserted_facts) are not explained in the description, leaving the agent to rely on the sparse schema.

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 and resource: 'Evaluate one declared event against a canonical state and return a precondition-bound transition proposal plus stamped next_state.' This clearly distinguishes it from the sibling transition_commit tool, which persists the proposed transition. The stated outputs and the explicit boundary 'Persist only through transition.commit' make the tool's role unambiguous.

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?

The description gives explicit usage constraints: supply a stable idempotency_key for Discord events, and persist only through transition.commit, which also names an alternative tool. It further clarifies that stale or out-of-order events fail closed, and that srdcheck never owns state or generates randomness. However, it does not explicitly contrast with other siblings like check_make or save_check, so the guidance is clear but not exhaustive.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chaoz23/srdcheck'

If you have feedback or need assistance with the MCP directory API, please join our Discord server