A2A task interface¶
Operator ETL exposes a bounded agent-to-agent HTTP surface for FOIA/public-comment execution without widening the MCP tool surface.
Why this exists¶
This interface was added for a different job than MCP:
- MCP stays read-oriented and least-privilege: gold KPI reads, allowlisted SQL, and run-status lookups.
- A2A handles bounded execution: an external agent can submit a high-level FOIA/public-comment task and receive sanitized artifacts back.
That split preserves the repository's core rule that agents may orchestrate work, but may not receive direct raw-data or vault-level access as a shortcut.
Discovery¶
GET /.well-known/agent-card.json
Returns capability metadata:
- Name:
Operator ETL FOIA & Redaction Service - Capabilities:
FOIARedaction,PublicCommentSummarization,PIIVaulting - Authentication: Bearer token
Task API¶
POST /a2a/v1/tasks
JSON-RPC 2.0 methods:
tasks.create- params:
source_typedocket_idraw_records
tasks.get_status- params:
task_id
Example:
{
"jsonrpc": "2.0",
"id": "create-1",
"method": "tasks.create",
"params": {
"source_type": "public_comments",
"docket_id": "EPA-HQ-OAR-2026-001",
"raw_records": [
{
"comment_id": "CMT-9001",
"docket_id": "EPA-HQ-OAR-2026-001",
"agency": "EPA",
"submitted_at": "2026-09-01T12:00:00",
"commenter_type": "individual",
"subject": "Support",
"body": "Please redact my email before release.",
"pii_detected": true
}
]
}
}
Event stream¶
GET /a2a/v1/tasks/{task_id}/events
Server-Sent Events emit lifecycle events:
acceptedworkingcompletedfailed
Events include only task IDs, run IDs, timestamps, row counts, critic outcome, and sanitized artifacts.
Security boundary¶
- Bearer token required via
Authorization: Bearer <token> - No raw SQL execution
- No bronze/silver row export
- No vault decrypt
- No raw PII in responses, traces, metrics, or dashboard views
The A2A interface reuses the same LangGraph, PII gate, critic, and gold-mart flow described in HOW-IT-WORKS.md. It is a task adapter, not a privileged bypass.