quorum
Market evidence with receipts: every claim resolves to a real stored record you can fetch back.
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": {
"quorum": {
"url": "https://quorum-api-j15n.onrender.com/mcp"
}
}
}Remote endpoints
https://quorum-api-j15n.onrender.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
⚪research_product(subject, terms)
Start collecting evidence on a product or topic from public sources. RETURNS AT ONCE: the harvest runs in the background, the first records land within a minute, and a full run takes minutes. Then call `search_evidence` or `category_warmth` for the same subject after about 30 seconds and keep calling while the counts grow; stop when they stop. Every receipt returned along the way is already a real record. Calling this twice for one subject joins the same run rather than starting another.
Input Schema
{
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "A product name, a topic, or a product URL."
},
"terms": {
"type": "array",
"items": {
"type": "string"
},
"description": "What to ask about: single concepts like \"sizing\", \"durability\". Optional."
}
},
"required": [
"subject"
]
}🟢search_evidence(query, category, phrase, sources, excludeSources, ...)
Search the retained corpus for what people actually said about a product or topic. Returns how many independent records exist, across how many channels, whether that clears the corroboration threshold, and the loudest few quotes with their receipt ids. Costs nothing and touches no network.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What to look for: \"sizing\", \"battery life\", \"runs small\"."
},
"category": {
"type": "string",
"description": "Optional. Narrow to one product category."
},
"phrase": {
"type": "boolean",
"description": "Optional. Match the words as one ordered phrase, no any word fallback. Build phrases from content words."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional. Only these sources (reddit, appstore, sec-edgar...)."
},
"excludeSources": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional. Drop these sources, e.g. [\"sec-edgar\", \"cpsc\"] to drop the institutional records from a consumer question."
},
"sourceClasses": {
"type": "array",
"items": {
"type": "string",
"enum": [
"consumer_voice",
"practitioner",
"institutional"
]
},
"description": "Optional. Filter by what kind of speaker: consumer_voice (reddit, reviews...), practitioner (github...), institutional (regulators, filings)."
},
"after": {
"type": "string",
"description": "Optional. ISO date (2026-01-31): only records their authors wrote on or after it. Undated records sit inside no window."
},
"before": {
"type": "string",
"description": "Optional. ISO date: only records written on or before it."
},
"minChannels": {
"type": "number",
"description": "Optional. Demand at least this many distinct channels for a finding verdict. Can only demote."
}
},
"required": [
"query"
]
}🟢get_receipt(receiptIds, full)
Resolve receipt ids to the real records behind them. This is how you CHECK a claim: if an id does not resolve, the claim citing it was not real. Takes one id or many. Long records are truncated with notice; pass full: true for complete text.
Input Schema
{
"type": "object",
"properties": {
"receiptIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Receipt ids, as returned by any other tool. Up to 50."
},
"full": {
"type": "boolean",
"description": "Return complete record text with no truncation. Default false."
}
},
"required": [
"receiptIds"
]
}🟢category_warmth(category)
How much is already held for a category, and therefore whether asking about it is instant and free or slow and expensive. Check this BEFORE starting a report. With no category it lists what is held, so orient here instead of guessing slugs.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "The category, for example \"running shoes\". Omit to list every held category."
}
}
}🟢compare_formats(category)
Video versus static advertising for a category, computed from how long real ads actually ran rather than from opinion. Returns a verdict, its confidence, and the ads behind it.
Input Schema
{
"type": "object",
"properties": {
"category": {
"type": "string",
"description": "The product category."
}
},
"required": [
"category"
]
}Community
Evidence