Skip to main content
Glama

FIDE Laws of Chess

Server Details

FIDE Laws of Chess (2023) as an executable model: arbiter cases, answers with rules and judgments

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
arxohq/arxo-fide-chess
GitHub Stars
0

TDQS

Score is being calculated.

Available Tools

16 tools
law_answer_capabilities
Read-only
Inspect

A machine-readable matrix of the Lens producers that are actually installed, of replay/projection checks, profiles, limits and the contract tests that confirm them. declared_only means a schema with no executable witness.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

law_ask
Read-only
Inspect

Put a question to formalised law. When the answer is "not established" it carries whyNot — the engine's why_not report: the candidate rules and the state of every conjunct (satisfied / not satisfied / undetermined); the missing facts are visible there and need not be guessed. BEFORE THE FIRST call obtain the predicate names through law_search (a question in your own words → addresses) or law_packages (the signatures of a known instrument) — an invented name will be rejected. If the tool returned an error or "not established", THAT IS THE ANSWER: pass it to the user and do not substitute general knowledge about the law of some other country. But "I found no suitable instrument" is NOT an answer until law_search has been asked: silence of the catalogue is a property of searching by title, not a conclusion about the corpus. kind='truth' — whether a fact is established; kind='collect' — enumerate the records; kind='deadline' — compute a time limit on the official calendar; kind='positions' — which DUTIES arose from the facts and what their statuses are; kind='why_not' — the why_not report on the same goal, whatever the status of the answer. The answer carries the rules applied, the warnings and the provenance with hashes; truth/collect also carry a signature block for presentation. The server does not guess: where a norm is not formalised, the answer is "not established" or an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNothe arguments of the predicate in the order of its signature; with kind='collect' exactly one of them is the selection variable ?name (for example ['urn:x:water', 'urn:x:mix', '?value']), the rest are values. Values follow the parameter type: an entity — 'urn:…' or a short name; Date — 'YYYY-MM-DD'; Money — '<number> <currency>' ('43250 KZT'); Quantity — '<number> <unit>' with the unit exactly as the package spells it; a constant of the package — its name
calcNokind='calc': a tree {op,left,right}, op ∈ add|sub|mul|div|le|lt|ge|gt|eq|ne (the synonyms divide/multiply/plus/minus and the signs are accepted); the leaves are 5 | '3932 KZT' | '2 mrp' | {lookup: 'mrp', args: [2026]} — a statutory value from the corpus; aggregates are {aggregate: 'sum', element: '?v', over: [{predicate, args with '?variables'}]} over the facts given in facts
daysNodeadline: the length of the period
kindNothe kind of question (truth by default)
unitNo
afterNodeadline: the date of the event
factsNofacts of the case: [{predicate, args, provenance, negated?, package?, judgment?}]. provenance is required and must be an object; {} is allowed. Its fields are optional: {origin?, evidence?: StableId, span?: {page?, quote?, offset?}, extractor?: {name, version?, confidence?}, observedAt?, recordedAt?}. origin defaults to case_input. evidence and observedAt are not required; the extractor is lowered to was_generated_by and a document to was_derived_from. confidence is a decimal string; the package EvidencePolicy reads the threshold, not the host. package resolves an ambiguous short name; args use the same notation as the args of the question
proofNoreturn the evaluation field with the proof graph in the answer — a ready-made input for law_explain (kind truth|collect; by default a summary without the graph)
cutoffNodeadline: the hour operations close
contextNoExplicit temporal context: timezone is an IANA name; decisionTime and knowledgeTime are complete Instants with UTC or an offset, preserved unchanged. legalTime is also required with context; a profile may require all these fields
focusedNokind='truth': ask as focused_truth — the same answer as the full truth, but the proof and the warnings cover only the cone of the question; the answer carries evaluationKind and the slice hashes (focus); the cone in focus is reduced to coneHash and the predicate count, the full cone manifest comes in evaluation.focusManifest with proof=true. A slice is not an audit document: law_prepare_answer does not accept it for publication
packageNonarrow the question to one package of law
versionNothe exact package version pinned by the client (open('name@version')); if it differs from the profile composition the host refuses instead of answering with another version
evidenceNocase documents, section 74, evidence_item nodes. One document is referenced from provenance.evidence of many facts. payload.confidence is data for the EvidencePolicy; the engine does not evaluate the number
afterTimeNodeadline: the time of filing
legalTimeNothe date of the law (YYYY-MM-DD)
predicateNowhat is being asked, e.g. 'duty_amount'
responseModeNofull (default) — the complete answer. compact is accepted for compatibility: this server builds no short reply and returns the same complete answer in both modes; there is no fullAnswer reference and no stored snapshot of the answer.
supportEdgesNosupport edges, section 75, support_edge nodes: from is the document id, to is the fact literal, relation is supports or refutes. Admission is decided by the package EvidencePolicy, not by the host
deadlinePolicyNothe policy for counting time limits expressed in days: the StableId of a deadline policy declared in the world of the question (e.g. 'urn:kz:corpus:clir:administrative-code#AC_WORKING_DAY_TERMS'), or its short name when exactly one declaration carries it. An inline object {start_count: 'same_day'|'next_day', include_end: true|false, roll: 'no_roll'|'next_working_day'|'previous_working_day'[, month_end: 'last_day_of_month']} is accepted only by a 0.1 world; a 0.2 world refuses it, and the refusal names the declared policies. Without a policy a norm carrying a time limit answers MISSING_POLICY — the policy is set by the law of procedure and the server never assumes one. The snapshot of the official calendar for working days is supplied by the server itself whenever an instrument counts them.
evidencePolicyNoStableId of an evidence_policy node, section 78.2. Without it, previous calls keep their behaviour. The confidence threshold is a rule of that policy, not an argument of the call
selectedInterpretationsNonamed readings; for an exactly_one group choose exactly one StableId out of law_packages/law_rules
law_capture_answer
Read-only
Inspect

Run a registered producer and obtain producerControl/0.2 for a later verifiable preparation of a Lens. The producer is chosen only from the shipped registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes
producerYes
law_case_ask
Read-only
Inspect

The ask operation: run a registered case of a case package over its pinned dependencies and return the answer: by default a projection of the evaluation document without the proof graph, on responseMode full or proof: true the canonical document with a proof and a manifest. The question is JSON per query.schema.json (query), an evaluate string (evaluate + queryId), a saved queryId without query, or card + args. A refusal to prepare is an error with an LDC-* code, never an empty answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNothe card parameters: name → string expression of the language
cardNothe id of a card of an installed catalog
caseNothe name of the case declaration from [[cases]]; optional when there is only one case
proofNotrue — the full document with the proof graph (the same as responseMode full); false — the projection. The same form as in law_ask.
queryNothe question as JSON per query.schema.json; queryId is a URN in the namespace of the package, or a short name given in queryId
packageYesthe path to the case package (the directory holding law.toml) from the root of the repository
queryIdNowithout query/evaluate — the choice of a saved queries/*.json by short name or full URN; with evaluate — the id of the question being run
evaluateNothe string `evaluate <expression>;`; requires queryId
responseModeNocompact — a projection for an agent: results, positions, conflicts, the manifest, issues above info and every hash are kept, proofGraph is replaced by its hash, roots and node count (field proof), the number of dropped info issues is issuesOmitted. full — the complete canonical evaluation document, the one `law ask` writes; proof: true asks for the same. The projection's resultHash equals the hash of the full document; a proof or a publication needs full.
law_explain
Read-only
Inspect

Unfold the proof of a law_ask answer into a chain "rule ← premises → conclusion". The compact input: question (the original law_ask arguments, truth/collect), resultHash and codeHash from the provenance of the answer. The server repeats the computation and compares the hashes; if anything changed it refuses explicitly. Alternatively pass the evaluation from law_ask(proof=true). answerResource=fullAnswer.uri explains a stored compact snapshot without recomputing and without the client loading pages; by default only the proofRef chain. nodeId selects one node and all of its premises (up to 24 KB, otherwise an explicit refusal). proofHash refers to the whole graph; scope marks the part selected.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdNo
codeHashNo
questionNothe original law_ask arguments
evaluationNothe evaluation document from law_ask
resultHashNo
answerResourceNothe fullAnswer.uri of a stored answer taken with proof=true

Output Schema

ParametersJSON Schema
NameRequiredDescription
stepsYes
proofHashNo
law_inspect
Read-onlyIdempotent
Inspect

Evaluation inspector over a SAVED evaluation document: summary — the origin card, resultHash and snapshot verification, listings of results, positions and issues; slice — the closure of proof nodes for a query, rule, position or node with addresses, both sides of BOTH, defeats, values, names resolved against the snapshot; diff — what changed between two documents on the context, result and justification levels; locate — the declaration by StableId. Nothing is evaluated or recomputed: the source is evaluation from law_ask(proof=true) or an answerResource. Missing data is a limit state (limits), never a negation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
indexNo
bundleNo
selectNo
againstNo
contextNo
sourcesNo
snapshotNo
operationYes
evaluationNo
answerResourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

law_packages
Read-only
Inspect

The catalogue of formalised law: instruments, predicates with signatures, the boundaries of coverage. This is where the NAMES of predicates come from — they must never be guessed. But do NOT start from the catalogue when looking for the right instrument: the overview is large, and the title of an instrument rarely matches the words of a question ("Newton's laws of motion" contains no word "physics"). A question in your own words goes to law_search first, which returns addresses; the catalogue is for the exact signature of what you found. With no arguments — the overview: one line per instrument (key, title, legal order, counters of rules, facts, signatures, norms, constants); a whole instrument — package="kz-gpk"; a search over the signatures, labels and constants of every instrument — query="substring". All three modes are PAGED: limit and offset, with the remainder named in the text (showing a–b of N; k more) and in structuredContent (total, truncated, next — a ready-made continuation call). The unit of a page is named by pageUnit: the overview and query page over INSTRUMENTS (20 and 20 by default), package=… pages over the SIGNATURES of one instrument (20 by default, 300 at most) — large codes carry thousands. package=… together with catalog=… pages a separate list of the instrument: "questions" — the CATALOGUE OF QUESTIONS: which enquiries are provided for (a question in words, a form, a predicate or norms) and what the instrument does NOT answer, with the type of reason; a card is a template of an enquiry, not an answer, and not every instrument has one; "norms" — the NORMS of the instrument, "constants" — the CONSTANTS (names of declarations). "task-guides" — TASK GUIDES: the order of applying a canon to a document — what to gather, which cards to ask and how to read the answers; a guide answers nothing. catalog="task-guides" is allowed without package too — every guide of the profile; guide=… — the detail of one guide; the walkthrough — MCP Prompts under the same name. The detail of an instrument prints a preview of these lists and names the count and the ready-made call for the mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
guideNotogether with catalog="task-guides": the detail of one guide — a name <package>/<id> (as in prompts/list) or an id together with package
limitNohow many per page: instruments (overview 20, query 20), signatures of an instrument (20, at most 300) or elements of a catalog list (questions 20, norms 20, constants 100, task guides 20)
queryNoa substring filter over signatures, labels and constants (case-insensitive)
offsetNofrom which element of the page (0); the unit is the pageUnit of the answer
catalogNotogether with package: page the catalogue of questions, the norms, the constants or the task guides of the instrument instead of its signatures; "task-guides" also without package: every task guide of the profile
packageNothe full signatures of this instrument
law_passport
Read-only
Inspect

Passport of an exact release: purpose, interface, boundaries, checks and performance. The reports section holds the history of measurements, failures included. Entries are paged by JSON Pointer; next continues the answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
limitNo
offsetNo
versionYes
sectionsNo
contentHashYes
law_prepare_answerInspect

At the explicit request of the user, repeat between 1 and 12 earlier law_ask or law_process_run calls, compare their replayControl strictly, and prepare a non-public frozen document for 24 hours. The client never supplies the machine answer: the server obtains it only by executing afresh. A divergence in any input, in the law, in a resource, in the server code, in the engine library or in the result rejects the document as a whole.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNo
questionYes
assistantNo
calculationsNo
producerRunsNoRuns of registered producers with control/0.2; mutually exclusive with calculations.
documentVersionNoVersion of the immutable document; 0.1 is kept for transitional compatibility, 0.2 includes all native results and the common reader.

Output Schema

ParametersJSON Schema
NameRequiredDescription
expiresAtYes
previewUrlYes
contentHashYes
resultCountNo
documentHashYes
preparationIdYes
calculationCountYes
law_publish_answer
Idempotent
Inspect

Publish a prepared document. Repeating it with the same preparationId idempotently returns the same URL and the same separate revocation secret.

ParametersJSON Schema
NameRequiredDescriptionDefault
preparationIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
revokedYes
publicIdYes
publicUrlYes
publishedAtYes
revokeSecretYes
law_query
Read-only
Inspect

A deterministic LawQL query over the CLIR of a formalization: a question about the model of the act itself, not about a case. Relations (14): anchors, edges, fields, imports, interpretations, labels, links, literals, nodes, norms, positions, rules, variables, windows. Full field lists: law query --schema. Functions (9): anchor/1, labels/1..2, short/1, contains/2, overlaps/2, starts_with/2, ends_with/2, position/2, derivation/2. exists/not exists over a bound variable; equality and membership only, no arithmetic and no ordering comparisons. Scope: corpus by package.name (for example kz.corpus.labour_code, not a file name) or a glob; without corpus, the whole profile slice; a scope outside the profile is empty (CORPUS_EMPTY). Examples: from r in rules where r.head_predicate == "urn:…#eligible" select r.id as producer, r.strength as strength, anchor(r.id) as anchors — who produces; from l in literals where l.predicate == "urn:…#eligible" select l.node as reader, l.context as context — who reads; query eligible over "pkg" { for x: Person; where applicant(x); select eligible(x); } — inference by the core. This is orchestration over the CLIR and the core; no new legal semantics is implemented here. Instead of text, a question from the catalog with arguments: anchors-of, imports-of, links-of, producers, readers, type-step (see law query --list for the set) (predicate/node/type parameters are URNs, pkg is a package.name or a glob). A structural answer is a queryPage: resultHash of the full queryResult, snapshot (hash of the scope package list), rowCount, rows by rowLimit (20, at most 5000) and rowOffset, next with the snapshot for continuation; full: true returns the full queryResult when the scope is one package. Every row carries provenance (CLIR nodes); an empty answer carries the explain funnel (emptyAt names the clause); errors carry LDC-Qxxxx codes with hints; a source product too wide is refused before execution (QUERY_TOO_BROAD), a continuation on another snapshot as SNAPSHOT_CHANGED.

ParametersJSON Schema
NameRequiredDescriptionDefault
caseNothe case for query-over; it replaces the case clause
fullNoreturn the full queryResult instead of a page; only when the scope is one package
limitNoan explicit cap on eval() materialisations (it does NOT bound the rows — see rowLimit)
queryNoinline LawQL
corpusNothe snapshot scope: a package.name (for example kz.corpus.labour_code) or a glob over package.name; without corpus, the whole profile slice
engineNothere is one engine — the core; the reference implementation is called by its own commandlawc
questionNothe name of a question from the named-query catalog (producers, readers, anchors-of, imports-of, links-of, type-step) or of a lint; instead of query
rowLimitNohow many rows in structuredContent (20; the budget may lower it)
snapshotNothe snapshot hash from next.snapshot of the previous page: a continuation on another snapshot is refused (SNAPSHOT_CHANGED)
argumentsNothe question parameters: an object of name → string (predicate, node, type — URNs; pkg — a package.name or a glob)
rowOffsetNofrom which row (0); continuation comes from next together with snapshot; structural queries only
law_revoke_answer
DestructiveIdempotent
Inspect

Revoke a published document using its separate secret. The public id alone grants no control; revocation closes the HTML page, the API and the download.

ParametersJSON Schema
NameRequiredDescriptionDefault
publicIdYes
revokeSecretYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
revokedYes
publicIdYes
law_rules
Read-only
Inspect

The rules of formalised law put into words: exactly how a predicate is derived (premises, source articles). Call this BEFORE supplying facts to law_ask — the rules say which facts are needed instead of leaving them to be guessed. For large instruments package=… returns a table of contents; the full text comes from predicate=…. The listing by package is paged: limit (20 by default, 500 at most) and offset; the remainder is named in the text (showing a–b of N; k more) and in structuredContent (total, truncated, next — a ready-made continuation call).

ParametersJSON Schema
NameRequiredDescriptionDefault
langNothe language the rules are put into
limitNopackage: how many rules per page (20; the budget may lower it)
offsetNopackage: from which rule (0)
packageNoevery rule of the instrument
contractNoReturn a machine input contract over the same import/dependency world as law_ask. No case evaluation.
predicateNothe rules that derive this predicate
inputLimitNoMachine contract: leaf declarations per page (50).
inputOffsetNoMachine contract: offset of leaf declarations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextNo
limitNo
rulesYes
totalNo
offsetNo
compactNo
packageYes
ruleCountNo
truncatedNo
factsTemplateNo
inputContractNo
verbalizationGapsNo
law_screen
Read-only
Inspect

Build a necessary condition — a superset — for the preliminary selection of rows from an external source. This is NOT a legal answer and NOT SQL: the result is a typed tree and a manifest of the extensions up to TRUE. Every row that passes must then be computed in full by the engine, with a proof graph, on the same snapshot of the data. The binding is passed as a pinnable object; sourceSchemaContentHash is the actual hash of the source schema and is compared loudly with the pin. Case facts that carry provenance (origin, document, quote, extractor) are supplied to law_ask, not here. The confidence figure is read by the package EvidencePolicy, not by this tool and not by the engine.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesa StableId or a unique short name of the goal
bindingYesa law.screen.binding/0.1 artefact
packageYesthe package key from law_packages
legalTimeNothe date of the law YYYY-MM-DD; without it every window of every rule is taken into account
sourceSchemaContentHashYesthe actual sha256 of the source schema

Output Schema

ParametersJSON Schema
NameRequiredDescription
manifestYes
conditionYes
disclaimerYes
schemaVersionYes
law_sources
Read-only
Inspect

Sources: by default short excerpts (view=summary), 5 texts per page, with the address of the full text in fragments[].full. Either package or fragment is required (a StableId from law_search/law_rules). view=full returns exact parts of the text: textRange sets a range of Unicode characters, fragments[].next is the continuation with a contentHash. The hash refers to the WHOLE source, not to the excerpt or the part. textOffset/textLimit require fragment; a continuation requires contentHash. Lists are paged with offset/limit; the answer budget may shrink a page.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNosummary
limitNohow many texts: summary 5, full 1 (the budget may lower it)
offsetNofrom which fragment (0)
statusNothe status of the variant, as given on the source card
packageNothe package key — every fragment of that instrument
fragmentNothe StableId of a fragment
languageNothe language of the variant, as given on the source card
textLimitNothe maximum number of Unicode characters in a part of the text (also ≤8000 bytes of UTF-8)
textOffsetNo
contentHashNothe hash of the full text taken from the previous part

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updates
    • First observedlaw_answer_capabilities
    • First observedlaw_ask
    • First observedlaw_capture_answer
    • First observedlaw_case_ask
    • First observedlaw_explain
    • First observedlaw_inspect
    • First observedlaw_packages
    • First observedlaw_passport
    • First observedlaw_prepare_answer
    • First observedlaw_publish_answer
    • First observedlaw_query
    • First observedlaw_revoke_answer
    • First observedlaw_rules
    • First observedlaw_screen
    • First observedlaw_search
    • First observedlaw_sources

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Deterministic rails for game-running agents — verifies rule legality under SRD 5.2.1 via stateless, offline, sub-millisecond verdicts with citations.
    24
    3
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP chess runtime that lets LLMs play, analyze, and adapt strength by exposing Stockfish, human move likelihood (Maia3), and Lichess statistics, with the LLM handling strategy and the server handling computation.
    13
    46 npm
    AGPL 3.0
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol server that enables LLM agents and humans to play chess games together with comprehensive game management capabilities including move validation, draw detection, and game state tracking.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.