Riby

MCP tool reference

The four tools riby-mcp exposes, their parameters, size caps, and results.

The riby-mcp server exposes four tools. Three create a request and block until it resolves; one reconciles state after a restart.

Payloads are pager-sized on purpose. The caps below are enforced by the server. Send summaries, not source. Never put secrets in a page.

Shared parameters

Every request tool takes:

ParameterRequiredCapPurpose
titleyes200 charsThe one-line question. Shown everywhere.
gistyes1,500 charsThe context needed to decide: what, why, consequences.
extendedno5,000 charsExtra detail, viewable on the dashboard only. Chat channels show title and gist.

request_permission

Ask the human to approve or deny an action, then wait for the answer.

Extra parameter:

ParameterRequiredValues
danger_levelnolow, medium, high
{
  "title": "Run prisma migrate on prod?",
  "gist": "Adds NOT NULL to users.email. Three existing rows get backfilled first; rollback script is staged.",
  "danger_level": "high"
}

request_plan_check

Ask the human to sign off on a plan before executing it. Same parameters as the shared set: put the plan summary in gist, overflow detail in extended.

{
  "title": "Plan: migrate auth to Clerk",
  "gist": "1. Add Clerk provider. 2. Swap session middleware. 3. Backfill user records. 4. Remove legacy auth. Est. 6 files touched, no schema changes."
}

request_steering

Ask the human to choose a direction. Optionally offer up to 4 options; free text is always possible.

Extra parameter:

ParameterRequiredCapPurpose
optionsno4 options, labels 200 chars eachChoice buttons. Mark at most one "recommended": true.
{
  "title": "Which retry strategy?",
  "gist": "The webhook endpoint flakes under load. Both approaches pass the existing tests.",
  "options": [
    { "label": "Exponential backoff, max 5 retries", "recommended": true },
    { "label": "Dead-letter queue, manual replay" }
  ]
}

Free-text answers are capped at 2,000 characters.

check_pending

No parameters. Reconciles this instance's local ledger with the server. Call it after a crash or restart to pick up answers that arrived while the agent was down. Returns the instance identity and every reconciled request with its current status.

Results

Request tools resolve when the human answers or the TTL expires. The result includes:

FieldMeaning
statusFinal request status
decisionapproved or denied, where applicable
answerFree-text reply, or "Denied by timeout" on expiry
chosenOptionThe selected steering option, if any
resolvedViaWhich channel answered
expired, deniedByTimeouttrue when the TTL ran out. Treat as a definitive no.

Waiting behavior

While a request is pending, the server emits an MCP progress notification every 20 seconds. This keepalive is what stops harnesses from timing out or backgrounding the call, so the agent genuinely waits. Requests expire to deny after 6 hours by default; the TTL is adjustable from the dashboard settings.

Instance identity

Each running MCP server instance labels its pages folder · branch (for example riby · main), so five agents on one machine stay distinguishable. Override with the RIBY_SESSION_NAME environment variable, up to 100 characters.

On this page