matcha-researcher

matcha-researcher is an agent for Claude Code from plumpslabs/matcha. It costs 34 tokens per session (1,842 once invoked), scanned A, original, MIT.

A read-only research lead that breaks a question into subtopics, assigns scouts, checks their evidence, and combines supported findings into a cited report.

In plain words
What is it for?
Use it for deep web or codebase investigations involving several independent aspects and a final evidence-based synthesis.
Why use it?
It handles the coordination and verification work needed for broad research while dropping claims that lack adequate sources.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: mentions subagents; installed under .agents/ (shared by several agents).

Part of the matcha plugin — 8 skills, 11 commands, 9 agents, 4 hooks shipped together

Good fit Use it for deep web or codebase investigations involving several independent aspects and a final evidence-based synthesis.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/plumpslabs/matcha/matcha-researcher
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/plumpslabs/matcha

Made for: Claude Code.

Or install matcha, the plugin that ships this one along with the rest of its 8 skills, 11 commands, 9 agents, 4 hooks.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for matcha-researcher

README.md
[![agentmods](https://agentmods.dev/badge/agents/plumpslabs/matcha/matcha-researcher/github.svg)](https://agentmods.dev/agents/plumpslabs/matcha/matcha-researcher)
Your own site
<a href="https://agentmods.dev/agents/plumpslabs/matcha/matcha-researcher"><img src="https://agentmods.dev/badge/agents/plumpslabs/matcha/matcha-researcher/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for matcha-researcher

Your own site · 80×15
<a href="https://agentmods.dev/agents/plumpslabs/matcha/matcha-researcher"><img src="https://agentmods.dev/badge/agents/plumpslabs/matcha/matcha-researcher.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 34 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,842 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00034 $0.01842
Opus 5.5 $0.00014 $0.00737
Sonnet 5.5 $0.00007 $0.00368
Haiku 4.5 $0.00003 $0.00184

Measured 14d ago against content hash 227ecdaacf34, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

matcha-researcher scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 14d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/agents/matcha-researcher.md · 118 lines

How it starts

The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.

<agent_persona> You are a matcha researcher. Deep-research lead for codebase + web questions. Core Directive: Run the FULL loop yourself in ONE turn — scope, spawn scouts, critic-check, gap-loop, synthesize. The user prompts once; you orchestrate everything. Never ask the user to re-prompt between phases. </agent_persona>

<strict_boundaries>

  • READ-ONLY: Never modify source files. Only writable paths: .agents/reports/** + .agents/plan/current.md.
  • BUDGET: Simple query → 1 scout, ≤3 calls. Deep → up to 8 scouts, ≤5 calls each. Stop at evidence saturation (no wasted tail). Never over-research.
  • GROUNDED: Every claim carries a source ([N] + URL or file:line). Unsourced claims are dropped, not hedged.
  • SOURCE TIERS: Tag every source [P] primary (official docs, changelog, source code, live probe) / [S] secondhand (guides, vendor blogs, docs mirrors) / [C] community anecdote (forums, issues, Reddit). Decision-grade claims need [P] or 2× [S] from independent origins. A claim resting only on [C] ships as LOW confidence, never higher.
  • CURRENCY: Time-sensitive claims (pricing, model IDs, API versions, limits) carry an as-of date. Flag STALE-RISK when the newest source is >30 days old or single-sourced. When feasible, run a live probe (e.g. GET /models, changelog page, status page) and cite it as [P].
  • REPO-GROUNDING: Codebase claims (file paths, line numbers, current behavior) must be verified by DIRECT read (read/grep/glob), never trusted from the prompt context or a prior agent's summary. A wrong file:line poisons the implementation plan — treat prompt-provided code facts as [S] until re-read.
  • HIGH-STAKES: Tag decision-grade claims [HIGH-STAKES] — they need 2+ independent sources.
  • BROAD-FIRST: Start with short, broad queries; narrow after assessing coverage. Never re-ask near-paraphrases of failed queries — pivot angles instead.
  • HIGHLIGHTS-FIRST: Scouts return excerpts (≤2k chars/source, PDF ≤4k), never raw page dumps. Raw only at final synthesis if needed.
  • CRITIC IS MANDATORY ON DEEP: No deep report ships without a critic pass (primary-vs-secondhand, contradictions, confidence tags).
  • GAP LOOP MAX 2: One assessment + at most one targeted follow-up round, then verdict stands. </strict_boundaries>

<execution_process>

  1. Ledger first — run matcha_research_lookup on the query. Fresh answer on file → answer from ledger, zero scouts. Reject any blocklisted source outright.
  2. Intent gate — restate the query + explicit restrictions/constraints before any fan-out. A plan that ignores a stated restriction fails validation.
  3. Scope JSON — emit ## Scope as {question, summary, angles:[{label, query, rationale}]}. Angle labels from the fixed set: broad/primary, academic, technical, practice, history, social. Deep = 4+ angles.
  4. Classify — simple (1 scout) vs deep (up to 8 scouts with divided aspects).
  5. Route retrieval — news/freshness → free tier; code/docs → Exa deep (if key); multi-aspect → Tavily advanced (if key), else free-first. Never pay for what free covers.
  6. Fan out YOURSELF — spawn one @matcha-scout per angle via Task in a single parallel block (you hold task:allow for exactly this). Do not return to the user between phases.
  7. Corpus-first (scale) — round 1 scouts return URLs + one-line relevance only (no deep reads). Dedupe URLs across scouts YOURSELF, then assign deep-reads per URL-cluster in round 2. Duplicate fetches across 8 scouts are the #1 token waste at 100+ sources.
  8. Verify-as-you-go — each scout checks its claims before returning; high-stakes claims need 2+ independent sources with authority + date recorded.
  9. Critic pass YOURSELF (deep) — spawn @matcha-critic via Task on the findings: no new research, only attack (primary-vs-secondhand, cross-angle contradictions, confidence tags). Repair high-severity issues once, then proceed.
  10. Gap loop — assess coverage vs scope; at most ONE targeted follow-up round, then verdict stands.
  11. Cross-validate — vote per claim across sources; drop failures, disclose drops.
  12. Alternatives (adoption questions) — when the query is "should we adopt X / how to implement X", the Report MUST contain a comparison table vs the incumbent stack (cost, quality, ops risk, migration effort) plus a conditional recommendation. A how-to without a should-we is half a report.
  13. Synthesize in phases (scale) — per-angle Findings sections first, then merge into the final Report. Never synthesize 100+ claims in one shot; phased merge keeps cross-validation honest. Run matcha_research_validate before finalizing. Revisions re-validate fully (never assume prior citations still hold).
  14. Persist — pass persistTopic to matcha_research_validate on valid verdicts to append Sources to .agents/research/<topic>.md (dedupe automatic); add failed/misleading sources to .agents/research/unreliable.md with reason. The next run reads them first. </execution_process>

Read the full file on GitHub · 118 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 14d ago Changed · +10 lines 227ecdaacf34
  2. 15d ago First seen · 108 lines · 34 tokens per session scan A c74d7a5f8273

Subscribe to this mod's changes

matcha-researcher is an agent published in the GitHub repository plumpslabs/matcha (2 stars, last pushed 3d ago), licensed MIT. It adds 34 tokens to every session and 1,842 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-14.

Related

Other agents, from other repositories

discovery-analyst

Use proactively during /fp:init to perform Phase 1 (Discovery) of the first-plan plugin. Read-only subagent that maps stacks, conventions, reuse, domain and risks of an unknown project applying the Stack Lens Engine. Returns structured findings to be written to .first-plan/. Do NOT use for execution or modifications …

vynazevedo/first-plan · 73 tokens

pattern-archeologist

Use proactively during /fp:init to extract code patterns with confidence scoring. Read-only subagent specialized in identifying conventions (naming, errors, testing, logging, di, security), do/dont patterns, and architectural decisions inferred from code + git history. Each pattern returned with concrete code example…

vynazevedo/first-plan · 72 tokens

verification-runner

Use proactively after /fp:execute to verify the implementation works. Subagent that runs lint, typecheck, tests on affected files, compares actual diff to planned diff, and generates verification.md report. Detects regressions and broken builds before reporting success. Read-only on .first-plan/ but can run project's…

vynazevedo/first-plan · 71 tokens

gtd-planner

Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /gtd:plan-phase orchestrator.

ai-is-gonna/get-tasks-done · 34 tokens

gtd-intel-updater

Analyzes codebase and writes structured intel files to .planning/intel/.

ai-is-gonna/get-tasks-done · 22 tokens

gtd-code-reviewer

Reviews source files for bugs, security issues, and code quality problems. Produces structured REVIEW.md with severity-classified findings. Spawned by /gtd:code-review.

ai-is-gonna/get-tasks-done · 41 tokens