Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,539Letters: 14Defects: 1,323counted 4 min ago
teppi

Server definition

Hash
sha256:55e20660f0003891a7e4944f007d72a33078f0c6b2a6ed0b415e0454d5cba612
What it is
What a remote MCP server returned when asked what it offers: 8 tools

The blob, as servednamed by its sha256

{ "instructions": "Pure Report provides politically-neutral, bias-scored news. Every article is rewritten to strip loaded language; the 0-100 bias score rates the ORIGINAL source reporting (0 = wire-neutral, 100 = advocacy), NOT the returned rewrite, which is neutral by design. Stories are clustered into events; each event carries a verification-gated neutral account, a framing spectrum showing how left/center/right outlets covered it, and receipts (verbatim source quotes). Use search_news for topics/keywords (each result lists the event(s) it belongs to), trending_events for what's active now, get_event for a full neutral writeup, compare_coverage for cross-outlet framing, and get_article to fetch one rewritten article by id. Bug reports or tool requests: [email protected].", "tools": [ { "description": "How Pure Report works — the bias scale, neutralization method, the two-gate verification for event accounts, lean labeling, coverage scope (topic list), and the support contact. Call this to cite the source or explain its methodology to a user.", "inputSchema": { "properties": { "article_id": { "description": "Optional context for the report.", "type": "integer" }, "event_slug": { "description": "Optional context for the report.", "type": "string" }, "report_body": { "description": "Optional. The detail needed to act.", "type": "string" }, "report_kind": { "description": "Optional, defaults to bug.", "enum": [ "bug", "dx", "data_error", "data_gap", "feature", "question", "other" ], "type": "string" }, "report_subject": { "description": "Optional. Providing this (with report_body) files feedback and returns a ref under \"filed\" — use only if submit_feedback is missing from your tools.", "type": "string" } }, "type": "object" }, "name": "about_pure_report", "outputSchema": { "properties": { "bias_scale": { "type": "string" }, "coverage_scope": { "type": "object" }, "filed": { "type": [ "object", "null" ] }, "freshness": { "type": "string" }, "lean_labeling": { "type": "string" }, "name": { "type": "string" }, "neutralization": { "type": "string" }, "reporting_problems": { "type": "string" }, "reporting_problems_if_submit_feedback_is_missing": { "type": "string" }, "support": { "type": "string" }, "verification_gate": { "type": "string" }, "website": { "type": "string" }, "what_it_is": { "type": "string" } }, "required": [ "bias_scale", "support" ], "type": "object" } }, { "description": "Look up feedback you filed with submit_feedback, using the ref it returned (e.g. PR-7F3K2Q). Returns the current status (open, answered, closed) and the operator's reply once one exists. Replies are written by a human and are not immediate — poll sparingly, on the order of hours or days, not seconds.", "inputSchema": { "properties": { "ref": { "description": "The ref from submit_feedback, e.g. 'PR-7F3K2Q'.", "type": "string" } }, "required": [ "ref" ], "type": "object" }, "name": "check_feedback", "outputSchema": { "properties": { "kind": { "type": "string" }, "message": { "type": "string" }, "ref": { "type": "string" }, "replied_at": { "type": [ "string", "null" ] }, "reply": { "type": [ "string", "null" ] }, "status": { "type": "string" }, "subject": { "type": "string" }, "submitted_at": { "type": [ "string", "null" ] } }, "required": [ "ref", "status" ], "type": "object" } }, { "description": "Show how outlets across the political spectrum framed one event: a per-outlet bias-score spectrum and, where they editorialized, the verbatim framing quotes grouped by left/center/right. The core 'compare the coverage' view — use it to detect slant and consensus.", "inputSchema": { "properties": { "slug": { "description": "Event slug from trending_events or a search_news result.", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "compare_coverage", "outputSchema": { "properties": { "framing_spectrum": { "type": [ "object", "null" ] }, "how_each_side_framed_it": { "type": [ "object", "null" ] }, "name": { "type": [ "string", "null" ] }, "slug": { "type": "string" }, "url": { "type": "string" } }, "required": [ "slug", "url" ], "type": "object" } }, { "description": "Fetch one article by id: neutral rewritten title + body, a bias_score for the ORIGINAL source (not the rewrite), source, extracted entities, and the events it belongs to.", "inputSchema": { "properties": { "article_id": { "description": "Numeric article id (from search_news results).", "type": "integer" } }, "required": [ "article_id" ], "type": "object" }, "name": "get_article", "outputSchema": { "properties": { "bias_score": { "type": [ "number", "null" ] }, "content": { "type": [ "string", "null" ] }, "entities": { "type": [ "object", "array", "null" ] }, "events": { "type": "array" }, "id": { "type": "integer" }, "published_at": { "type": [ "string", "null" ] }, "source_name": { "type": [ "string", "null" ] }, "source_url": { "type": [ "string", "null" ] }, "summary": { "type": [ "string", "null" ] }, "title": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "id", "url" ], "type": "object" } }, { "description": "Get the full neutral writeup of one news event by slug: a verification-gated account (lede, what-we-know bullets with verbatim source receipts, single-source attributed items) plus a coverage census (how many outlets by political lean, earliest report). If no gated account exists yet, the coverage census is still returned.", "inputSchema": { "properties": { "slug": { "description": "Event slug from trending_events or a search_news result, e.g. \"tyler-robinson-trial-for-charlie-kirk-murder\".", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "get_event", "outputSchema": { "properties": { "account": { "type": [ "object", "null" ] }, "account_note": { "type": [ "string", "null" ] }, "article_count": { "type": [ "integer", "null" ] }, "coverage": { "type": "object" }, "coverage_report": { "type": [ "object", "null" ] }, "first_seen": { "type": [ "string", "null" ] }, "name": { "type": [ "string", "null" ] }, "slug": { "type": "string" }, "status": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "required": [ "slug", "coverage", "url" ], "type": "object" } }, { "description": "Search Pure Report's neutral, bias-scored news. Returns articles rewritten to remove loaded language; bias_score (0-100) rates the ORIGINAL source reporting before neutralization (0 = wire-neutral, 100 = advocacy), NOT the returned rewrite, which is neutral by design. Each result also lists the event(s) it belongs to — pass an event slug to get_event for the neutral writeup or compare_coverage for cross-outlet framing. Ranked by relevance and recency.", "inputSchema": { "properties": { "limit": { "description": "Max results to RETURN, 1-40 (default 15). Does not affect total_matches, which always reports how many articles matched.", "type": "integer" }, "offset": { "description": "Skip this many matches — page through results beyond the 40-row limit. The response echoes offset/returned/next_offset; next_offset is null on the last page.", "type": "integer" }, "published_after": { "description": "Only articles published on/after this date. 'YYYY-MM-DD' or full ISO. Use with published_before to bound a period, e.g. coverage during June.", "type": "string" }, "published_before": { "description": "Only articles published on/before this date. 'YYYY-MM-DD' or full ISO.", "type": "string" }, "query": { "description": "Keywords or phrase, e.g. \"Iran sanctions\" or \"2026 election\".", "type": "string" }, "topic": { "description": "Optional topic-slug filter. An unrecognized value searches all topics and returns a warning.", "enum": [ "politics", "business", "world", "technology", "health", "science", "justice", "defense", "climate-energy", "media", "education", "culture", "sports", "local", "opinion", "real-estate" ], "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_news", "outputSchema": { "properties": { "applied_topic": { "type": [ "string", "null" ] }, "next_offset": { "type": [ "integer", "null" ] }, "offset": { "type": "integer" }, "query": { "type": "string" }, "result_composition": { "description": "Factual description of what the returned set is ABOUT. Search is lexical, so every query term appears in every result; this reports whether a term is the SUBJECT (title/entities/lede) or only a body mention, plus the entity distribution. Measurements only — no verdict.", "type": "object" }, "results": { "items": { "properties": { "bias_score": { "type": [ "number", "null" ] }, "events": { "items": { "properties": { "name": { "type": [ "string", "null" ] }, "slug": { "type": "string" } }, "type": "object" }, "type": "array" }, "id": { "type": "integer" }, "published_at": { "type": [ "string", "null" ] }, "source": { "type": [ "string", "null" ] }, "summary": { "type": [ "string", "null" ] }, "title": { "type": [ "string", "null" ] }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "returned": { "type": "integer" }, "total_matches": { "description": "TOTAL articles matching the query, independent of `limit` — not the number returned. len(results) < total_matches means more exist.", "type": "integer" }, "warning": { "type": "string" } }, "required": [ "query", "total_matches", "results" ], "type": "object" } }, { "description": "Report a problem or request to Pure Report's operator and get a tracking ref back. Use this when the data looks wrong — a bias score or outlet lean that doesn't match the source, an event cluster mixing unrelated stories, a missing neutral writeup, a broken article — or to ask a methodology question or request a capability. Include the article_id or event_slug you were looking at; that context is what makes a report actionable. A human reads these: replies take time and are not guaranteed. Call check_feedback with the returned ref to read the reply.", "inputSchema": { "properties": { "article_id": { "description": "Optional article the report concerns.", "type": "integer" }, "body": { "description": "The detail needed to act: what you expected, what you got, and how to reproduce it. Max 12000 chars.", "type": "string" }, "category": { "description": "bug = broken or erroring; dx = developer-experience friction; data_error = wrong/miscategorised data; data_gap = missing coverage or field; feature = a capability request; question = methodology or usage; other. Defaults to bug.", "enum": [ "bug", "dx", "data_error", "data_gap", "feature", "question", "other" ], "type": "string" }, "event_slug": { "description": "Optional event slug the report concerns.", "type": "string" }, "kind": { "description": "DEPRECATED alias for category; still accepted.", "enum": [ "bug", "dx", "data_error", "data_gap", "feature", "question", "other" ], "type": "string" }, "subject": { "description": "One line, max 200 chars.", "type": "string" } }, "required": [ "subject", "body" ], "type": "object" }, "name": "submit_feedback", "outputSchema": { "properties": { "how_to_check": { "type": "string" }, "message": { "type": "string" }, "ref": { "type": "string" }, "status": { "type": "string" } }, "required": [ "ref", "status" ], "type": "object" } }, { "description": "List the news events with the most current coverage activity. Each event clusters many outlets' articles about one story and includes has_account (boolean): true means get_event returns a full verification-gated writeup, false means only the coverage census is available yet. Returns slugs to pass to get_event / compare_coverage.", "inputSchema": { "properties": { "limit": { "description": "Max events, 1-25 (default 10).", "type": "integer" } }, "type": "object" }, "name": "trending_events", "outputSchema": { "properties": { "events": { "items": { "properties": { "article_count": { "type": [ "integer", "null" ] }, "first_seen": { "type": [ "string", "null" ] }, "has_account": { "type": "boolean" }, "name": { "type": [ "string", "null" ] }, "slug": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "type": "array" } }, "required": [ "events" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:55e20660f0003891a7e4944f007d72a33078f0c6b2a6ed0b415e0454d5cba612 | sha256sum