MCP

Jev MCP

This is a remote tool plug for agents, not a chat model. After you connect, the agent sees six jev_* tools and calls one at a decision boundary. The fields match REST.

What this server is

The agent already has a main model and its own tools. Jev is an extra judgment step: compact state in, a typed choice and probabilities out. It does not execute tools, browse, write long-form reasoning, or replace the agent’s planner.

Server URL

Stateless Streamable HTTP. POST JSON-RPC to this URL. GET is not an SSE stream. Use HTTPS www only. http and the apex host redirect; many MCP clients turn that POST into GET and get 405.

https://www.jevai.org/api/mcp

Auth

MCP accepts a personal Bearer key only, from /agent/keys. Sign-in cookies are not enough. Put the key in a local credential store or JEV_API_KEY. Never put it in a Skill file, project file, or this page.

[mcp_servers.jev]
url = "https://www.jevai.org/api/mcp"
bearer_token_env_var = "JEV_API_KEY"
tool_timeout_sec = 30

Methods

initialize, ping, and tools/list do not call Jev and do not use the daily quota. tools/call does. Protocol version 2025-03-26. Server name jevai.

MethodWhat it does
initializeHandshake. Returns protocolVersion, tools capability, serverInfo.
notifications/initializedAck. HTTP 202, no JSON-RPC result.
pingLiveness. Empty result.
tools/listThe six jev_* tools and their input schemas.
tools/callRuns one decision. Same daily quota as the website runner.

tools/call

POST JSON-RPC to the server URL. arguments are the same business fields as REST. The result’s structuredContent is the same object REST returns in data. content[0].text is that JSON as a string. Unknown tools return isError. Treat probabilities as signals, not authorization.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "jev_guard_tool_call",
    "arguments": {
      "tool": "issue_customer_refund",
      "action": "Refund USD 680 after a disputed duplicate charge",
      "arguments_summary": [
        "order_id=ord_7429",
        "amount_usd=680"
      ],
      "side_effects": [
        "Moves funds",
        "Changes the order payment state"
      ],
      "safeguards": [
        "Customer identity and duplicate charge verified"
      ],
      "policy": [
        "Refunds above USD 500 require human approval"
      ],
      "reversibility": "partially_reversible"
    }
  }
}

Tools

jev_guard_tool_call

Immediately before a consequential tool call. Returns allow, confirm, review, or deny. Does not execute the tool.

Required: tool, action. Optional: arguments_summary, side_effects, safeguards, policy, reversibility. Same payload as POST /api/v1/decisions/tool-guard.

jev_route_model

More than one available model could do the work, and quality, cost, latency, or tools affect the choice.

Required: task, candidates. Optional: priorities, constraints, stakes. Same payload as POST /api/v1/decisions/model-route.

jev_route_task

The next path is ambiguous or risky: proceed_fast, deep_review, split_task, or block.

Required: task. Optional: evidence, constraints. Same payload as POST /api/v1/decisions/route.

jev_check_research

Evidence is already collected and you need to accept, verify_more, or reject one claim. Does not browse.

Required: claim. Optional: evidence, source_quality, stakes. Same payload as POST /api/v1/decisions/research.

jev_review_completion

Before reporting a non-trivial objective complete: complete, verify_more, or incomplete.

Required: objective. Optional: completed_work, verification, known_gaps. Same payload as POST /api/v1/decisions/completion.

jev_decide

No preset fits. Send your own state and choice / noul / score questions.

Required: state, questions. Optional: model (Jev identifier only). Same payload as POST /api/v1/decisions.