Hunch
Calibrated judgments for text: yes/no probabilities, picks from your options, or scores.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"hunch": {
"url": "https://hunchsheet.app/mcp"
}
}
}Remote endpoints
https://hunchsheet.app/mcpstreamable-httphttps://hunchsheet.app/mcp/{api_key}streamable-httpWhat it can do
Tool inventory
Tools (5)
🟡hunch_ask(texts, question)
Judge a batch of short texts against one yes/no question and get back a calibrated probability (0 to 1) per text, not generated prose. Use it to score, tag, filter or triage many leads, support tickets, reviews, survey answers or emails at once, for example "Is this lead a decision maker?" or "Is this email urgent?". Costs 1 credit per answered text (blank texts and texts repeated elsewhere in the same call are free; the same text asked again in a later call is charged again). Limits: the model reads the text only, no math, counting or dates; English works best; put the full definition of what counts as yes inside the question, since the model sees nothing else.
Input Schema
{
"type": "object",
"properties": {
"texts": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 500,
"description": "Short texts to judge (leads, tickets, reviews, survey answers, emails, ...), one answer per text. Blank entries and texts repeated elsewhere in the same call cost nothing. Chunked internally into calls of 40."
},
"question": {
"type": "string",
"minLength": 1,
"description": "A yes/no question, e.g. \"Is this lead a decision maker who can approve a purchase without asking someone else?\". Put the full definition of yes/no in the question text."
}
},
"required": [
"texts",
"question"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"probability": {
"type": [
"number",
"null"
],
"description": "0 to 1: probability the answer to the question is yes."
},
"error": {
"type": [
"string",
"null"
],
"description": "Set when this text was not answered (e.g. \"out_of_credits\"); the value fields are null in that case."
}
},
"required": [
"text",
"probability",
"error"
]
}
},
"charged": {
"type": "integer",
"description": "Credits spent on this call."
},
"credits": {
"type": "integer",
"description": "Credits left on the key after this call."
}
},
"required": [
"results",
"charged",
"credits"
]
}🟢hunch_pick(texts, options, question)
Sort a batch of short texts into one of your own categories and get back the chosen option plus how confident the model is, not generated prose. Use it to route support tickets, classify feedback, or tag leads by type, for example options ["billing: invoices and charges", "refund", "bug", "other"]. Costs 1 credit per answered text (blanks and duplicates in the same call are free). Limits: 2 to 255 options, each "label" or "label: description" to disambiguate a short label; the model reads the text only, no math, counting or dates, English works best.
Input Schema
{
"type": "object",
"properties": {
"texts": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 500,
"description": "Short texts to judge (leads, tickets, reviews, survey answers, emails, ...), one answer per text. Blank entries and texts repeated elsewhere in the same call cost nothing. Chunked internally into calls of 40."
},
"options": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 255,
"description": "The options to choose from, 2 to 255 of them. Each is \"label\" or \"label: description\" when the label alone is ambiguous, e.g. \"billing: invoices and charges\"."
},
"question": {
"type": "string",
"description": "Optional. What is being decided, e.g. \"Which category does this ticket belong to?\". Defaults to \"Which option best describes this text?\"."
}
},
"required": [
"texts",
"options"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"option": {
"type": [
"string",
"null"
],
"description": "The chosen option's label."
},
"confidence": {
"type": [
"number",
"null"
],
"description": "0 to 1: confidence in the chosen option."
},
"error": {
"type": [
"string",
"null"
],
"description": "Set when this text was not answered (e.g. \"out_of_credits\"); the value fields are null in that case."
}
},
"required": [
"text",
"option",
"confidence",
"error"
]
}
},
"charged": {
"type": "integer"
},
"credits": {
"type": "integer"
}
},
"required": [
"results",
"charged",
"credits"
]
}🟢hunch_score(texts, question, levels)
Place a batch of short texts on your own ordered scale (2 to 10 levels, low to high) and get back a probability-weighted position, the most likely level, and confidence, not generated prose. Use it for sentiment ("angry|disappointed|neutral|happy|delighted"), fit scoring ("no fit|weak|good|perfect"), or any low-to-high rating. Costs 1 credit per answered text (blanks and duplicates in the same call are free). Limits: the model reads the text only, no math, counting or dates, English works best, and the question should say what is being scored.
Input Schema
{
"type": "object",
"properties": {
"texts": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 500,
"description": "Short texts to judge (leads, tickets, reviews, survey answers, emails, ...), one answer per text. Blank entries and texts repeated elsewhere in the same call cost nothing. Chunked internally into calls of 40."
},
"question": {
"type": "string",
"minLength": 1,
"description": "What is being scored, e.g. \"How does the reviewer feel about the product overall?\"."
},
"levels": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 2,
"maxItems": 10,
"description": "The scale, low to high, 2 to 10 levels, e.g. [\"angry\", \"disappointed\", \"neutral\", \"happy\", \"delighted\"]. Each may be \"label: description\"."
}
},
"required": [
"texts",
"question",
"levels"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"score": {
"type": [
"number",
"null"
],
"description": "Probability-weighted position, 0 to levels.length - 1."
},
"index": {
"type": [
"integer",
"null"
],
"description": "Index of the single most likely level."
},
"label": {
"type": [
"string",
"null"
],
"description": "The most likely level's label."
},
"confidence": {
"type": [
"number",
"null"
]
},
"error": {
"type": [
"string",
"null"
],
"description": "Set when this text was not answered (e.g. \"out_of_credits\"); the value fields are null in that case."
}
},
"required": [
"text",
"score",
"index",
"label",
"confidence",
"error"
]
}
},
"charged": {
"type": "integer"
},
"credits": {
"type": "integer"
}
},
"required": [
"results",
"charged",
"credits"
]
}🟢hunch_multi(texts, questions)
Ask up to 10 yes/no questions about the same batch of texts in one call, one probability per question per text, not generated prose. Use it when several judgments read the same text at once, for example "Can they buy?", "Are they angry?", "Is it urgent?" on the same support ticket, for a fraction of the tokens of separate calls. Costs 1 credit per answered question per text (blanks and duplicate texts are free). Limits: the model reads the text only, no math, counting or dates, English works best, and each question needs its own definition of yes inside it.
Input Schema
{
"type": "object",
"properties": {
"texts": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 500,
"description": "Short texts to judge (leads, tickets, reviews, survey answers, emails, ...), one answer per text. Blank entries and texts repeated elsewhere in the same call cost nothing. Chunked internally into calls of 40."
},
"questions": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 10,
"description": "Up to 10 yes/no questions, each answered once per text, e.g. [\"Can they buy?\", \"Are they angry?\", \"Is it urgent?\"]."
}
},
"required": [
"texts",
"questions"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"probabilities": {
"type": [
"array",
"null"
],
"items": {
"type": "number"
},
"description": "One probability per question, in the same order as the questions argument."
},
"error": {
"type": [
"string",
"null"
],
"description": "Set when this text was not answered (e.g. \"out_of_credits\"); the value fields are null in that case."
}
},
"required": [
"text",
"probabilities",
"error"
]
}
},
"charged": {
"type": "integer"
},
"credits": {
"type": "integer"
}
},
"required": [
"results",
"charged",
"credits"
]
}🟢hunch_balance
Check how many Hunch credits are left on this key and how many have been used so far. Read-only, costs nothing. Call it before a large batch, or when a judging tool reports texts were skipped for lack of credits.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"credits": {
"type": "integer",
"description": "Credits left on the key."
},
"used": {
"type": "integer",
"description": "Credits used on this key so far, lifetime."
}
},
"required": [
"credits",
"used"
]
}Community
Evidence