A research agent (Gemini on Vertex AI plus Google Search and a crawler) checked each app's auth, credential gating, API surface and MCP availability, citing the source for every claim. A second model then fact-checked every record, a crawler checked every cited URL, and a different model family (Claude) re-researched a random 20-app sample blind to measure accuracy. Patterns first, table below.
What the 100 rows say when clustered. Every number is computed from apps.json.
The same 100 apps, split into what to do next.
Click a row for the notes, evidence links with quotes, and what the verifier changed. ✎ = a field changed by the verifier or corrected by the cross-check.
| # | App | Category | Primary auth | All auth | Access | API | MCP | Verdict | Blocker | Sources |
|---|
A Python pipeline (run.py) runs each stage over all 100 apps in parallel and caches per-app JSON, so any stage can be re-run on its own. Models: Gemini 3 Flash does the research; Gemini 2.5 Pro, a different model, acts as the adversarial verifier. Both run on Vertex AI with Google Search grounding.
Searches for the vendor's auth, pricing, API-reference and MCP pages.
An HTTP check on every candidate. Invented paths (404) are dropped before the agent reads anything.
The crawler fetches the live pages; the agent writes notes where every claim has a URL and a verbatim quote.
Notes become a strict JSON schema with fixed enums, so the rows can be clustered.
The crawler re-fetches every cited URL (alive? official? is the quote really on the page?) and lints for contradictions. Then Pro re-derives every field, using those flags.
A random sample of 20 apps (2 per category) is re-researched blind by a different model family (Claude) from the live docs. Every disagreement with Gemini is re-checked against the vendor page and decided with a cited quote.
Three independent loops, and each catches a different kind of error. Hits and misses are shown as they are.
Source repo: github.com/cipher-v/composio_assignment. Needs Python 3.12, a GCP project with Vertex AI enabled, and gcloud auth application-default login.
uv venv && uv pip install -r requirements.txt export COMPOSIO_RESEARCH_GCP_PROJECT=your-project python run.py research --ids 4,31 # pass 1 on two apps (Attio, Google Ads) python run.py all # full pipeline for all 100: research, crawl-check, verify, re-check, merge, analyze, page python run.py review # build the human spot-check sheet, then export human_labels.json python run.py merge && python run.py score && python run.py analyze && python run.py page
For agents: data/apps.json (per-app records with evidence), data/patterns.json, data/accuracy.json, llms.txt.