Tru8 Evidence Research

io.github.SamYatesSmithPublished by GitHub account SamYatesSmithv1.0.6Updated Nov 3, 2026

Source-traced evidence research for AI agents. We organise the evidence; you decide.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

Tru8 Evidence Research's hosted MCP server (api.trueight.com); API key required; Streamable HTTP; 3 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Endpoint
api.trueight.com
Last checked

Installation

In SourceWeft

  1. Open Tru8 Evidence Research in the dashboard and add it to a workspace.
  2. Connect X-API-Key credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.SamYatesSmith%2Ftru8/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "tru8-evidence-research": {
      "type": "http",
      "url": "https://api.trueight.com/mcp/",
      "headers": {
        "X-API-Key": "<YOUR_API_KEY>"
      }
    }
  }
}

README

Tru8 — AI-Powered Evidence Research Platform

Tru8 organises evidence so you can decide what matters. Submit a claim or URL, and Tru8 retrieves evidence from the open web and specialist APIs, classifies it by tier (primary / reporting / commentary) and type (data / official / news / analysis / opinion / academic), decomposes claims into elements, maps evidence to those elements, and presents the full landscape — structured, not summarised.

Mission: "We organise; you decide."

Quick Start

Prerequisites

  • Docker & Docker Compose
  • Python 3.11+
  • Node.js 20+

1. Start Infrastructure

bash
docker-compose up -d    # PostgreSQL 16, Redis 7, Qdrant

2. Backend

bash
cd backendpython -m venv venvsource venv/bin/activate    # Windows: venv\Scripts\activatepip install -r requirements.txtcp .env.example .env        # Edit with your API keysalembic upgrade headuvicorn app.main:app --reload    # http://localhost:8000

3. Frontend

bash
cd webnpm installnpm run dev    # http://localhost:3000

Project Structure

tru8/├── backend/              # FastAPI backend + evidence pipeline│   ├── app/│   │   ├── api/v1/       # REST endpoints (checks, agent, verify, payments)│   │   ├── core/         # Config, auth, pricing, manifest signing│   │   ├── models/       # SQLModel schemas (Check, Claim, Evidence, ClaimConsensus)│   │   ├── pipeline/     # Two-phase evidence pipeline│   │   ├── services/     # API adapters, search, payments, consensus│   │   └── utils/        # Classifiers, deduplication, query planning│   ├── alembic/          # Database migrations│   ├── tru8_mcp/         # MCP server package for AI agents│   └── tests/            # 990 unit + integration tests├── web/                  # Next.js 14 frontend│   ├── app/              # Pages (dashboard, developers, public reports)│   ├── components/       # Evidence views, claim map, marketing│   └── lib/              # API client, tiers, diagnostics├── shared/               # Shared TypeScript types├── docker-compose.yml    # PostgreSQL, Redis, Qdrant, MinIO (optional)└── .claude/CLAUDE.md     # Full engineering context

Pipeline

Two-phase pipeline with user claim selection gate (article mode):

Phase 1:  Ingest → Extract claims → Classify article → Rank claims          [PAUSE — user selects claims]
Phase 2:  Fact-check lookup → Decompose into elements → Retrieve evidence →          Score relevance → Classify tier/type → Map evidence to elements →          Derive orientation → Complete
Post:     Coverage recovery (Stage 5.1), video recommendations, auto-archiving

Evidence flows through web search plus specialist source adapters:

CategorySources
Web searchSerper.dev, Brave Search, SerpAPI (fallback chain)
Fact-checkGoogle Fact-Check API
GovernmentGOV.UK, Hansard, GovInfo, Companies House, ONS
LegalUK Legislation (legislation.gov.uk)
EconomicFRED, Marketaux, World Bank
AcademicSemantic Scholar, OpenAlex, PubMed
ClimateNOAA, WeatherAPI, Open-Meteo, GBIF
ArchivesWikipedia (+ reference mining), Library of Congress, Internet Archive
HealthWHO
SportsTransfermarkt, Football-Data.org
VideoYouTube Data API

Six Evidence Views

ViewQuestion it answers
CartographerWhat's the shape of this conversation?
LibrarianIs this the full set, clearly labelled?
InterpreterDoes this evidence answer this sub-question?
ProjectionistWhat's been said on camera?
ChronologistWhen did the evidence appear?
SeekerWhat don't we know yet?

API & Agent Access

Tru8 exposes a developer API and MCP server for AI agents.

Agent Commerce Gateway

bash
# Quick check (~15s, heuristic classification)curl -X POST https://api.trueight.com/api/v1/agent/quick \  -H "X-API-Key: $TRU8_API_KEY" \  -d '{"claim": "UK inflation is 3.2%"}'
# Smart endpoint with tier fallback (lookup → consensus → quick → full)curl -X POST https://api.trueight.com/api/v1/agent/check \  -H "X-API-Key: $TRU8_API_KEY" \  -d '{"claim": "UK inflation is 3.2%", "max_tier": "full"}'
TierCostTimeWhat you get
Lookup~£0.02instantCached prior analysis
Consensus~£0.03instantCross-user aggregate landscape (k>=3 checks)
Quick~£0.07~15sWeb search + heuristic classification
Full~£0.15~60-90sweb + specialist APIs, LLM classification, element decomposition

Three payment rails: x402 (USDC/SIWE), Skyfire (JWT), prepaid credits.

MCP Server

json
{  "mcpServers": {    "tru8": {      "command": "python",      "args": ["-m", "tru8_mcp"],      "env": { "TRU8_API_KEY": "tru8_sk_..." }    }  }}

Tools: tru8_check (evidence research with tier fallback), tru8_get_result (with analytics), tru8_get_result_raw.

Manifest Verification

Every completed check receives an HMAC-SHA256 signed manifest. Verify the signed fields haven't changed since signing:

bash
curl https://api.trueight.com/verify/{check_id}

Testing

bash
cd backendpytest tests/ -v                        # Full suite (990 tests)pytest tests/unit/pipeline/ -v          # Pipeline unit testspytest tests/unit/agent/ -v             # Agent/commerce testspytest tests/integration/ -v            # Integration tests

Infrastructure

ServicePortPurpose
PostgreSQL 165433Primary database (SQLModel)
Redis 76379Cache + rate limiting
Qdrant6333Vector similarity search
MinIO (optional)9000Local S3 for file uploads

Auth: Clerk (JWT + JWKS) for dashboard, API keys for developer access. Payments: Stripe (4 subscription tiers) + Agent per-use payments.

API Documentation

Environment Variables

Copy backend/.env.example to backend/.env. Key groups:

GroupRequiredVariables
DatabaseYesDATABASE_URL
RedisYesREDIS_URL
AuthYesCLERK_SECRET_KEY, CLERK_JWT_ISSUER
LLMYesGOOGLE_AI_API_KEY, OPENAI_API_KEY
SearchYes (at least one)SERPER_API_KEY, BRAVE_API_KEY, SERP_API_KEY
PaymentsFor subscriptionsSTRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET
Government APIsOptionalFRED_API_KEY, NOAA_API_KEY, etc.
Manifest signingOptionalMANIFEST_SIGNING_ENABLED, MANIFEST_SIGNING_KEY

Feature flags (all default to sensible values): ENABLE_API_RETRIEVAL, ENABLE_LLM_RELEVANCE_SCORER, ENABLE_QUERY_PLANNING, etc. See backend/.env.example for the full list.

Licence

Private — All rights reserved.

Source: README.md at commit dd557f4

Tools

3

tru8_check

Evidence research

Evidence research for a factual claim or article URL. Submit a claim as text or paste an article URL. URLs are auto-detected and trigger article mode: the pipeline extracts claims from the page and auto-selects up to 5 for evidence research. Tiers (in fallback order): - lookup (~£0.02, instant) — cached prior analysis - consensus (~£0.03, instant) — cross-user aggregate landscape (k≥3 checks) - quick (~£0.07, ~15s) — web search + heuristic classification - full (~£0.15, ~60-90s) — web + specialist APIs, LLM classification, coverage recovery Charges based on tier actually executed, not tier requested. Identical calls within ten minutes return the same check, so a transport retry never runs — or charges — twice. Set max_tier to control maximum spend per call. Output structure: - claims[].claimMap.elements[] — verifiable sub-claims with state (supported/disputed/unresolved) - claims[].claimMap.elements[].evidenceRefs[] — evidence mapped to elements with relationship (supports/challenges/context) and reasoning - claims[].evidence[] — sources classified by tier (primary/reporting/ commentary) and type (data/official/news/analysis/opinion/academic) - claims[].claimMap.orientation — mechanical summary from element states - _meta — execution metadata: executedTier, chargedPence, limitations A run that has not finished after several minutes returns {checkId, status, chargedPence, message} instead of the result: fetch it later with tru8_get_result (free). A run that FAILS raises an error and is not charged. Per-argument guidance lives on the parameters themselves (see the Annotated/Field declarations above), which is where a client can actually read it — a docstring "Args:" block never reaches the tool's inputSchema.

Parametersclaimrequiredcompactmax_tiermax_age_hours

tru8_get_result

Get result (with analytics)

Retrieve a previously submitted check with pre-computed analytics. Returns the full result including a _computed block with tier/type distributions, corroboration groups, diagnostic values, timeline analysis, element state summaries, and per-claim dispositions. Use this over tru8_get_result_raw when you want structured analytics ready for summarisation or comparison without post-processing.

Parameterscheck_idrequired

tru8_get_result_raw

Get result (raw)

Retrieve a previously submitted check without computed analytics. Returns claims, elements, evidence, and claim maps only. No _computed block. Smaller response payload. Use this when you will compute your own aggregations or only need specific fields from the raw data.

Parameterscheck_idrequired

Version history

2
  1. v1.0.6LatestNov 3, 2026
  2. v1.0.4Sep 16, 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 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.