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

A
Description quality
98%
Schema completeness
97%
Naming quality
82%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin calibrate_profile

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,039Tokens (tool definitions)
~3.8 KBTypical response size
Significant attention impact (3.16% of 128k context)

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-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
verifiedversion not recorded9 tools