Find your AI agent's likely failure mode, get runtime settings, and clarify ambiguous prompts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Build a ReceiverProfile (TI, SG, FT, UE, AR — continuous 0-100, never a category label) from five behavioral forced-choice answers. Call with NO answers to get the five questions to ask the user; call again with their answers (a/b/c per primitive) to get the profile. Store the returned profile JSON in the user’s notes or memory and pass it to render_reply / prepare_prompt on every turn. Deterministic and stateless — nothing is stored server-side. Schema: https://rpcs1.dev/v1/receiver-profile.json
Chosen option id per primitive. Omit entirely to receive the questions.
Build a ReceiverProfile (TI, SG, FT, UE, AR — continuous 0-100, never a category label) from five behavioral forced-choice answers. Call with NO answers to get the five questions to ask the user; call again with their answers (a/b/c per primitive) to get the profile. Store the returned profile JSON in the user’s notes or memory and pass it to render_reply / prepare_prompt on every turn. Deterministic and stateless — nothing is stored server-side. Schema: https://rpcs1.dev/v1/receiver-profile.json
| Argument | Type | Description |
|---|---|---|
| answers | object | Chosen option id per primitive. Omit entirely to receive the questions. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"answers": {
"type": "object",
"properties": {
"AR": {
"enum": [
"a",
"b",
"c"
],
"type": "string"
},
"FT": {
"enum": [
"a",
"b",
"c"
],
"type": "string"
},
"SG": {
"enum": [
"a",
"b",
"c"
],
"type": "string"
},
"TI": {
"enum": [
"a",
"b",
"c"
],
"type": "string"
},
"UE": {
"enum": [
"a",
"b",
"c"
],
"type": "string"
}
},
"description": "Chosen option id per primitive. Omit entirely to receive the questions.",
"additionalProperties": false
}
},
"additionalProperties": false
}The calibrated ambiguity surface: deterministic structural fork detectors (reference, scope, grouping, compare-vs-choose, polysemy) with character-offset spans, plus per-reading one-line clarifiers the sender can append to lock a reading in. Returns competing readings, an ask-back question, and a forked-answer scaffold. Silent on clean text by contract. Runs the deterministic mirror floor only over MCP (no model). Prefer this over interpret for span-level ambiguity detection: interpret’s entity list is a word-list engine (calibrated 2026-08-15: no discrimination on conversational text) — advisory only.
| Argument | Type | Description |
|---|---|---|
| text* | string | The message to analyze for forks. |
| rejected | array | Reading summaries the user already rejected — never re-offered. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The message to analyze for forks."
},
"rejected": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 12,
"description": "Reading summaries the user already rejected — never re-offered."
}
},
"additionalProperties": false
}Detect ambiguity in user messages using the RPCS-1 Signature Ambiguity Framework. Returns AR level (AR0-AR5), confidence, candidate interpretations with scores, clarifying questions, and suggested next step. Use when a user says something vague, passive-aggressive, or underspecified.
| Argument | Type | Description |
|---|---|---|
| risk | string | Risk category for ambiguity threshold. |
| text* | string | The message to interpret. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"risk": {
"enum": [
"casual",
"advice",
"high-stakes",
"safety-critical"
],
"type": "string",
"default": "advice",
"description": "Risk category for ambiguity threshold."
},
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The message to interpret."
}
},
"additionalProperties": false
}Clean up text with ellipses, fragments, and run-on thoughts into coherent prose. Use when a user types stream-of-consciousness or fragmented input.
| Argument | Type | Description |
|---|---|---|
| text* | string | Fragmented text to normalize. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Fragmented text to normalize."
}
},
"additionalProperties": false
}The inbound half of the Translation Bridge loop. Takes the user’s raw message (possibly ambiguous, fragmented, or underspecified) plus their ReceiverProfile, and returns the recovered intent, a canonical translation to act on, ambiguity level, and — profile-aware — whether to clarify or commit. Call this before acting on any ambiguous user request. Scope note: its detectors are lexical/structural (vague signals, ambiguous references) — for the commit-vs-clarify DECISION, route_intent (with your own proposed readings) is the authority; when they disagree, follow route_intent.
| Argument | Type | Description |
|---|---|---|
| risk | string | Risk category for the ambiguity threshold. |
| text* | string | The user’s raw message. |
| profile | object | The user’s ReceiverProfile from calibrate_profile. Shapes clarify-vs-commit behavior. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"risk": {
"enum": [
"casual",
"advice",
"high-stakes",
"safety-critical"
],
"type": "string",
"default": "advice",
"description": "Risk category for the ambiguity threshold."
},
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The user’s raw message."
},
"profile": {
"type": "object",
"required": [
"TI",
"SG",
"FT",
"UE",
"AR"
],
"properties": {
"AR": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Ambiguity Resolution: 100 = commit to best reading, 0 = clarify first"
},
"FT": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Filtering Threshold: 100 = explicit and literal, 0 = subtext lands"
},
"SG": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Signal Gain: 0 = flat and factual, 100 = warm and expressive"
},
"TI": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Temporal Integration: 0 = bottom line first, 100 = full context first"
},
"UE": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Update Elasticity: 100 = pushback welcome, 0 = prefers consistency"
}
},
"description": "The user’s ReceiverProfile from calibrate_profile. Shapes clarify-vs-commit behavior.",
"additionalProperties": false
}
},
"additionalProperties": false
}Diagnose why a deployed AI agent may fail. Takes environmental entropy, predictability, stakes, context horizon, and commitment style, then returns receiver profile values (TI, SG, FT, UE, AR), platform parameters (temperature, top_p, strategy), regime prediction, reasoning, and warnings. Optionally pass target_model (the actual model id) to attach MEASURED per-model receiver posture (E-LIT table): evidence-graded literalness, truth-override boundary, and translation directives. Deterministic, stateless, read-only — does not store past recommendations.
| Argument | Type | Description |
|---|---|---|
| task | object | |
| environment | object | |
| target_model | string | Optional: the actual model id this agent will run on (e.g. "claude-sonnet-4-6", "deepseek-v4-pro"). When it matches a measured per-model receiver entry (E-LIT table), measured translation directives and evidence-graded posture data are attached to platform_parameters. Unknown models fall back to platform-level behavior unchanged. |
| target_platform | string | The platform whose runtime parameters should be recommended. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"task": {
"type": "object",
"default": {
"domain": "customer_support",
"task_summary": "Customer support agent handling refunds, billing disputes, and policy exceptions",
"expected_duration_per_call": "medium"
},
"properties": {
"domain": {
"type": "string",
"default": "customer_support",
"maxLength": 100,
"minLength": 1,
"description": "Optional domain such as coding, research, or support."
},
"task_summary": {
"type": "string",
"default": "Customer support agent handling refunds, billing disputes, and policy exceptions",
"maxLength": 2000,
"minLength": 1,
"description": "Plain-language description of what the AI agent does."
},
"expected_duration_per_call": {
"enum": [
"short",
"medium",
"long"
],
"type": "string",
"default": "medium"
}
},
"additionalProperties": false
},
"environment": {
"type": "object",
"default": {
"stakes": "high",
"entropy": "dynamic",
"predictability": "somewhat_predictable",
"commitment_style": "cautious",
"context_relevance": "medium"
},
"properties": {
"stakes": {
"enum": [
"low",
"medium",
"high",
"catastrophic"
],
"type": "string",
"default": "high",
"description": "The cost of an incorrect agent action."
},
"entropy": {
"enum": [
"stable",
"moderate",
"dynamic",
"chaotic"
],
"type": "string",
"default": "dynamic",
"description": "How often the operating environment changes."
},
"predictability": {
"enum": [
"highly_predictable",
"somewhat_predictable",
"unpredictable"
],
"type": "string",
"default": "somewhat_predictable",
"description": "How predictable changes are when they occur."
},
"commitment_style": {
"enum": [
"decisive",
"balanced",
"cautious"
],
"type": "string",
"default": "cautious",
"description": "How quickly the agent should commit to an action."
},
"context_relevance": {
"enum": [
"short",
"medium",
"long"
],
"type": "string",
"default": "medium",
"description": "How far back relevant context usually extends."
}
},
"additionalProperties": false
},
"target_model": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Optional: the actual model id this agent will run on (e.g. \"claude-sonnet-4-6\", \"deepseek-v4-pro\"). When it matches a measured per-model receiver entry (E-LIT table), measured translation directives and evidence-graded posture data are attached to platform_parameters. Unknown models fall back to platform-level behavior unchanged."
},
"target_platform": {
"enum": [
"anthropic",
"openai",
"open_source",
"generic"
],
"type": "string",
"default": "anthropic",
"description": "The platform whose runtime parameters should be recommended."
}
},
"additionalProperties": false
}The outbound half of the Translation Bridge loop. Takes your draft reply plus the user’s ReceiverProfile and returns deterministic rendering instructions (structure, warmth, explicitness, revision posture, ambiguity handling — each with a why-trace). Apply the instructions to your draft before answering. Call this on every reply to a calibrated user.
| Argument | Type | Description |
|---|---|---|
| text* | string | Your draft reply. |
| profile* | object | The user’s ReceiverProfile from calibrate_profile. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text",
"profile"
],
"properties": {
"text": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "Your draft reply."
},
"profile": {
"type": "object",
"required": [
"TI",
"SG",
"FT",
"UE",
"AR"
],
"properties": {
"AR": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Ambiguity Resolution: 100 = commit to best reading, 0 = clarify first"
},
"FT": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Filtering Threshold: 100 = explicit and literal, 0 = subtext lands"
},
"SG": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Signal Gain: 0 = flat and factual, 100 = warm and expressive"
},
"TI": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Temporal Integration: 0 = bottom line first, 100 = full context first"
},
"UE": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Update Elasticity: 100 = pushback welcome, 0 = prefers consistency"
}
},
"description": "The user’s ReceiverProfile from calibrate_profile.",
"additionalProperties": false
}
},
"additionalProperties": false
}Get rewrite instructions for adapting text to a specific style: technical, plain, socially_gentle, concise, detailed, or direct. Use when communication needs tone adjustment.
| Argument | Type | Description |
|---|---|---|
| text* | string | Text to rewrite. |
| style | string | Target audience style. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Text to rewrite."
},
"style": {
"enum": [
"technical",
"plain",
"socially_gentle",
"concise",
"detailed",
"direct"
],
"type": "string",
"default": "plain",
"description": "Target audience style."
}
},
"additionalProperties": false
}Entropy routing over competing interpretations — the model proposes, the deterministic core disposes. YOU generate the candidate readings of the user’s message (3–7 short hypotheses covering the plausible interpretations, INCLUDING likely-typo readings, idiom-vs-literal readings, and domain senses) and pass them as hypotheses, ideally with your own likelihoods (0–1 per reading) AND a paraphrase per reading — the user’s message rewritten unambiguously under that interpretation, so the user can VERIFY intent by recognition before anything commits (one misread prompt skews a whole thread). The router computes the posterior and its normalized entropy T̂ and returns the decision: commit (one reading dominates), commit_with_note (close alternative disclosed), present_options (several readings live), or clarify (ask before acting — open-endedly when nothing discriminates). Thresholds adapt to the user’s ReceiverProfile (AR widens/narrows the commit region; high FT discloses near-ties). This tool is the commit-vs-clarify AUTHORITY in the pipeline. Omitting hypotheses falls back to a generic six-intent PRODUCT-ROUTING starter set — do not use the fallback for interpreting arbitrary sentences. Deterministic, stateless, read-only. Benchmarked: RTEB v1.1 (developer-bench grade; see docs/routing.md).
| Argument | Type | Description |
|---|---|---|
| text* | string | The user’s raw message. |
| profile | object | The user’s ReceiverProfile from calibrate_profile. Shapes commit-vs-clarify thresholds. |
| hypotheses | array | Candidate interpretations. Omit to use a generic six-intent starter set plus a catch-all. |
| likelihoods |
| object |
| Optional externally computed likelihood per hypothesis id (e.g. model-derived) — replaces the lexical scorer. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The user’s raw message."
},
"profile": {
"type": "object",
"required": [
"TI",
"SG",
"FT",
"UE",
"AR"
],
"properties": {
"AR": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Ambiguity Resolution: 100 = commit to best reading, 0 = clarify first"
},
"FT": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Filtering Threshold: 100 = explicit and literal, 0 = subtext lands"
},
"SG": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Signal Gain: 0 = flat and factual, 100 = warm and expressive"
},
"TI": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Temporal Integration: 0 = bottom line first, 100 = full context first"
},
"UE": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Update Elasticity: 100 = pushback welcome, 0 = prefers consistency"
}
},
"description": "The user’s ReceiverProfile from calibrate_profile. Shapes commit-vs-clarify thresholds.",
"additionalProperties": false
},
"hypotheses": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"label"
],
"properties": {
"id": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"cues": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"maxItems": 32,
"description": "Lexical cues for the built-in scorer; omit when passing likelihoods."
},
"label": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"prior": {
"type": "number",
"exclusiveMinimum": 0
},
"paraphrase": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "The user’s message REWRITTEN UNAMBIGUOUSLY under this reading. Strongly recommended: when the router asks, the user verifies intent by reading these restatements, not by decoding labels."
}
},
"additionalProperties": false
},
"maxItems": 24,
"minItems": 2,
"description": "Candidate interpretations. Omit to use a generic six-intent starter set plus a catch-all."
},
"likelihoods": {
"type": "object",
"description": "Optional externally computed likelihood per hypothesis id (e.g. model-derived) — replaces the lexical scorer.",
"additionalProperties": {
"type": "number",
"minimum": 0
}
}
},
"additionalProperties": false
}