Tru8 Evidence Research

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

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
80%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringin tru8_check

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,227Tokens (tool definitions)
~2.3 KBTypical response size
Moderate attention impact (0.96% of 128k context)

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": {
    "tru8": {
      "command": "python -m tru8_mcp",
      "args": [
        "tru8-mcp"
      ]
    }
  }
}

Runnable packages

pypitru8-mcp1.0.3stdio

Remote endpoints

https://api.trueight.com/mcp/streamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟡tru8_check(claim, max_tier, max_age_hours, compact)

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 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.

Input Schema

{
  "type": "object",
  "properties": {
    "claim": {
      "description": "A factual claim (\"The Earth's average temperature rose 1.1°C since 1880\") or an article URL (https://example.com/article). URLs are auto-detected and the pipeline extracts claims from the page content.",
      "title": "Claim",
      "type": "string"
    },
    "max_tier": {
      "default": "full",
      "description": "Maximum tier to attempt — \"lookup\", \"consensus\", \"quick\" or \"full\" (default). A CEILING, not a floor: cached and consensus hits still return instantly at their own lower price, so the default costs ~£0.15 only for claims never researched before. Set \"quick\" to cap spend at ~£0.07, accepting web-search-only sourcing and heuristic classification (see _meta.limitations).",
      "title": "Max Tier",
      "type": "string"
    },
    "max_age_hours": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Skip cache hits older than this many hours. Stale lookup hits are discarded and the pipeline re-runs at the next tier up to max_tier. 0 means never serve a cached result.",
      "title": "Max Age Hours"
    },
    "compact": {
      "default": false,
      "description": "If true, strip the full evidence arrays and computed analytics from the response, leaving claims and claim maps. Smaller payload for agents that only need orientation.",
      "title": "Compact",
      "type": "boolean"
    }
  },
  "required": [
    "claim"
  ],
  "title": "tru8_checkArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "tru8_checkOutput"
}
🟢tru8_get_result(check_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "check_id": {
      "description": "The check UUID returned by tru8_check. Retrieval is free and limited to your own checks; a check still running returns its status rather than a result, so this is also the poll call.",
      "title": "Check Id",
      "type": "string"
    }
  },
  "required": [
    "check_id"
  ],
  "title": "tru8_get_resultArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "tru8_get_resultOutput"
}
🟢tru8_get_result_raw(check_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "check_id": {
      "description": "The check UUID returned by tru8_check. Same retrieval as tru8_get_result, without the computed analytics block.",
      "title": "Check Id",
      "type": "string"
    }
  },
  "required": [
    "check_id"
  ],
  "title": "tru8_get_result_rawArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "tru8_get_result_rawOutput"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools