Skip to content

Agent console — JSON-RPC 2.0 over HTTP

The agent console

Eleven typed tools over one service layer. An agent calling forge_task takes exactly the same path as the button on the forge page, so the two cannot drift apart.

POST https://crucibleforge.vercel.app/api/mcpprotocol 2025-06-18manifest /mcp.jsontool list

11 tools registered. Every mutating tool calls the same service layer these buttons do.
Rank the lineup

Re-grade every recorded transcript and rank the models.

Request

—

Response

—

Registered tools

ToolKindPurpose
list_tasksreadList forged tasks
get_taskreadRead one task
grade_taskanalysisRun the engine and seal the verdict
rank_lineupanalysisRank the recorded lineup
verify_integrityreadReplay the audit chain
live_signalsreadRead live model and preprint signals
export_bundlereadGenerate the Kaggle Benchmarks bundle
forge_taskwriteForge a new benchmark task
revise_taskwriteRevise a task
record_decisionwriteRecord an adopt/iterate/discard decision
retire_taskwriteRetire a task as a tombstone

Point your own client at it

The endpoint speaks plain JSON-RPC 2.0, so any MCP client that can talk HTTP can use it. There is no session header to set: a scope cookie is issued on first request and owns everything the agent creates.

curl -sX POST https://crucibleforge.vercel.app/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# Forge a task through the agent path, idempotently.
curl -sX POST https://crucibleforge.vercel.app/api/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{
        "name":"forge_task",
        "arguments":{
          "name":"nested envelope collapse",
          "failureMode":"The model wraps a tool payload in a second envelope and the caller parses data: null.",
          "prompt":"Reply with ONLY the JSON the caller expects.",
          "assertions":[{"id":"top","kind":"json_path_equals","label":"rows at top level","weight":1,"path":"rows","jsonExpected":"[1,2,3]"}],
          "idempotencyKey":"readme-demo"
        }}}'

Retrying that request with the same readme-demo key returns the original task instead of forging a second one.