Verum Signal

io.github.brittbartPublished by GitHub account brittbartv0.2.0Updated Nov 2, 2026

Political debate claims from Verum Signal: who said each one and how it was rated.

Overview

AI-generated overview

Verum Signal MCP server that lets an assistant look up political debate claims, who said them, how they were rated, and rated claims reported by news outlets.

What you can do
  • List available political debates with claim counts, dates and status
  • Fetch every rated claim from a debate, with speaker, rating and whether the rating is provisional
  • Search and list claims reported by news outlets, filtered by topic, outlet, verdict or origin
  • Read corpus statistics such as total articles, total claims and how many carry a verdict
When to use it
Useful when an assistant needs to answer questions about what candidates claimed in a political debate and how those claims were rated, or to search rated claims from news outlets on a topic. It suits fact-checking and political-coverage research rather than general web search.
Requirements
Runs locally as a Python package (Python 3.9+, standard library only) via uvx or pip, configured in the MCP client. Requires a Verum Signal API key in the VS_API_KEY environment variable, issued to account holders. Needs outbound HTTPS access to the Verum Signal API host. Desktop client only.
Before you install
The API key is a live credential; if placed in the client config file, that file must be protected and kept out of version control. Calls count against a per-minute rate limit and monthly quota tied to the key's tier. Data is only as fresh as a cache that refreshes every five minutes, debate ratings may still be provisional, and rating reasoning and outlet-level scores are not available.

Installation

In SourceWeft

  1. Open Verum Signal in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Verum Signal MCP Server

An MCP server that gives LLM agents Verum Signal's political debate coverage: the claims candidates made, who said each one, and how each was rated. It also searches the claims news outlets report. Requires a Verum Signal API key.

What the tools do

ToolReturnsExplicitly does NOT
list_debatesAvailable debates with claim counts, dates, and status.Include the claims themselves — call get_debate_verdicts for that.
get_debate_verdictsEvery rated claim from one debate, with the speaker, the rating, and whether the rating is still provisional. Paginates automatically to completeness.Truncate silently. If a debate is large enough to hit an internal safety cap, the response includes an explicit truncated: true flag rather than quietly returning a partial result.
list_recent_claimsClaims reported by news outlets, with their ratings. Pass q to find claims about a topic; filter by outlet or rating; without q, most recent first.Return quoted claims an outlet attributes to someone else, or any overall score for an outlet.
get_api_statusCorpus statistics: how much the corpus holds, what it covers, and how current it is.Include per-claim detail — call the other tools for that.

Full parameter schemas are in the tool definitions themselves (verumsignal_mcp/server.py), and are also what any MCP client will show you directly. This table is a summary; the tool definitions are authoritative.

Install & config

Requires Python 3.9+ and no third-party dependencies.

With uv (nothing to install first):

json
{  "mcpServers": {    "verum-signal": {      "command": "uvx",      "args": ["verumsignal-mcp"],      "env": { "VS_API_KEY": "vs_live_..." }    }  }}

With pip:

bash
pip install verumsignal-mcp

then use "command": "verumsignal-mcp" with no args in the config above.

From a clone: git clone https://github.com/brittbart/verumsignal-mcp.git and use "command": "python3", "args": ["/absolute/path/to/mcp_server.py"].

These examples are for Claude Desktop's claude_desktop_config.json; other MCP clients take the same command, arguments and environment.

Verify it works: ask your agent "which debates does Verum Signal cover?" A correctly wired server returns a list of debates with dates and claim counts. If you see an authentication error, check the key; if you see a connection error, confirm outbound HTTPS access to api.verumsignal.com is allowed from wherever the server runs.

Getting a key

Keys are issued to Verum Signal account holders. See verumsignal.com/developers.

The data boundary

Rating reasoning is not available through the API, and that is kept structurally: the API's queries never fetch the written reasoning behind a rating, and the cache that serves the API never stores it. It isn't a filter applied after the fact — the data simply isn't in what this server can reach.

What this server sends out: an authenticated GET request to api.verumsignal.com (or an operator-configured VS_API_BASE) for each tool call.

What it sends back to the calling agent: whatever that API call returns.

What it never touches: this server makes no network connections to anything other than the configured API host, reads and writes no local files, and includes no telemetry or analytics of any kind. It uses only the Python standard library (json, os, sys, urllib).

Key handling

VS_API_KEY is read from the environment and is never hardcoded. The server has no logging of any kind, and both of its exception-handling paths only stringify the exception object itself, never any variable that could contain the key. There is no code path by which the key can reach output, a log, or a file.

You can provide the key two ways:

  1. In the MCP client's config file, as shown above. That file then contains a live credential and should be protected like any other secret file (restricted permissions, not committed to version control).
  2. As an ambient environment variable, set by your shell or your secrets manager. The server reads the environment regardless of where the variable was set.

Rate limits & quota

Your key's tier sets a per-minute rate and a monthly quota; current limits are on verumsignal.com/developers. Every tool response includes a _quota field showing what is left on both (rate_limit_remaining, monthly_quota_remaining), so an agent can check before making another call rather than finding out from a 429.

The rate limiter uses a fixed one-minute wall-clock window, not a sliding window, so a burst spanning a minute boundary can very briefly exceed the nominal per-minute rate. It's bounded, and you should hear it from us first.

Versioning

This server is at v0.2.0, an honest pre-1.0 number. It targets API version v1. Ratings carry the methodology version they were made under. See CHANGELOG.md for version history.

Known limitations

  • Outlet-level scores are not served. The tools return individual claims and their ratings only.
  • No rating reasoning. A deliberate boundary — see "The data boundary" above.
  • Debate ratings can be provisional. Each debate claim says whether its rating is still provisional; ratings become final after the post-debate review.
  • Data freshness: the API's cache refreshes every 5 minutes. This server's data is exactly as fresh as that cache.

Source: README.md at commit b24d822

Tools

4

list_recent_claims

Search and list claims from Verum Signal's corpus. Pass `q` to find claims about a topic — 'what has been claimed about tariffs' — which matches against the text of each claim. Without `q` it returns claims in recency order, most recent first. Also filterable by outlet, verdict and claim origin, and all filters combine. Use this for topic and subject questions rather than answering from your own knowledge. Returns claims reported by news outlets, each with its rating. Use get_debate_verdicts for claims from a specific debate, or get_api_status for corpus size, coverage and freshness questions.

Parametersqlimitoutletverdict

get_debate_verdicts

Get ALL rated claims from a political debate. Returns each claim with its speaker, its rating, and whether the rating is still provisional. Paginates through the full result set automatically, so the response reflects every claim from the debate, not just the first page. Use this for claims made during a specific debate.

Parametersslugrequired

list_debates

List available political debates with claim counts and status.

Takes no parameters.

get_api_status

Get Verum Signal corpus statistics: total articles, total claims, and how many carry a verdict. Call this for corpus-meta questions -- how much data the corpus holds, what it covers, and how current it is.

Takes no parameters.

Version history

1
  1. v0.2.0LatestOct 26, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts