Skip to main content
Glama

Ask Jev

ask
Read-only

Get calibrated probabilistic answers to yes/no, scale, or choice questions about your text or JSON data. Use it for quick classification, rating, or verification without spawning a sub-agent.

Instructions

Ask Jev, a fast non-generative judgment model, one or more questions about some material you already have. Use it for a quick second opinion, a classification, a rating, or a yes/no check instead of reasoning it out yourself or spawning a sub-agent.

Write each question in plain language. Jev decides whether it is a yes/no question, a scale, or a choice:

  • Yes/no: "Does this ticket ask for a refund?" You get the probability of yes.

  • Choice: pass "options" with the named alternatives. "Which team owns this?" with options ["billing", "platform"].

  • Scale: pass "options" as ordered levels, lowest first. "How urgent is this?" with options ["can wait", "this week", "today"]. Without options, a built-in rubric is picked for you:

    • intensity: not at all < slightly < moderately < very < extremely

    • quality: poor < below average < acceptable < good < excellent

    • severity: trivial < minor < moderate < major < critical

    • likelihood: very unlikely < unlikely < uncertain < likely < very likely

    • sentiment: very negative < negative < neutral < positive < very positive

    • frequency: never < rarely < sometimes < often < always

    • agreement: strongly disagree < disagree < neutral < agree < strongly agree

Every answer carries probabilities and Jev's confidence, plus "routing" showing how the question was interpreted and how sure Jev was about that. Read the confidence: a low value means the material does not settle the question, so add context or decide another way.

Requires a Typesafe API key. Set TYPESAFE_API_KEY in the environment of the askjev process.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
stateYesThe material to judge: text, a JSON object, or a JSON array.
questionsYesQuestions about the same state, answered in one round trip.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelNoThe Jev model that answered. Present when configured.
usageNoToken usage summed over every Jev call made. Present when configured.
answersYesOne entry per question, in input order. A question that could not be answered has kind "error"; the others are still answered.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.2.0
    • changedOutput schema / properties / answers / items / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "answer": {
      -        "description": "Probability that the answer is yes, from 0 to 1.",
      -        "type": "number"
      -      },
      -      "kind": {
      -        "const": "noul",
      -        "type": "string"
      -      },
      -      "probabilities": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "no": {
      -            "type": "number"
      -          },
      -          "yes": {
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "yes",
      -          "no"
      -        ],
      -        "type": "object"
      -      },
      -      "routing": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "confidence": {
      -            "description": "Jev's confidence in that routing.",
      -            "type": "number"
      -          },
      -          "kind": {
      -            "description": "The question type Jev routed this question to.",
      -            "enum": [
      -              "noul",
      -              "score",
      -              "choice"
      -            ],
      -            "type": "string"
      -          },
      -          "rubric": {
      -            "additionalProperties": false,
      -            "description": "Present when a built-in rubric was picked for a scale question without options.",
      -            "properties": {
      -              "confidence": {
      -                "type": "number"
      -              },
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "confidence"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "confidence"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "answer",
      -      "probabilities",
      -      "routing"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "answer": {
      -        "description": "Expected level on the rubric. May fall between integer levels.",
      -        "type": "number"
      -      },
      -      "confidence": {
      -        "type": "number"
      -      },
      -      "kind": {
      -        "const": "score",
      -        "type": "string"
      -      },
      -      "legend": {
      -        "additionalProperties": {
      -          "type": "string"
      -        },
      -        "description": "Level index to level description.",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      },
      -      "note": {
      -        "description": "Advice when a built-in rubric was used instead of caller options.",
      -        "type": "string"
      -      },
      -      "probabilities": {
      -        "additionalProperties": {
      -          "type": "number"
      -        },
      -        "description": "Probability per level index.",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      },
      -      "routing": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "confidence": {
      -            "description": "Jev's confidence in that routing.",
      -            "type": "number"
      -          },
      -          "kind": {
      -            "description": "The question type Jev routed this question to.",
      -            "enum": [
      -              "noul",
      -              "score",
      -              "choice"
      -            ],
      -            "type": "string"
      -          },
      -          "rubric": {
      -            "additionalProperties": false,
      -            "description": "Present when a built-in rubric was picked for a scale question without options.",
      -            "properties": {
      -              "confidence": {
      -                "type": "number"
      -              },
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "confidence"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "confidence"
      -        ],
      -        "type": "object"
      -      },
      -      "rubric": {
      -        "description": "Name of the built-in rubric, when one was used.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "answer",
      -      "legend",
      -      "probabilities",
      -      "confidence",
      -      "routing"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "answer": {
      -        "description": "The selected option.",
      -        "type": "string"
      -      },
      -      "confidence": {
      -        "type": "number"
      -      },
      -      "kind": {
      -        "const": "choice",
      -        "type": "string"
      -      },
      -      "probabilities": {
      -        "additionalProperties": {
      -          "type": "number"
      -        },
      -        "description": "Probability per option.",
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      },
      -      "routing": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "confidence": {
      -            "description": "Jev's confidence in that routing.",
      -            "type": "number"
      -          },
      -          "kind": {
      -            "description": "The question type Jev routed this question to.",
      -            "enum": [
      -              "noul",
      -              "score",
      -              "choice"
      -            ],
      -            "type": "string"
      -          },
      -          "rubric": {
      -            "additionalProperties": false,
      -            "description": "Present when a built-in rubric was picked for a scale question without options.",
      -            "properties": {
      -              "confidence": {
      -                "type": "number"
      -              },
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "confidence"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "confidence"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "answer",
      -      "probabilities",
      -      "confidence",
      -      "routing"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "kind": {
      -        "const": "error",
      -        "type": "string"
      -      },
      -      "message": {
      -        "description": "Why this question could not be answered, and what to change.",
      -        "type": "string"
      -      },
      -      "routing": {
      -        "additionalProperties": false,
      -        "description": "Present when the question was routed before the error was detected.",
      -        "properties": {
      -          "confidence": {
      -            "description": "Jev's confidence in that routing.",
      -            "type": "number"
      -          },
      -          "kind": {
      -            "description": "The question type Jev routed this question to.",
      -            "enum": [
      -              "noul",
      -              "score",
      -              "choice"
      -            ],
      -            "type": "string"
      -          },
      -          "rubric": {
      -            "additionalProperties": false,
      -            "description": "Present when a built-in rubric was picked for a scale question without options.",
      -            "properties": {
      -              "confidence": {
      -                "type": "number"
      -              },
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name",
      -              "confidence"
      -            ],
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "kind",
      -          "confidence"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "kind",
      -      "message"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "answer": {
      +        "description": "Probability that the answer is yes, from 0 to 1.",
      +        "type": "number"
      +      },
      +      "kind": {
      +        "const": "noul",
      +        "type": "string"
      +      },
      +      "probabilities": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "no": {
      +            "type": "number"
      +          },
      +          "yes": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "yes",
      +          "no"
      +        ],
      +        "type": "object"
      +      },
      +      "routing": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "confidence": {
      +            "description": "Jev's confidence in that routing.",
      +            "type": "number"
      +          },
      +          "kind": {
      +            "description": "The question type Jev routed this question to.",
      +            "enum": [
      +              "noul",
      +              "score",
      +              "choice"
      +            ],
      +            "type": "string"
      +          },
      +          "rubric": {
      +            "additionalProperties": false,
      +            "description": "Present when a built-in rubric was picked for a scale question without options.",
      +            "properties": {
      +              "confidence": {
      +                "type": "number"
      +              },
      +              "name": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "confidence"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "confidence"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "answer",
      +      "probabilities"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "answer": {
      +        "description": "Expected level on the rubric. May fall between integer levels.",
      +        "type": "number"
      +      },
      +      "confidence": {
      +        "type": "number"
      +      },
      +      "kind": {
      +        "const": "score",
      +        "type": "string"
      +      },
      +      "legend": {
      +        "additionalProperties": {
      +          "type": "string"
      +        },
      +        "description": "Level index to level description.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "note": {
      +        "description": "Advice when a built-in rubric was used instead of caller options.",
      +        "type": "string"
      +      },
      +      "probabilities": {
      +        "additionalProperties": {
      +          "type": "number"
      +        },
      +        "description": "Probability per level index.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "routing": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "confidence": {
      +            "description": "Jev's confidence in that routing.",
      +            "type": "number"
      +          },
      +          "kind": {
      +            "description": "The question type Jev routed this question to.",
      +            "enum": [
      +              "noul",
      +              "score",
      +              "choice"
      +            ],
      +            "type": "string"
      +          },
      +          "rubric": {
      +            "additionalProperties": false,
      +            "description": "Present when a built-in rubric was picked for a scale question without options.",
      +            "properties": {
      +              "confidence": {
      +                "type": "number"
      +              },
      +              "name": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "confidence"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "confidence"
      +        ],
      +        "type": "object"
      +      },
      +      "rubric": {
      +        "description": "Name of the built-in rubric, when one was used.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "answer",
      +      "legend",
      +      "probabilities",
      +      "confidence"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "answer": {
      +        "description": "The selected option.",
      +        "type": "string"
      +      },
      +      "confidence": {
      +        "type": "number"
      +      },
      +      "kind": {
      +        "const": "choice",
      +        "type": "string"
      +      },
      +      "probabilities": {
      +        "additionalProperties": {
      +          "type": "number"
      +        },
      +        "description": "Probability per option.",
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "routing": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "confidence": {
      +            "description": "Jev's confidence in that routing.",
      +            "type": "number"
      +          },
      +          "kind": {
      +            "description": "The question type Jev routed this question to.",
      +            "enum": [
      +              "noul",
      +              "score",
      +              "choice"
      +            ],
      +            "type": "string"
      +          },
      +          "rubric": {
      +            "additionalProperties": false,
      +            "description": "Present when a built-in rubric was picked for a scale question without options.",
      +            "properties": {
      +              "confidence": {
      +                "type": "number"
      +              },
      +              "name": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "confidence"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "confidence"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "answer",
      +      "probabilities",
      +      "confidence"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "error",
      +        "type": "string"
      +      },
      +      "message": {
      +        "description": "Why this question could not be answered, and what to change.",
      +        "type": "string"
      +      },
      +      "routing": {
      +        "additionalProperties": false,
      +        "description": "Present when routing is configured and the question was routed before the error was detected.",
      +        "properties": {
      +          "confidence": {
      +            "description": "Jev's confidence in that routing.",
      +            "type": "number"
      +          },
      +          "kind": {
      +            "description": "The question type Jev routed this question to.",
      +            "enum": [
      +              "noul",
      +              "score",
      +              "choice"
      +            ],
      +            "type": "string"
      +          },
      +          "rubric": {
      +            "additionalProperties": false,
      +            "description": "Present when a built-in rubric was picked for a scale question without options.",
      +            "properties": {
      +              "confidence": {
      +                "type": "number"
      +              },
      +              "name": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "confidence"
      +            ],
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "confidence"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "message"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / model / description
      Previous value: -"The Jev model that answered."New value: +"The Jev model that answered. Present when configured."
    • changedOutput schema / properties / usage / description
      Previous value: -"Token usage summed over every Jev call made."New value: +"Token usage summed over every Jev call made. Present when configured."
    • changedOutput schema / required
      Previous value: -[
      -  "model",
      -  "usage",
      -  "answers"
      -]New value: +[
      +  "answers"
      +]
  2. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

The description goes far beyond the readOnlyHint/openWorldHint annotations by disclosing that every answer carries probabilities and confidence, and that Jev's low confidence means the material does not settle the question. It also explains routing behavior (showing how the question was interpreted and how sure Jev was about that interpretation). No contradiction with annotations.

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

Conciseness4/5

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

The description is longer than necessary but front-loaded: the core purpose and use case appear in the first sentence. The rubric list is structured and easy to scan. The 'Requires a Typesafe API key' note is essential context and placed at the end. A bit verbose in the middle, but every section earns its place.

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?

The description covers the full usage story: when to use it, how to phrase questions, how options change behavior, what the response will contain, what the confidence metric means, and the environment variable requirement. With an output schema and full schema coverage, nothing an agent needs to call this correctly is missing.

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

Parameters5/5

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

The schema already documents both parameters with descriptions, so baseline is high. The description adds meaning by explaining how 'state' relates to 'questions' (questions are about the same state, answered in one round trip), how 'options' are used differently for choices vs scales vs yes/no, and providing the built-in rubrics. This goes well beyond what the schema gives.

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 states a specific verb ('ask'), resource ('Jev, a fast non-generative judgment model'), and purpose ('second opinion, classification, rating, yes/no check'). It clearly differentiates from sub-agents and from reasoning it out yourself. The opening sentence is explicit about what the tool does and when it is not the right tool.

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

Usage Guidelines5/5

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

The description explicitly says when to use it ('quick second opinion, classification, rating, yes/no check') and when not to ('instead of reasoning it out yourself or spawning a sub-agent'). It also provides built-in rubric names and the note to read confidence and decide another way when confidence is low. This is the most explicit usage guidance possible.

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

Deploy Server

Other Tools