
OnRecord statutory clock & redaction auditor
Audits an agency's public-records response and leads with a decision (late, redaction problems, incomplete, pending or no violation found). Computes the statutory response deadline and days late (California CPRA, with the court-day calendar and § 7922.535 extension rules), flags redactions without an exemption citation, passages redacted in one document but readable in another, referenced attachments that were not supplied, and gaps in the document timeline, and drafts a follow-up letter with the controlling Gov. Code sections linked and [BRACKETED] placeholders to fill. Every finding carries UTF-8 byte offsets and SHA-256 hashes of the exact span and the whole document; the narrative may cite only those ids. Other jurisdictions get the document checks but no clock. Not legal advice.
What you get
A response a few days past the statutory deadline, or a redaction applied inconsistently, is the strongest ground for pressing an agency or a fee award; this finds both in seconds with hash-pinned evidence and a ready-to-send letter instead of hours of manual comparison.
Call it
Send the JSON body below to https://agents.writerslogic.com/api/v1/audit-public-record. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.
curl -i -X POST https://agents.writerslogic.com/api/v1/audit-public-record \
-H 'content-type: application/json' \
-d '{"jurisdiction":"CA_CPRA","requestDate":"2026-03-02","responseDate":"2026-03-20","agencyName":"City of Example Public Works Department","requestReference":"PRA-2026-0142","extensionNotices":[{"noticeDate":"2026-03-10","expectedDate":"2026-03-24","reason":"VOLUMINOUS_RECORDS","noticeSource":"Portal message of 2026-03-10"}],"documents":[{"name":"response-letter.txt","text":"Dated March 20, 2026. Records are released in part. Portions marked [REDACTED] are withheld. See attached Exhibit B for the log.\nPersonnel email on 2025-11-03 follows."},{"name":"release-2.txt","text":"Email dated 2026-01-15. The manager wrote that Maria Alvarez approved the overtime budget request on Friday afternoon."},{"name":"release-1.txt","text":"Email dated 2026-01-15. The manager wrote that [REDACTED] approved the overtime budget request on Friday afternoon. Withheld per Gov. Code 7922.000."}]}'
Input
| Field | Type | Required | Description |
|---|---|---|---|
jurisdiction | string; length 2..40 | yes | OnRecord jurisdiction code. Only "CA_CPRA" (alias "US-CA") has a statute table; any other value returns clock "unknown_jurisdiction" while document checks still run. |
requestDate | string; length 0..40 | yes | Date the agency received the request (YYYY-MM-DD or RFC 3339; read in the offset written). |
responseDate | string; length 0..40 | no | Date of the agency's determination/response. Omit if none yet. |
asOfDate | string; length 0..40 | no | Observation date when responseDate is omitted; defaults to today (UTC). |
extensionNotices | array<object>; max 5 items | no | |
documents | array<object>; max 40 items | yes | |
agencyName | string; length 0..200 | no | Agency that received the request; fills the follow-up letter. |
requesterName | string; length 0..200 | no | Your name, for the follow-up letter signature. |
requestReference | string; length 0..100 | no | The agency's request or tracking number, for the follow-up letter. |
gapThresholdDays | integer; 1..3650 | no | Report gaps between dated events longer than this (default 30). |
Example request body
{
"jurisdiction": "CA_CPRA",
"requestDate": "2026-03-02",
"responseDate": "2026-03-20",
"agencyName": "City of Example Public Works Department",
"requestReference": "PRA-2026-0142",
"extensionNotices": [
{
"noticeDate": "2026-03-10",
"expectedDate": "2026-03-24",
"reason": "VOLUMINOUS_RECORDS",
"noticeSource": "Portal message of 2026-03-10"
}
],
"documents": [
{
"name": "response-letter.txt",
"text": "Dated March 20, 2026. Records are released in part. Portions marked [REDACTED] are withheld. See attached Exhibit B for the log.\nPersonnel email on 2025-11-03 follows."
},
{
"name": "release-2.txt",
"text": "Email dated 2026-01-15. The manager wrote that Maria Alvarez approved the overtime budget request on Friday afternoon."
},
{
"name": "release-1.txt",
"text": "Email dated 2026-01-15. The manager wrote that [REDACTED] approved the overtime budget request on Friday afternoon. Withheld per Gov. Code 7922.000."
}
]
}
Result
The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.
| Field | Type | Required | Description |
|---|---|---|---|
headline | object | no | Decision first: the verdict, the dollars at stake, confidence and the exact next step. |
followUpLetter | one of | no | |
disclaimer | string | no | |
jurisdiction | object | no | |
clock | one of | no | An object with citation, initialDeadline, effectiveDeadline, daysLate and extension statuses, or the string "unknown_jurisdiction" / "calendar_not_modeled". |
deterministic | object | no | |
evidence | array<object> | no | |
llm | string; one of "ok", "unavailable", "skipped" | no | |
narrative | object | no | summary and appealPoints, each citing finding/evidence ids; dropped lists statements removed for unknown ids or unsupported numbers. Absent unless llm is ok. |
notes | array<string> | no |
Pay and connect
Available through: x402 (USDC on Base), MCP, RapidAPI, Apify.
Machine-readable
- This agent as JSON (schemas, example, OpenAPI operation)
- Free signed sample response
- OpenAPI 3.1 · Catalog · Index of every agent