Skip to main content
Glama
travisbergen2

RPCS-1 Agent Tuner & Translation Bridge

RPCS-1 SDK — AI Agent Tuner

Start with the free tuner: find your AI agent’s likely failure mode, get runtime settings to try, and validate them with a harder case.

RPCS-1 helps teams make agent settings deliberate rather than guessed. Describe the task, change rate, predictability, stakes, relevant context horizon, and commitment style; it returns a five-primitive profile, a runtime recommendation, and a next test. The suite also includes SendRight for catching ambiguous prompts before handoff and the Translation Bridge for profile-aware communication rendering.

Repository Structure

rpcs1-sdk/
├── packages/core/          # TypeScript engine (@rpcs1/core): tuner + translation layer + receiver-profile intake
├── packages/web/           # Next.js app serving rpcs1.dev (tuner, translator, docs, Stripe, /mcp endpoint)
├── packages/mcp-server/    # Standalone STDIO MCP server (what Glama and MCP clients build)
├── sdk/python/             # Python SDK (pip install rpcs1)
├── skills/                 # Canonical agent skill package (HF-HATP v2.0 SKILL.md)
├── docs/                   # Architecture, deployment, launch playbook
└── .github/workflows/      # CI/CD

Related MCP server: bluemouse

Quick Start — Python SDK

pip install rpcs1
from rpcs1 import recommend_params

config = recommend_params(
    task_description="Customer support agent",
    environment_entropy="dynamic",
    environment_predictability="somewhat_predictable",
    stakes="high",
    target_platform="anthropic",
)

print(config.platform_parameters.temperature)   # e.g. 0.52
print(config.predicted_regime)                  # 'stable'
print(config.reasoning)                         # cites Matching Principle

Quick Start — TypeScript Core

import { recommend } from '@rpcs1/core';

const rec = recommend({
  task: { task_summary: 'Customer support agent' },
  environment: {
    entropy: 'dynamic',
    predictability: 'somewhat_predictable',
    stakes: 'high',
    context_relevance: 'medium',
    commitment_style: 'cautious',
  },
  target_platform: 'anthropic',
});

console.log(rec.platform_parameters.temperature);
console.log(rec.predicted_regime);

Development

# Install dependencies
npm ci --include=optional

# Build and test TypeScript core
npm run build --workspace=@rpcs1/core
npm run test --workspace=@rpcs1/core

# Test Python SDK
cd sdk/python
pip install -e ".[dev]"
pytest -v

Web environment variables are documented in packages/web/.env.example (Stripe, Resend, license signing, rate limits). MCP production controls are listed under Production controls below.

The web app deploys to Vercel on Node 24 (region iad1); pushes to main trigger the production deployment.

The Matching Principle

The SDK implements Pred-09-5 from IMM Paper 9:

Stable receivers in an environment with entropy H satisfy TI ~ 1/H.

High-entropy environments → short attention windows (TI ~ 10). Low-entropy environments → long attention windows (TI ~ 90).

Every parameter recommendation traces back to this principle or the basin stability geometry (oscillation/overload/freeze boundary conditions).

Web App

The site can also explain the same product facts in technical, executive, plain-language, or literal-and-precise registers. The explanation changes; pricing, deliverables, and limitations do not.

Brand — Explicit Formula (product) / RPCS-1 (mechanism)

The site fronts one consumer product: Explicit Formula — the box on the landing page. Explicit: says exactly what it means (the product's one job); formula: a repeatable method. The wordmark is an advisory-sticker homage (components/StickerLogo.tsx), deliberately distinct from the trademarked RIAA label.

The mechanism brand — RPCS-1, the receiver engine, its laws, and its scorecard — is unchanged and renders as "Powered by RPCS-1" in the footer. House rule: outcome on the wrapper, mechanism one click deep.

  • The brand is a token: packages/web/lib/brand.ts. Renaming the product is one env var (NEXT_PUBLIC_BRAND_NAME) or one line — no other code changes.

  • Every station that used to compete for the nav (SendRight, Bridge, Translator, Calibrate, Tuner, R&D, …) stays live at its original route and is indexed at /labs (packages/web/lib/labs.ts).

  • The consumer domain follows the deployment: set NEXT_PUBLIC_APP_URL when it goes live. rpcs1.dev remains the mechanism home either way.

SendRight (Interpretation Mirror + Hand-off)

SendRight is the type-and-send front door: type a prompt the way you'd say it out loud, see the readings it actually supports, lock in the one you meant, and hand it to your own model app with one click.

Modules (packages/core):

  • mirror(text) — deterministic fork detectors (no ML, no API calls). Returns { clean, readings[], ambiguousSpans[] }. Detectors: compare-or-choose ("X or Y?" questions without an explicit verb), grouping forks ("A and B or C"), scope forks ("only ... and ..."), dangling pronouns, bare objects ("fix it"), external references ("the above"). Contract: silent on clean prompts — zero-fork controls in tests/mirror.test.ts enforce it. Pure function, callable from any front end (web box, NL2Build, CLI).

  • applyReading(text, clarifier) — appends the chosen reading's clarifier so the locked interpretation travels with the prompt.

  • buildHandoff(vendor, prompt) / listVendors() — per-vendor capability table for opening the user's own model app with the prompt pre-filled. Prefill URL parameters are undocumented vendor behavior and churn without notice; each entry carries a verified date and must be re-checked at release. Verified 2026-07-25: ChatGPT, Claude, Perplexity, Grok support URL prefill; Gemini and Copilot are clipboard-fallback only. Logged-out users may lose the prefill at login. All vendors degrade gracefully to clipboard.

Web: /send (packages/web/app/send) renders the box via components/SendBox.tsx — mirror runs client-side (debounced, zero network); the hand-off happens in the user's own app. SendRight never makes the model call and never sees the answer.

Feasibility boundary (honest scope): reasoning-stream digests and mid-generation stop/realign are only possible where rpcs1 itself owns the API call (the fan-out / power-user mode, not yet shipped). They are structurally impossible in vendor chat UIs and via the MCP surface — SendRight's hand-off path intentionally trades those away for zero keys, zero cost, and zero data custody.

MCP Server

RPCS-1 is also available as a public, anonymous, read-only MCP server:

https://rpcs1.dev/mcp

It exposes eight read-only tools across four families:

  • recommend_agent_configuration — diagnose an AI agent against environmental entropy, predictability, stakes, context horizon, and commitment style; receive runtime settings to try and a next test.

  • interpret, normalize, and rewrite — detect ambiguity, turn fragmented text into coherent prose, and return style-specific rewrite instructions.

  • route_intent — entropy routing over competing interpretations of a message: the calling model proposes candidate readings (paraphrases and priors); the deterministic router computes the posterior and decides commit, present options, or clarify. The commit-vs-clarify authority in the pipeline.

  • calibrate_profile, prepare_prompt, and render_reply — create a continuous communication-preference profile, recover intended meaning before an action, and render a reply for that profile.

Translation Layer

"Say what you mean. Hear what they meant."

The Translation Bridge treats the profile as a transportable parameter, not a category label. The five-question Calibrate flow measures communication preferences for rendering only; it is not a psychological assessment or diagnosis. prepare_prompt / render_reply use that profile on the inbound and outbound sides of an interaction. The canonical agent-facing specification lives at skills/rpcs1-translation-layer/SKILL.md.

Tuner examples

The first useful call is a support copilot under live pressure:

Use recommend_agent_configuration to diagnose my support copilot.

Task: refund and billing dispute triage
Environment: dynamic, somewhat_predictable, high stakes
Context relevance: medium
Commitment style: cautious
Target platform: anthropic

The output should lead with the five-primitive profile, failure-risk score, predicted regime, runtime posture, and next test to run.

The second useful call is a coding agent in a changing repository:

Use recommend_agent_configuration to diagnose my coding agent.

Task: inspect a changing repository, edit files, run tests, and open a pull request
Environment: moderate, somewhat_predictable, medium stakes
Context relevance: long
Commitment style: balanced
Target platform: openai

The output should still lead with the five-primitive profile, failure-risk score, predicted regime, runtime posture, and next test to run.

Connection details and client compatibility notes are available at https://rpcs1.dev/docs/mcp. Practical coding, support, and research examples are available at https://rpcs1.dev/docs/examples.

Hyperagent uses the fixed public OAuth client hyperagent-rpcs1 with PKCE and the registered callback https://hyperagent.com/api/mcp-servers/callback. No client secret is required.

The MCP surface exposes the deterministic agent-tuning workflow alongside read-only translation and per-user rendering tools. New tools should be added only after their scoring or behavior contracts are implemented and tested in the core package.

Discovery metadata:

Production controls:

  • MCP_HOURLY_LIMIT controls per-instance MCP throttling (default: 120 requests per IP/hour).

  • MCP_MAX_BODY_BYTES limits request bodies (default: 65536 bytes).

  • MCP_ALLOWED_HOSTS is a comma-separated production host allowlist.

  • MCP_ALLOWED_ORIGINS is an optional comma-separated browser-origin allowlist. Leave it blank to reject cross-origin browser requests.

  • MCP_OAUTH_JWT_SECRET signs short-lived OAuth authorization codes and access tokens.

  • /api/health reports deployment and MCP readiness metadata.

For globally consistent abuse protection across Vercel instances, configure a Vercel Firewall rate-limit rule for /mcp. The in-process limiter is defense in depth, not a distributed quota.

Glama Docker checks should build and launch the local STDIO server, not connect to the hosted https://rpcs1.dev/mcp endpoint. Use this build spec:

{
  "buildSteps": [
    "npm ci --include=optional",
    "npm run build --workspace=@rpcs1/core",
    "npm run build --workspace=@rpcs1/mcp-server"
  ],
  "cmdArguments": [
    "mcp-proxy",
    "--",
    "node",
    "packages/mcp-server/dist/index.js"
  ],
  "environmentVariablesJsonSchema": {
    "type": "object",
    "properties": {},
    "required": []
  },
  "placeholderArguments": {}
}

License

MIT

Available Tools

4 tools
interpretInterpret ambiguous human inputA
Read-onlyIdempotent
Inspect

Detect ambiguity in a user message and score candidate interpretations using the RPCS-1 Signature Ambiguity Framework. Returns literal summary, implied meaning, confidence, AR level (AR0-AR5), ambiguities, clarifying questions, and per-candidate scores (IC, UE, EC, NM, SG, TI). Use when a user says something vague, passive-aggressive, or underspecified.

ParametersJSON Schema
NameRequiredDescriptionDefault
riskNoRisk category for ambiguity threshold.advice
textYesThe message to interpret.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds value by detailing return fields, including confidence and AR levels, which go beyond the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, then specifics on return. No wasted words; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description compensates by listing return fields. Provides sufficient context for ambiguity detection task, but could elaborate on the risk parameter's effect on interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both parameters have descriptions). The description does not add additional meaning for the parameters beyond listing return details, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'detect ambiguity' and the resource 'user message', specifies the RPCS-1 framework, and lists return fields. This differentiates it from siblings like normalize, recommend_agent_configuration, and rewrite.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use when a user says something vague, passive-aggressive, or underspecified.' Provides clear usage context but does not mention when not to use or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

normalizeNormalize fragmented human inputA
Read-onlyIdempotent
Inspect

Clean up text with ellipses, fragments, and run-on thoughts into coherent prose. Returns the number of fragments detected and the joined version. Use when a user types stream-of-consciousness or fragmented input.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesFragmented text to normalize.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations by stating it returns the number of fragments detected and the joined version. Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description aligns with them, adding no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two sentences, front-loading the key purpose and ending with a usage guideline. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no nested objects, the description covers the purpose, usage, and return value (fragments count and joined version) sufficiently. The annotations and schema cover the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'text' has a description in the schema, and schema coverage is 100%. The description does not add additional meaning beyond the schema, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it normalizes fragmented text into coherent prose, specifying what it does. However, it does not explicitly differentiate from the sibling tool 'rewrite', which could be seen as similar. The verb 'normalize' and resource 'fragmented human input' are clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use when a user types stream-of-consciousness or fragmented input,' providing a clear use case. It does not mention when not to use or provide alternatives to the sibling tools, but the guidance is adequate for this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recommend_agent_configurationRecommend AI agent configurationA
Read-onlyIdempotent
Inspect

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 to attach MEASURED per-model receiver posture (E-LIT table). Deterministic, stateless, read-only — does not store past recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNo
environmentNo
target_modelNoOptional: the actual model id this agent will run on (e.g. "claude-sonnet-4-6"). 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.
target_platformNoThe platform whose runtime parameters should be recommended.anthropic

Output Schema

ParametersJSON Schema
NameRequiredDescription
warningsYes
reasoningYes
confidenceYes
predicted_regimeYes
receiver_profileYes
platform_parametersYes
imm_principles_appliedYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint, idempotentHint, destructiveHint. Description adds 'Deterministic, stateless, read-only — does not store past recommendations,' which reinforces and extends the annotation context. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with purpose, then input/output summary, then behavioral traits. Every sentence adds value with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 parameters with nested objects, output schema exists), the description covers purpose, inputs, outputs, and behavioral traits adequately. Annotations and return types are well specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% and most fields have individual descriptions. The tool description lists input categories but does not add new meaning beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool diagnoses why a deployed AI agent may fail and returns configuration recommendations, specifying input factors and output structure. It distinguishes itself from sibling tools (interpret, normalize, rewrite) which are text-oriented.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for diagnosing agent failure but lacks explicit guidance on when to use vs alternatives or when not to use. No comparison with siblings or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rewriteRewrite text for a target audienceA
Read-onlyIdempotent
Inspect

Get rewrite instructions for adapting text to a specific audience style: technical, plain, socially_gentle, concise, detailed, or direct. Pass the result to an LLM with the rewrite_instructions as the system prompt. Use when communication needs tone adjustment.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to rewrite.
styleNoTarget audience style.plain

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false) indicate the tool is safe and side-effect-free. The description adds behavioral context by explaining the output is meant to be used as a system prompt for an LLM, which goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences: the first defines the purpose and lists style options, the second explains usage and when to apply. No unnecessary words, fully front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description tells the agent exactly what to do with the result (use as system prompt). With only two parameters and simple return type, this is complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (text and style). The description lists the allowed style values, but these are already in the enum. No additional semantic value is added beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get rewrite instructions for adapting text to a specific audience style.' It lists the available styles and distinguishes from sibling tools like 'interpret' and 'normalize' by focusing on style adaptation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use ('Use when communication needs tone adjustment') and how to use the output ('Pass the result to an LLM with the rewrite_instructions as the system prompt'). It does not mention alternatives or when not to use, but the guidance is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: recommend_agent_configuration handles diagnostics, interpret detects ambiguity, normalize cleans text, and rewrite adjusts tone. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (recommend_agent_configuration, interpret, normalize, rewrite), with descriptive suffixes where needed. No mixing of conventions.

Tool Count5/5

Four tools is a well-scoped set for an agent tuner and translation bridge, covering diagnostics, ambiguity resolution, text normalization, and style adaptation without excess or deficiency.

Completeness3/5

The tool set lacks a direct translation feature despite the server name. Additionally, the rewrite tool only provides instructions, not actual output, creating a dependency on an external LLM. Core operations are present but notable gaps exist.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A metacognitive pattern interrupt system that helps prevent AI assistants from overcomplicated reasoning paths by providing external validation, simplification guidance, and learning mechanisms.
    2
    133
    502
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    BlueMouse is the "Prefrontal Cortex" for LLMs. It uses a 180k+ failure pattern database to validate code logic before execution, acting as a rigorous Quality Gate to prevent hallucinations and unsafe operations.
    8
    109
    AGPL 3.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Automatically saves and restores project state when Claude threads hit token limits, ensuring seamless conversation continuity and preventing project fragmentation with intelligent name validation.
    64
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/travisbergen2/rpcs1-sdk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server