RPCS-1 Agent Tuner & Translation Bridge
Find your AI agent's likely failure mode, get runtime settings, and clarify ambiguous prompts.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin calibrate_profile
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"rpcs1-agent-tuner": {
"url": "https://rpcs1.dev/mcp"
}
}
}Remote endpoints
https://rpcs1.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢recommend_agent_configuration(task, environment, target_platform, target_model)
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.
Input Schema
{
"type": "object",
"properties": {
"task": {
"type": "object",
"properties": {
"task_summary": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"default": "Customer support agent handling refunds, billing disputes, and policy exceptions",
"description": "Plain-language description of what the AI agent does."
},
"domain": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"default": "customer_support",
"description": "Optional domain such as coding, research, or support."
},
"expected_duration_per_call": {
"type": "string",
"enum": [
"short",
"medium",
"long"
],
"default": "medium"
}
},
"additionalProperties": false,
"default": {
"task_summary": "Customer support agent handling refunds, billing disputes, and policy exceptions",
"domain": "customer_support",
"expected_duration_per_call": "medium"
}
},
"environment": {
"type": "object",
"properties": {
"entropy": {
"type": "string",
"enum": [
"stable",
"moderate",
"dynamic",
"chaotic"
],
"default": "dynamic",
"description": "How often the operating environment changes."
},
"predictability": {
"type": "string",
"enum": [
"highly_predictable",
"somewhat_predictable",
"unpredictable"
],
"default": "somewhat_predictable",
"description": "How predictable changes are when they occur."
},
"stakes": {
"type": "string",
"enum": [
"low",
"medium",
"high",
"catastrophic"
],
"default": "high",
"description": "The cost of an incorrect agent action."
},
"context_relevance": {
"type": "string",
"enum": [
"short",
"medium",
"long"
],
"default": "medium",
"description": "How far back relevant context usually extends."
},
"commitment_style": {
"type": "string",
"enum": [
"decisive",
"balanced",
"cautious"
],
"default": "cautious",
"description": "How quickly the agent should commit to an action."
}
},
"additionalProperties": false,
"default": {
"entropy": "dynamic",
"predictability": "somewhat_predictable",
"stakes": "high",
"context_relevance": "medium",
"commitment_style": "cautious"
}
},
"target_platform": {
"type": "string",
"enum": [
"anthropic",
"openai",
"open_source",
"generic"
],
"default": "anthropic",
"description": "The platform whose runtime parameters should be recommended."
},
"target_model": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"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."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"receiver_profile": {
"type": "object",
"properties": {
"TI": {
"type": "number"
},
"SG": {
"type": "number"
},
"FT": {
"type": "number"
},
"UE": {
"type": "number"
},
"AR": {
"type": "number"
}
},
"required": [
"TI",
"SG",
"FT",
"UE",
"AR"
],
"additionalProperties": false
},
"platform_parameters": {
"type": "object",
"properties": {
"temperature": {
"type": "number"
},
"top_p": {
"type": "number"
},
"max_tokens": {
"type": "number"
},
"model_recommendation": {
"type": "string"
},
"system_prompt_additions": {
"type": "array",
"items": {
"type": "string"
}
},
"tool_use_strategy": {
"type": "string",
"enum": [
"explicit_confirmation",
"cautious_chaining",
"aggressive",
"fail_fast"
]
},
"retry_strategy": {
"type": "string",
"enum": [
"aggressive",
"moderate",
"minimal"
]
},
"context_strategy": {
"type": "string",
"enum": [
"long_window",
"rolling_summary",
"frequent_grounding"
]
},
"translation_posture": {
"type": "string",
"enum": [
"direct",
"bridging",
"face_preserving",
"minimal_clarifying"
]
},
"translation_notes": {
"type": "array",
"items": {
"type": "string"
}
},
"receiver_evidence": {
"type": "object",
"properties": {
"model_key": {
"type": "string"
},
"display_name": {
"type": "string"
},
"grade": {
"type": "string",
"enum": [
"confirmatory",
"corroboration",
"self_measurement"
],
"description": "Evidence grade of the measurement — travels with the data."
},
"li2": {
"type": "number",
"description": "Fenced literalness, [-1, +1]."
},
"ob": {
"type": "number",
"description": "Truth-override boundary rung (0-5)."
},
"fringe": {
"type": "array",
"items": {
"type": "number"
},
"description": "Rungs with modal comply-then-correct."
},
"sb": {
"type": "number",
"description": "E-LIT-3 stakes boundary (1-5): highest stakes rung at which format fences still hold. Separate instrument; never pooled with li2/ob."
},
"cb": {
"type": "number",
"description": "E-LIT-3 care boundary (1-4): highest emotional-intensity rung at which fenced answers stay bare."
},
"measured_on": {
"type": "string"
},
"scope": {
"type": "string"
}
},
"required": [
"model_key",
"display_name",
"grade",
"li2",
"ob",
"fringe",
"measured_on",
"scope"
],
"additionalProperties": false,
"description": "Present only when target_model has a measured per-model receiver entry."
},
"receiver_traits": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reliability warnings and named traits for the measured receiver."
}
},
"required": [
"temperature",
"max_tokens"
],
"additionalProperties": false
},
"predicted_regime": {
"type": "string",
"enum": [
"stable",
"near_oscillation",
"near_overload",
"near_freeze"
]
},
"reasoning": {
"type": "string"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"imm_principles_applied": {
"type": "array",
"items": {
"type": "string"
}
},
"confidence": {
"type": "string",
"enum": [
"high",
"medium",
"low"
]
}
},
"required": [
"receiver_profile",
"platform_parameters",
"predicted_regime",
"reasoning",
"warnings",
"imm_principles_applied",
"confidence"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢interpret(text, risk)
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.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "The message to interpret."
},
"risk": {
"type": "string",
"enum": [
"casual",
"advice",
"high-stakes",
"safety-critical"
],
"default": "advice",
"description": "Risk category for ambiguity threshold."
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢fork(text, rejected)
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.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"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."
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢normalize(text)
Clean up text with ellipses, fragments, and run-on thoughts into coherent prose. Use when a user types stream-of-consciousness or fragmented input.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "Fragmented text to normalize."
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢rewrite(text, style)
Get rewrite instructions for adapting text to a specific style: technical, plain, socially_gentle, concise, detailed, or direct. Use when communication needs tone adjustment.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "Text to rewrite."
},
"style": {
"type": "string",
"enum": [
"technical",
"plain",
"socially_gentle",
"concise",
"detailed",
"direct"
],
"default": "plain",
"description": "Target audience style."
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢calibrate_profile(answers)
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
Input Schema
{
"type": "object",
"properties": {
"answers": {
"type": "object",
"properties": {
"TI": {
"type": "string",
"enum": [
"a",
"b",
"c"
]
},
"SG": {
"type": "string",
"enum": [
"a",
"b",
"c"
]
},
"FT": {
"type": "string",
"enum": [
"a",
"b",
"c"
]
},
"UE": {
"type": "string",
"enum": [
"a",
"b",
"c"
]
},
"AR": {
"type": "string",
"enum": [
"a",
"b",
"c"
]
}
},
"additionalProperties": false,
"description": "Chosen option id per primitive. Omit entirely to receive the questions."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢prepare_prompt(text, risk, profile)
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.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "The user’s raw message."
},
"risk": {
"type": "string",
"enum": [
"casual",
"advice",
"high-stakes",
"safety-critical"
],
"default": "advice",
"description": "Risk category for the ambiguity threshold."
},
"profile": {
"type": "object",
"properties": {
"TI": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Temporal Integration: 0 = bottom line first, 100 = full context first"
},
"SG": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Signal Gain: 0 = flat and factual, 100 = warm and expressive"
},
"FT": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Filtering Threshold: 100 = explicit and literal, 0 = subtext lands"
},
"UE": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Update Elasticity: 100 = pushback welcome, 0 = prefers consistency"
},
"AR": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Ambiguity Resolution: 100 = commit to best reading, 0 = clarify first"
}
},
"required": [
"TI",
"SG",
"FT",
"UE",
"AR"
],
"additionalProperties": false,
"description": "The user’s ReceiverProfile from calibrate_profile. Shapes clarify-vs-commit behavior."
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢render_reply(text, profile)
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.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 10000,
"description": "Your draft reply."
},
"profile": {
"type": "object",
"properties": {
"TI": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Temporal Integration: 0 = bottom line first, 100 = full context first"
},
"SG": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Signal Gain: 0 = flat and factual, 100 = warm and expressive"
},
"FT": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Filtering Threshold: 100 = explicit and literal, 0 = subtext lands"
},
"UE": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Update Elasticity: 100 = pushback welcome, 0 = prefers consistency"
},
"AR": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Ambiguity Resolution: 100 = commit to best reading, 0 = clarify first"
}
},
"required": [
"TI",
"SG",
"FT",
"UE",
"AR"
],
"additionalProperties": false,
"description": "The user’s ReceiverProfile from calibrate_profile."
}
},
"required": [
"text",
"profile"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢route_intent(text, hypotheses, likelihoods, profile)
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).
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "The user’s raw message."
},
"hypotheses": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"label": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"cues": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"maxItems": 32,
"description": "Lexical cues for the built-in scorer; omit when passing likelihoods."
},
"paraphrase": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"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."
},
"prior": {
"type": "number",
"exclusiveMinimum": 0
}
},
"required": [
"id",
"label"
],
"additionalProperties": false
},
"minItems": 2,
"maxItems": 24,
"description": "Candidate interpretations. Omit to use a generic six-intent starter set plus a catch-all."
},
"likelihoods": {
"type": "object",
"additionalProperties": {
"type": "number",
"minimum": 0
},
"description": "Optional externally computed likelihood per hypothesis id (e.g. model-derived) — replaces the lexical scorer."
},
"profile": {
"type": "object",
"properties": {
"TI": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Temporal Integration: 0 = bottom line first, 100 = full context first"
},
"SG": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Signal Gain: 0 = flat and factual, 100 = warm and expressive"
},
"FT": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Filtering Threshold: 100 = explicit and literal, 0 = subtext lands"
},
"UE": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Update Elasticity: 100 = pushback welcome, 0 = prefers consistency"
},
"AR": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Ambiguity Resolution: 100 = commit to best reading, 0 = clarify first"
}
},
"required": [
"TI",
"SG",
"FT",
"UE",
"AR"
],
"additionalProperties": false,
"description": "The user’s ReceiverProfile from calibrate_profile. Shapes commit-vs-clarify thresholds."
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence