Verification runs in three layers, inspired by Nomad (arXiv:2603.29353). Intents/Verify.md holds the full protocol.
| Layer |
What |
Where |
| Self-Verification |
Each researcher agent drops URLs it cannot reach and tags confidence before returning; this is a pre-filter, never the verification of record, and every delivered URL still passes Tools/VerifyUrls.ts (UrlVerificationProtocol.md) |
Extensive, Deep (Quick and Standard run no agents) |
| Cross-Check |
Synthesis step detects conflicts and cross-references findings |
Standard, Extensive, Deep |
| Independent Verification |
Dedicated verifier agents with no access to explorer reasoning |
Extensive, Deep only |
DeepVerifiedResearch runs through the Workflow tool: Workflow({scriptPath: 'skills/Research/Intents/DeepVerifiedResearch.mjs', args: {question: '...'}}), with args passed as an object, never a JSON string. It is slower than Extensive (~150-190s vs ~60-90s); reach for it only when claims must be bulletproof. Its votes judge each claim on the explorer's quote and never fetch the page, so its result returns urlVerification: pending with urlCheckPairs; run those through Tools/VerifyUrls.ts before delivering any of its URLs.
Intents/research.mjs is EXPERIMENTAL and not a route until one smoke run lands (command in References/WorkflowScripts.md); StandardResearch.md and ExtensiveResearch.md stay the default path.