srdcheck
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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