Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
jurisdictionA

Look up whether a named entity exists in the loaded rulesets' content registries. exit_code 0 = known content (all matching categories in data.categories); 2 = unknown or third-party content, honestly refused.

table_evaluationB

Adjudicate one named SRDCheck query and project its exact scoped result into deterministic table.evaluation/1.0. Always self-attested, including when the calling agent is the DM; table authority remains with the caller or protected host.

attack_modifiersA

Compose an attack roll's Advantage/Disadvantage from both combatants' conditions and distance (Prone's 5-foot flip, Blinded, Restrained, Paralyzed, Stunned, Invisible with the seen exception, the Grappled attacker rule, and — for ranged attacks — the Ranged Attacks in Close Combat Disadvantage). Condition-sensitive observations such as charmer/grappler relationships, visibility, and the nearby-enemy census are required rather than defaulted. Exhaustion is returned as a flat modifier, never Advantage. Genuinely ambiguous rules text (e.g. a seen Invisible target) returns cannot-adjudicate with the ambiguous sentence cited.

check_makeA

Adjudicate an ability check (a D20 Test) against a DC, condition-aware. Actor conditions: Blinded/Deafened auto-fail a check that requires sight/hearing (supply check_requires, including an explicit empty array for neither); Poisoned/Frightened impose Disadvantage; Exhaustion its flat d20 penalty. Condition-sensitive observations are required rather than defaulted. On a social check where the actor is the target's charmer (target_charmed_by_actor + social), the actor has Advantage. Caller rolls (T6): with d20_result it returns {total, dc, success, roll[, auto_fail]}; without it composes {roll, dc, net_modifier}. Missing required facts return exact paths; malformed inputs or unsupported condition content return their structured recovery class.

concentration_checkA

Compute the Concentration saving-throw DC when a concentrating creature takes damage: DC = max(10, damage // 2), capped at 30 (SRD 5.2.1 p.179). Optionally pass d20_result (+ con_modifier) to also resolve whether concentration holds. Returns data {dc[, total, success]}. The caller rolls; srdcheck folds.

creature_statsA

Return a creature's Challenge Rating and XP with a page citation, for deterministic encounter-budget math. legal with data {name, cr, xp, citation} for a known creature; cannot-adjudicate otherwise.

creature_validA

Is a name a valid SRD 5.2.1 creature? legal = yes (with CR + page citation); illegal = the name is SRD content but not a creature (e.g. a spell); cannot-adjudicate = not in the SRD at all (a 2014-only name, a typo, or third-party content — indistinguishable in this version).

encounter_xp_budgetA

XP budget per character for encounter building (SRD 5.2.1 p.202): given party level (1-20) and difficulty (low/moderate/high), returns the per-character XP budget with citation. Pass party_size to also get the total. Combine with creature.stats to check whether an encounter is within budget.

event_applyA

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.

feature_usesA

Use-count formulas the SRD states as arithmetic (closed set: divine-sense = 1 + CHA modifier; lay-on-hands = 5 x paladin level). Formula-blanks discipline: without the blanks the verdict returns the formula only, never a number. Tables are out of scope.

grapple_initiateA

Adjudicate initiating a Grapple or Shove via an Unarmed Strike (SRD 5.2.1 p.190): computes the save DC formula and checks supplied size / free-hand prerequisites. Both sizes are required; Grapple also requires has_free_hand. Missing prerequisite facts return cannot-adjudicate. legal returns data {dc?, dc_formula, kind, on_fail}; the dc NUMBER appears only when the caller supplied str_modifier AND proficiency_bonus, while those formula blanks may remain omitted. The target's Strength-or-Dexterity save (its choice) is resolved separately via save.check with this DC; the escape contest is out of scope (T6).

help_assistA

Adjudicate the Help action (SRD 5.2.1 p.182). Assist an Ability Check requires an explicit helper_has_relevant_proficiency fact; false is illegal and omission is cannot-adjudicate. Fictional possibility remains an authorized DM ruling, including when the caller is the agent-DM (surfaced as data.gm_discretion). Assist an Attack Roll likewise requires an explicit enemy_within_5ft fact. Returns data {grants_advantage}. kind = ability-check | attack-roll.

mage_hand_useA

Adjudicate one proposed use of the Mage Hand cantrip: granted uses (manipulate, open unlocked, stow/retrieve, pour), prohibitions (attack, activate magic items), the 10-pound carry limit and 30-foot range leash. Granted uses require the relevant facts: distance for every granted use and weight when the hand carries or manipulates an object. Decisive prohibitions do not request irrelevant weight or distance. Uses outside the text's can/can't lists return cannot-adjudicate with gm-discretion and resolve-table-ruling; an authorized agent-DM may rule directly.

opportunity_attack_provokedA

Does a creature's movement provoke an Opportunity Attack? Provokes only when a creature the reactor can see leaves the reactor's reach using its own movement. It does NOT provoke on Disengage, Teleportation, forced movement, or an unseen mover (SRD 5.2.1 p.15). Supply movement_kind; a voluntary path also needs caller-observed leaves_reach and mover_seen_by_reactor unless a supplied false prerequisite already proves no provocation. Missing facts return cannot-adjudicate. Whether the reactor has a Reaction is reaction.available. Returns data {provoked: bool}.

passive_perceptionA

Passive Perception = 10 + the Wisdom (Perception) check modifier (SRD 5.2.1 p.22). Returns data {score}. The SRD defines no Advantage/Disadvantage adjustment to a passive score, so passing advantage/disadvantage is honestly refused (that ±5 rule is not in this ruleset). The score NUMBER appears only when perception_modifier is supplied; otherwise the formula alone is returned.

reaction_availableA

Is taking a Reaction legal right now? Reactions refresh at the start of your own turn (not the round) and are usable on your own turn. Incapacitated and conditions that definitionally include it (Stunned, Paralyzed, Petrified, Unconscious) prevent a Reaction. Unknown or non-condition names are refused.

roll_composeA

Compose net Advantage/Disadvantage from lists of sources: multiple sources never add dice, and any Advantage plus any Disadvantage yields a straight single-d20 roll regardless of counts. Optionally notes the reroll-one-die-only rule.

save_checkA

Adjudicate a saving throw against a DC (SRD 5.2.1 p.6). The CALLER rolls the d20 (RNG is out of scope, T6); srdcheck composes and resolves, cited. Optionally ability-typed and condition-aware: pass save_ability + saver_conditions to apply the codified overrides — auto-fail Str/Dex saves (Paralyzed/Petrified/Stunned/Unconscious), Disadvantage on Dex saves (Restrained), and Exhaustion's flat d20 penalty. With d20_result it returns {total, dc, success, roll[, auto_fail]}; without a d20 it composes and reports {roll, dc, net_modifier}. A missing DC returns missing-fact; malformed inputs or unsupported condition content return their structured recovery class.

spell_factsA

Machine-readable facts for a registered SRD 5.2.1 spell: casting_time, range, components, duration, concentration (bool). Optional caller blank cast_at (a number on the CALLER'S clock) adds expires_at = cast_at + duration as pure arithmetic; non-fixed durations return expires_at null. srdcheck holds no state and no clock. Unknown spell name -> exit 2.

transition_commitA

Verify and commit one event.apply proposal against caller-owned current state. Returns the same semantic receipt for the first atomic compare-and-swap and retries, rejects stale/out-of-order state with reason_code stale-state, and never persists server-side state. The host must atomically store next_state only after exit_code 0.

turn_optionsA

Enumerate what remains legal this turn given the same state shape as turn.plan (no plan). Options carry feet_remaining, stand-up cost, crawl mode, and spell-slot availability. Consistency-tested against turn.plan: everything enumerated is accepted, everything past a boundary rejected.

turn_planA

Judge a whole proposed turn under SRD 5.2.1 ACTION ECONOMY: action/bonus-action/reaction/free-interaction budgets, movement (crawling, standing from Prone, Grappled speed 0), Incapacitated, and the one-spell-slot-per-turn rule. Returns legal/illegal/cannot-adjudicate with citations; illegal verdicts name the first offending step. Scope: this checks the turn's economy only — it does NOT verify that a feature grants a given action (e.g. two-weapon fighting or Extra Attack prerequisites). Unmodeled conditions and out-of-range inputs (negative speed, spell level >9) return exit 2 rather than a guess.

ttt_moveA

Judge one proposed tic-tac-toe move. Board is a 9-character string of X, O, and . (dot = empty), cells 1-9 left-to-right top-to-bottom. Checks turn order, cell validity, occupancy, and whether the game has already ended.

ttt_optionsA

Enumerate the legal moves for a player on a board (same encoding as ttt.move). Empty when it is not the player's turn or the game has ended.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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