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.
| Method | What it does |
|---|---|
initialize | Handshake. Returns protocolVersion, tools capability, serverInfo. |
notifications/initialized | Ack. HTTP 202, no JSON-RPC result. |
ping | Liveness. Empty result. |
tools/list | The six jev_* tools and their input schemas. |
tools/call | Runs 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.