mcp-laya
It is an MCP server that gives an agent fast, local, offline, typed decision-making (no text generation) over any state, plus language detection and model introspection.
decide: answer multiple typed questions (choice/score/yes-no) in one pass, with calibrated confidence and routing metadata.
classify: assign the single best category from labels or criteria, with probabilities.
score: rate on an ordinal scale (e.g. urgency) and get per-level probabilities.
check: yes/no/unknown gate for control flow, e.g. "is this a refund request?"
triage: run ready-made decision sets (triage, email, moderation, guard).
detect_language: detect script/language of text in sub-milliseconds.
explain_routing: see which checkpoint would handle a request without running inference.
list_models: list available checkpoints, default model, device, and offline status.
Safe-by-default: runs offline, model allowlist, input caps, confidence honesty, and redacted logs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-layaclassify this support request as billing, technical, or sales"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-laya
A safe-by-default Model Context Protocol server for Laya — a fast, non-autoregressive System-1 decision engine. It gives an agent a thinking primitive: typed decisions — classify, score, yes/no — over any state (text, an email, a ticket, a JSON object), in a single local forward pass (~33 ms), across 100+ languages, with no text generation — nothing to parse and nothing to hallucinate, and a calibrated confidence on every answer.
Instead of burning a slow, costly LLM round-trip on "which team should handle this? is it urgent? is this a refund request?", the agent calls a typed tool that answers locally, in milliseconds, offline. It's the safest server in the suite — laya only reads a state and returns a decision; it changes nothing.
Part of the dockndevai MCP server suite — one governance model across all of them. (This is the first Python server in the suite; the rest are Node/TS.)
What it gives an agent
Tool | For |
| answer several typed questions (choice/score/noul) in one pass — the full engine |
| assign the single best category (one |
| rate on an ordinal scale, e.g. urgency (one |
| a yes/no/unknown gate for control flow (one |
| a ready-made decision set via a laya preset (triage / email / moderation / guard) |
| script + language of a text (sub-ms, no model) |
| which checkpoint would answer, without running inference |
| the checkpoints available, default, device, offline status |
Three checkpoints, auto-routed per request: english (ModernBERT-large), multilingual (mmBERT, 100+ languages), typed-decisions.
Related MCP server: jev-code
Install
pipx install mcp-laya # or: pip install mcp-layaPython 3.10+. laya pulls in torch; the model checkpoints download once from Hugging Face (see below), after which it runs fully offline.
First run: fetch the model once
Downloads are off by default (nothing leaves your machine at runtime). Pre-fetch the checkpoints one time with network access:
LAYA_ALLOW_DOWNLOAD=true python -c "import laya; laya.Router(preload=True)"Then run the server offline.
Configure
{
"mcpServers": {
"laya": {
"command": "mcp-laya",
"env": { "LAYA_DEFAULT_MODEL": "auto" }
}
}
}See docs/CLIENTS.md for Claude Code / Cursor / Codex / VS Code / Windsurf, and .env.example for every variable.
Example
Ask your agent to "use laya to classify this ticket's department and whether it's a churn risk":
// classify(state, criteria={billing, technical, sales, other})
{ "choice": "billing", "confidence": 0.95, "probabilities": { "billing": 0.95, ... } }
// check(state, "Does the user threaten to cancel?")
{ "answer": "yes", "probability_yes": 0.91, "confidence": 0.91 }Safe by default
laya is read-only inference, so the guardrails (in src/mcp_laya/security.py) are about privacy and resource control, not write-gating:
Offline by default — the model runs locally; nothing is sent anywhere. The one exception, the first-time checkpoint download, is disabled unless
LAYA_ALLOW_DOWNLOAD=true.Model allowlist —
LAYA_MODELSpins which checkpoints may load.Input caps —
LAYA_MAX_INPUT_CHARS/LAYA_MAX_QUESTIONSbound each request.Confidence honesty —
LAYA_MIN_CONFIDENCEflags (never silently trusts) low-confidence answers; every answer already carries a calibratedconfidence.Log privacy —
LAYA_REDACT_STATEkeeps the input text out of the JSON audit log by default.
There's a bundled skill, laya-decisions, teaching an agent when to offload a decision to laya and how to phrase typed questions. See also SECURITY.md.
Developing
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
ruff check src tests && mypy src && pytest # the policy tests need no model
python -m mcp_laya # run the server (stdio)Credits
Built on laya by Convai Innovations (Apache-2.0). This server wraps that library; all model work is theirs. See NOTICE.
Licence
MIT
Available Tools
8 toolscheckA
Answer a single yes/no/unknown question about a state (a noul gate).
Returns answer (yes | no), the probability of yes (0..1), and calibrated confidence. Ideal for
agent control flow: "does the user request a refund?", "is this a security incident?".
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| state | Yes | ||
| instructions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description itself explains the output contract (answer, probability of yes, calibrated confidence) and implies a read-only evaluation of state. It does not disclose model-selection behavior, errors, or side effects, but for a query-style tool the main behavior is captured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the core behavior, then add return details and two illustrative examples. No fluff or repeated schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema covers return values, but the description lacks guidance on the model parameter, the meaning of 'noul gate', and how to choose check over decide/classify/triage. It is not complete enough on its own for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that state is the thing being evaluated and instructions are the yes/no question, but it never explains the optional model parameter or the expected format of instructions, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific verb ('Answer'), a single decision type ('yes/no/unknown'), and a target resource ('a state / noul gate'), with concrete control-flow examples. This is enough to separate it from siblings like classify, score, and decide even though no sibling is named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Ideal for agent control flow' plus the refund/security examples gives a clear when-to-use context for binary gating questions. It does not name alternatives or exclusions, so it stops short of the highest level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classifyB
Assign the single best category to a state (one choice question).
Provide either labels (a list of category names) or criteria (a map of category -> short
description; more accurate). Returns the chosen label, calibrated confidence, and the probability
over all labels.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| state | Yes | ||
| labels | No | ||
| criteria | No | ||
| instructions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does it well: it discloses that exactly one category is assigned, that confidence is calibrated, and that the full probability distribution over labels is returned. It omits edge-case behavior when neither labels nor criteria are supplied, but core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight blocks with no filler: the primary action leads, parameter guidance follows, and the return contract closes the description. Every sentence adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter tool with no annotations and 0% schema coverage, too much is left unresolved: whether labels or criteria are mandatory despite the schema only requiring state, how instructions affect behavior, what model defaults to, and what happens if neither labels nor criteria is provided. The output schema covers return shape, but calling semantics remain incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It gives meaning to labels and criteria, and implies state is the thing being classified, but it never explains the model or instructions parameters, and does not define what kinds of values state may take.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Assign the single best category to a state' and narrows the task to 'one choice question'. It makes the classification purpose clear, though it does not explicitly contrast this tool with siblings like decide or score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives actionable guidance on parameter selection: 'Provide either labels ... or criteria', and even notes that criteria is 'more accurate'. However, it does not say when to prefer classify over sibling tools, and it provides no exclusions or alternative tool routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decideA
Answer several typed questions about a state in one local forward pass.
Use this to offload System-1 judgment calls from the main model: classification, routing, scoring and yes/no gates over text, an email, a ticket or a JSON object — fast, local, and without hallucination. Each question is one of three types:
choice: {"type":"choice","instructions":"...","criteria":{"labelA":"desc","labelB":"desc"}}
score: {"type":"score","instructions":"...","criteria":["level0","level1","level2"]}
noul: {"type":"noul","instructions":"..."} (yes/no/unknown)
Returns every answer with its calibrated confidence and full probabilities, plus routing
metadata explaining which checkpoint answered. model optionally pins english | multilingual |
typed-decisions (default: the Router auto-selects per language/task).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| state | Yes | ||
| questions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: it discloses that the tool performs a 'local forward pass', is 'fast, local, and without hallucination', returns 'calibrated confidence and full probabilities', and includes 'routing metadata' and model auto-selection. It does not detail potential side effects, but the local-inference framing implies a read-only, stateless operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence carries information: purpose, use cases, question-type syntax, return value, and model options are all present and front-loaded. It could be tightened slightly, but there is no redundant or self-evident filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key call aspects: input shapes for each question type, return payload (confidence, probabilities, routing), and model selection. Since an output schema exists, return-value details are partially covered there. A complete worked example of a full request would be helpful, but the description is sufficient for an agent to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does thoroughly. It explains 'state' as text, email, ticket, or JSON object; defines the 'questions' structure with concrete JSON examples for choice, score, and noul; and documents the 'model' parameter with allowed values and default behavior. Every parameter is given meaningful semantics beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Answer') and resource ('several typed questions about a state') and clearly differentiates from siblings by emphasizing the batch/composite nature ('several typed questions in one forward pass') versus single-operation siblings like classify/score/check. It also lists the exact judgment types covered (classification, routing, scoring, yes/no gates), leaving no ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context for when to use the tool: 'offload System-1 judgment calls from the main model... fast, local, and without hallucination'. It implies alternatives through the mention of classification, routing, scoring, and yes/no gates, which map to siblings, but it does not state explicit when-not-to-use conditions or name the alternative tools directly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_languageB
Detect the script and language of a text (sub-millisecond, no model forward pass).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal that the tool is fast and does not use a model forward pass, which is a meaningful behavioral trait. However, it does not state what the tool returns (though an output schema exists), error behavior, or any limitations. For a simple detection tool, the disclosed behavior is minimal but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the action and includes a notable efficiency claim. There is zero redundancy; every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and a single simple parameter, the description is nearly complete for calling it correctly. However, it lacks any guidance on when to use it and does not mention potential edge cases (e.g., very short text, ambiguous scripts). The core purpose is covered, but the lack of usage context and parameter explanation leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines one required parameter 'text' as a string, and the description does not add any additional meaning or constraints beyond that. Since schema description coverage is 0%, the description fails to compensate by explaining what kind of text is expected (e.g., encoding, language range, length). The parameter is straightforward, but the description adds no value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Detect' and the resource 'script and language of a text', which is specific and distinguishable from the sibling tools (decide, classify, etc.). It also adds a distinctive performance and implementation detail ('sub-millisecond, no model forward pass') that sets it apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any exclusions or conditions. It does not mention any sibling tools or scenarios where a different tool would be more appropriate. The purpose is clear, but usage context is entirely absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_routingA
Explain which checkpoint the Router would use for this state, without running inference.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | ||
| questions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It discloses a key behavioral trait: the tool does not run inference, which implies a read-only, explanatory operation. It does not detail side effects or permissions, but for this tool type the no-inference statement is a material and useful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core purpose and immediately adds the limiting 'without running inference'. Every word contributes meaning with no filler or redundant restatement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with a nested 'questions' parameter and no annotations, but its purpose is simple and an output schema exists, so return values need not be explained. However, the description leaves the role of 'questions' unclear, which is a meaningful gap for an agent that must construct a valid input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only indirectly references 'state' while saying nothing about 'questions'. The schema provides names and types but no semantics for what should go into the questions object, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Explain') and resource ('which checkpoint the Router would use'), and adds a clear scoping qualifier ('without running inference'). This distinguishes it from sibling tools like decide, classify, and triage, which imply execution rather than explanation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies what the tool does not do ('without running inference') and thus implies it is for explanation rather than execution. However, it does not explicitly state when to prefer this tool over siblings like decide or triage, nor does it provide any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsA
List the laya checkpoints this server may use, the default, device and offline status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. The description indicates the tool returns a list of checkpoints with default, device, and offline status, but does not explicitly state that it is a read-only, non-destructive operation, nor does it mention any side effects, authentication, or rate limits. The verb 'List' implies safety, but the description could be more explicit about its read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core action ('List the laya checkpoints') and then specifies the scope (default, device, offline status). There is no extraneous information, and every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless list tool with an output schema present, the description is sufficiently complete. It tells the agent exactly what information will be returned (checkpoints, default, device, offline status). While it doesn't mention potential pagination or limits, these are unlikely to be significant for a small set of checkpoints. The description provides enough context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no parameter information. According to the rubric, a tool with 0 parameters gets a baseline of 4. The description adds nothing about parameters (as none exist), and no compensation is needed. The description's mention of 'default, device and offline status' describes output fields, not parameters, so it doesn't add parameter semantics but is acceptable for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'laya checkpoints', and specifies additional details (default, device, offline status). It distinguishes itself from the action-oriented sibling tools (decide, classify, score, etc.) by being a read-only query about available models.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context about what the tool does (lists available checkpoints) but does not explicitly mention when to use it versus alternatives. Since it is a list operation and the siblings are all inference/classification actions, the use case is implied. It lacks explicit exclusions or alternative routing, but the context is clear enough for an agent to infer when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scoreB
Rate a state on an ordinal scale (one score question).
levels are the ordered rungs, lowest first, e.g. ["not urgent","soon","critical"]. Returns an
expected score (0..len-1), the level legend, calibrated confidence, and per-level probabilities.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| state | Yes | ||
| levels | Yes | ||
| instructions | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses level ordering and the return payload (expected score, legend, calibrated confidence, per-level probabilities), but it does not mention side effects, model parameter behavior, error conditions, or what the instructions parameter controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by a useful example and return summary. There is no filler, though the phrase 'one score question' is slightly terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema likely covers the return structure, so the description's return summary is helpful but not strictly necessary. However, it omits guidance on when to choose score over sibling tools and leaves two parameters unexplained, making it adequate but incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains levels and their ordering, but leaves state, instructions, and model semantically undefined in both the schema and description. This is only partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: rating a state on an ordinal scale using ordered levels. It emphasizes 'one score question' and 'ordinal scale,' which distinguishes it from categorical classification, though it doesn't explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for ordinal scoring but provides no explicit guidance on when to use this tool instead of siblings like classify, decide, triage, or check. There are no stated exclusions or alternative selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
triageA
Run a ready-made set of decisions over a state using a laya preset.
presets: triage (department/urgency/sentiment…), email, moderation (safety categories), guard (prompt-injection / policy gates). Returns all answers with confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | ||
| state | Yes | ||
| preset | No | triage |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Because annotations are absent, the description carries the full burden. It does disclose the key behavior—running preset decision sets and 'returns all answers with confidence'—which clarifies output style. It does not mention side effects, authorization, or model execution, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with no filler: the first states the operation and the second packs preset guidance plus output expectations into a compact list. Information is front-loaded and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is adequate for a simple preset-driven tool, especially since an output schema exists and the return value ('all answers with confidence') is mentioned. It falls short on explaining the 'model' parameter, the meaning of 'laya', and when to choose this over sibling tools like decide/classify/score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds real semantics for 'preset' by listing valid values and for 'state' as the analyzed input. However, the optional 'model' parameter is never explained, and 'state' structure is left vague.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb–resource pair: 'Run a ready-made set of decisions over a state' and then enumerates presets. This is not a tautology and is distinct from a single classification call, though it never names the sibling tools explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete usage context by listing preset names and their domains (triage for department/urgency/sentiment, moderation for safety categories, guard for prompt-injection/policy gates). There are no exclusions or explicit alternatives, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
check - First observed
classify - First observed
decide - First observed
detect_language - First observed
explain_routing - First observed
list_models - First observed
score - First observed
triage
TDQS
Scored across 8 tools
classify, score, and check are single-question wrappers around decide's choice/score/noul modes, so an agent choosing between decide and a specialized tool may face ambiguity for a one-off task. Their descriptions clearly separate the single-vs-multiple use cases, but the underlying semantics overlap.
All tool names are lowercase and start with an imperative verb, with compound names following verb_noun (detect_language, explain_routing, list_models). The single-word verbs (decide, classify, score, check, triage) are a minor stylistic deviation from the compound pattern but remain predictable.
Eight tools is a reasonable size for a decision-model server and stays inside the ideal 3-15 range. The count is slightly padded, though, because classify/score/check are specialized versions of decide's three question types.
The set covers general and specialized decisions, ready-made triage presets, language detection, routing explanation, and model listing—no obvious dead ends for inference workflows. Minor gaps include no queryable preset list or way to register custom presets, but these can be worked around.
Maintenance
Related MCP Connectors
Deterministic prompt-injection detector; signed, offline-verifiable verdicts. Not an LLM.
Deterministic contextual decision arbitration and action routing for autonomous software. Takes current state, context, or intent plus caller-supplied candidate actions, state transitions, routes, refusals, escalations, tools, or models and returns a deterministic ordered candidate field. Also provides persistent machine representations for memory, retrieval, indexing, and downstream coherence measurement.
Calibrated world model for AI agents. 40 tools: world state, markets, trading. Kalshi + Polymarket.
Sentiment, toxicity, entity extraction, PII, translation, summary, QA, fraud scoring, safety audit.
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides agents with fast, typed, calibrated decision tools for classification, scoring, yes/no checks, and gating risky tool calls.51,206 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides coding agents with typed classification, yes/no checks, scoring, ranking, and question-answering tools that return calibrated probabilities for fast, reliable decisions.9MIT
- AlicenseAqualityCmaintenanceEnables local, LLM-free probabilistic decisions (choice, classification, scoring, yes/no) with real probabilities in 100+ languages, as a drop-in replacement for jev-local tools.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to perform typed decisions (choice, score, noul) over text, emails, tickets, or JSON documents, with automatic language routing and source ranking across 100+ languages via a single forward pass.Apache 2.0