Passive recon · irs.gov public surface · 2026-07-10
This brief looks at irs.gov the way a taxpayer, a preparer, or an AI helping either of them would: public pages, response headers, redirect chains, robots.txt, and standard agent-discovery paths. Nothing was probed, fuzzed, or authenticated. The headline is simple: the baseline is genuinely solid, and the opportunity is structural legibility of evidence, not defects.
✎ Read this as an opportunity map, not a callout. It is an independent prototype by EcoWealth Corporation, not affiliated with, not endorsed by, and not in partnership with the IRS or any government agency. All facts are from irs.gov's own public responses; all packets are fabricated demo data.First, the baseline, and it is good
Before any finding, this is the honest starting point. Across the six taxpayer-facing pages we visited (home, notices help, CP2000, forms & instructions, residential clean-energy credit, online-account landing), every page returned HTTP 200, rendered cleanly in real Chrome, and showed no bot wall to a normal visitor.
x-generator: Drupal 10), fronted by Akamai CDN with Bot Manager active (_abck / bm_sz challenge cookies) and a BigIP load balancer at the apex.Strict-Transport-Security, X-Content-Type-Options: nosniff, and X-Frame-Options: SAMEORIGIN are all present on every page checked.*-index-search family) and admin/auth routes, a maintained file, not a default.The findings below sit on top of this. They are opportunities a first-mover can take, not holes to patch in a panic.
The bottom line, in plain English
No jargon, and no claim of adoption, this is a concept. Here is what each opportunity below would be worth in plain terms.
Taxpayers now ask an AI before they read the page, and there's nothing structured for it to read, so it improvises; a static index points it at the authoritative answer instead.
When requirements and evidence stay implicit, an examiner asks for the one missing thing and a taxpayer re-sends the wrong stack; an explicit, checkable workpaper cuts that rework for both sides.
Pages get renamed and cited URLs drift, so an AI can quote a pre-rename link; a stable index keeps every citation landing on the current, correct page.
Finding 1: Agent-discovery is greenfield
Taxpayers increasingly ask an AI assistant "what does this notice mean and how do I respond?" before they ever read the page. Today an assistant has no structured surface to read: every standard agent-discovery path is a 404, and robots.txt neither invites nor blocks any named AI crawler.
# standard public GETs, normal-visitor requests, no probing 404 https://www.irs.gov/llms.txt 404 https://www.irs.gov/.well-known/agent-card.json 404 https://www.irs.gov/.well-known/ai-plugin.json 404 https://www.irs.gov/ai-plugin.json 404 https://www.irs.gov/.well-known/security.txt # RFC 9116, also absent # the deep audit widens this to 12 discovery paths, all 404 # robots.txt IS present (200) and maintained, but names no AI crawler: grep -i 'gptbot|google-extended|ccbot|claudebot|perplexity' robots.txt → none # one "User-agent: *" block, assistants get only the generic wildcard rule
Why it matters: this is a first-mover position, not a catch-up. A small, static llms.txt + agent card that points to authoritative pages (and, in this concept, to a structured workpaper lane) is the difference between an assistant citing the right guidance and an assistant guessing. The deep audit expands this to the full 12-path sweep.
Finding 2: Evidence is document-and-mail-shaped, not structured
The notice pages are clear and well-written, but the mechanism they describe is prose: read the notice, meet a deadline, complete a paper form if one is enclosed, mail or upload documents. There is no structured, machine-legible, verifiable format for "here is exactly what's required, here is what I've attached, here is what's still open."
# DOM text, Understanding your CP2000 series notice (rendered, visible copy) "What you need to do" • Review the entire notice and follow the instructions to resolve this issue. • Reply to the notice by the date listed. • If a response form is included in your notice, complete and sign it.
Even the modern Document Upload Tool, a real win of the Paperless Processing Initiative, accepts JPG/PNG/PDF scans of a notice response. That moves the stack from an envelope to an upload box, but it stays an unstructured stack, not a checkable object.
Why it matters: when requirements and evidence stay implicit, casework bounces: an examiner asks for the one missing thing, a taxpayer re-sends the wrong stack, and the proof chain is scattered across mail and email. The Evidence Workpaper Protocol makes the two things that stall casework explicit and durable: the next concrete step, and exactly what evidence closes the item. That is the plug point, detailed at the bottom of this brief and quantified in the deep audit.
Finding 3: Deep-link citations age
Content is well-maintained, but URLs move. Two examples an assistant or a taxpayer's saved link would hit:
# curl -IL, the old, widely-cited notice URL still resolves, via a rename GET /individuals/understanding-your-cp2000-notice → 301 /individuals/understanding-your-cp2000-series-notice 200 OK GET /payments/your-online-account → 301 /payments/online-account-for-individuals 200 OK
Why it matters: the redirects land on the right page, so this is genuinely minor, a strength, even, that nothing 404s. But an AI that cites the pre-rename URL looks slightly stale, and a citation trail wants stability. A small stable-URL / agent-readable index removes the ambiguity for the tools now doing the first read.
Finding 4: Header hardening headroom
Purely from response headers any browser receives, no testing of any kind, there is modest hardening headroom on an already-competent configuration:
# response headers, www.irs.gov (observed, not probed) present strict-transport-security: max-age=31536000 # no includeSubDomains / preload present x-content-type-options: nosniff present x-frame-options: SAMEORIGIN absent content-security-policy absent referrer-policy absent permissions-policy
Why it matters: this is incremental, not urgent, the basics are in place. A CSP, a Referrer-Policy, a Permissions-Policy, and extending HSTS with includeSubDomains; preload are the standard next rungs. Noted for completeness and framed accordingly; it is not the point of this brief.
Evidence log: method & dates
| Check | Method | Result | Date |
|---|---|---|---|
| irs.gov apex → www | curl -IL | 301 Moved Permanently → https://www.irs.gov/ (BigIP) | 2026-07-10 |
| Homepage stack & headers | response headers | Drupal 10; Akamai CDN + Bot Manager; HSTS + nosniff + X-Frame SAMEORIGIN | 2026-07-10 |
/llms.txt | GET | 404 | 2026-07-10 |
/.well-known/agent-card.json | GET | 404 | 2026-07-10 |
/.well-known/ai-plugin.json · /ai-plugin.json | GET | 404 · 404 | 2026-07-10 |
/.well-known/security.txt | GET | 404 | 2026-07-10 |
| robots.txt AI directives | GET + grep | none named; search-index paths disallowed | 2026-07-10 |
| CP2000 legacy URL | curl -IL | 301 → …cp2000-series-notice → 200 | 2026-07-10 |
| online-account legacy URL | curl -L | 301 → …online-account-for-individuals → 200 | 2026-07-10 |
| CSP / Referrer-Policy / Permissions-Policy | response headers | absent (HSTS max-age only) | 2026-07-10 |
| 6 taxpayer pages render | Playwright (Chrome, 2× DPI) | all 200; no bot wall; 1 minor homepage JS null-read | 2026-07-10 |
| CP2000 "what you need to do" | rendered DOM text | "reply by the date listed / complete and sign the enclosed form": document-shaped | 2026-07-10 |
Honesty note on method: we blocked webfonts to keep the headless run stable, so the failed-request counts in our raw log are our artifact, all of them were .woff/.woff2 font fetches we aborted, not irs.gov defects. The only genuine page-level signal was a single non-fatal JavaScript null-read on the homepage (Cannot read properties of null (reading 'parentNode')); every page otherwise rendered clean. We call that a solid baseline, and say so.
Where the Evidence Workpaper Protocol plugs in
A notice arrives. The taxpayer reads prose, guesses what "supporting documentation" means, mails or uploads a stack, and waits.
The item is packetized: explicit evidence requirements, each satisfiable and checkable, one legible unit of state, not an email thread.
An examiner replies asking for the one missing thing; the back-and-forth loses its shape across channels.
The reviewer names exactly what's still open; the checklist ticks as evidence is attached; the audit trail is append-only and role-attributed.
"Resolved" is an outcome with the proof scattered behind it, hard to reconstruct, harder for an AI to verify.
A resolution receipt is issued: outcome, evidence summary, and the machine-readable proof chain in one replayable object an examiner's AI can verify end to end.
Every element above is demonstrated, on fabricated data, in the demo →. It carries no taxpayer PII and makes no claim of adoption, it is a prototype of a primitive that already runs, in a different domain, today.
The demo runs one demo packet from draft to resolved with the evidence checklist ticking and an audit-grade receipt at the end. The Agent Kit is the actual file shapes: llms.txt, an agent card, MCP tools (the interface an AI assistant calls to use a service correctly), and a concierge persona that always routes real questions to an official resource.