WritersLogic Verifiable AI Agent Hub Audit Public Record API

The Audit Public Record API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for audit public record.

GitHub OpenAPI

Operations 1

POST /api/v1/audit-public-record OnRecord statutory clock & redaction auditor #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/writerslogic-com:writerslogic-com-audit-public-record-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

writerslogic-com-audit-public-record-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: WritersLogic Verifiable AI Agent Hub Audit Public Record API
  version: 2.0.0
  description: Pay-per-call agents settled in USDC on Base via x402. Every response carries a signed provenance envelope.
  contact:
    name: WritersLogic
    url: https://writerslogic.com/agents
    email: agents@writerslogic.com
servers:
- url: https://agents.writerslogic.com
tags:
- name: Audit Public Record
paths:
  /api/v1/audit-public-record:
    post:
      operationId: audit_public_record
      summary: OnRecord statutory clock & redaction auditor
      description: '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.


        Price: 1.50 USDC on Base (x402).'
      x-x402-price-usdc: '1.50'
      x-x402-amount: '1500000'
      x-payment-info:
        protocols:
        - x402
        price:
          mode: fixed
          currency: USD
          amount: '1.50'
      x-audience: business
      x-sample-url: https://agents.writerslogic.com/api/v1/samples/audit-public-record
      security:
      - x402: []
      - apiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              required:
              - jurisdiction
              - requestDate
              - documents
              properties:
                jurisdiction:
                  type: string
                  minLength: 2
                  maxLength: 40
                  description: 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:
                  type: string
                  pattern: ^\d{4}-\d{2}-\d{2}(?:[T ].*)?$
                  maxLength: 40
                  description: Date the agency received the request (YYYY-MM-DD or RFC 3339; read in the offset written).
                responseDate:
                  type: string
                  pattern: ^\d{4}-\d{2}-\d{2}(?:[T ].*)?$
                  maxLength: 40
                  description: Date of the agency's determination/response. Omit if none yet.
                asOfDate:
                  type: string
                  pattern: ^\d{4}-\d{2}-\d{2}(?:[T ].*)?$
                  maxLength: 40
                  description: Observation date when responseDate is omitted; defaults to today (UTC).
                extensionNotices:
                  type: array
                  maxItems: 5
                  items:
                    type: object
                    additionalProperties: false
                    required:
                    - noticeDate
                    - expectedDate
                    - reason
                    - noticeSource
                    properties:
                      noticeDate:
                        type: string
                        pattern: ^\d{4}-\d{2}-\d{2}(?:[T ].*)?$
                        maxLength: 40
                      expectedDate:
                        type: string
                        pattern: ^\d{4}-\d{2}-\d{2}(?:[T ].*)?$
                        maxLength: 40
                        description: Date the agency says its determination will be dispatched.
                      reason:
                        type: string
                        maxLength: 80
                        description: One of SEPARATE_FIELD_FACILITIES, VOLUMINOUS_RECORDS, INTERAGENCY_CONSULTATION, DATA_COMPILATION, CYBERATTACK_SYSTEMS_UNAVAILABLE, DECLARED_EMERGENCY_OPERATIONAL_IMPACT.
                      noticeSource:
                        type: string
                        maxLength: 500
                        description: Identifier of the written notice (letter, portal message). Empty makes the extension defective.
                documents:
                  type: array
                  minItems: 1
                  maxItems: 40
                  items:
                    type: object
                    additionalProperties: false
                    required:
                    - name
                    - text
                    properties:
                      name:
                        type: string
                        minLength: 1
                        maxLength: 200
                      text:
                        type: string
                        maxLength: 1500000
                agencyName:
                  type: string
                  maxLength: 200
                  description: Agency that received the request; fills the follow-up letter.
                requesterName:
                  type: string
                  maxLength: 200
                  description: Your name, for the follow-up letter signature.
                requestReference:
                  type: string
                  maxLength: 100
                  description: The agency's request or tracking number, for the follow-up letter.
                gapThresholdDays:
                  type: integer
                  minimum: 1
                  maximum: 3650
                  description: Report gaps between dated events longer than this (default 30).
            example:
              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.

                  Personnel 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.
      responses:
        '200':
          description: Paid result with provenance
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      headline:
                        type: object
                        description: 'Decision first: the verdict, the dollars at stake, confidence and the exact next step.'
                        properties:
                          decision:
                            type: string
                            enum:
                            - AGENCY_LATE
                            - REDACTION_PROBLEMS
                            - INCOMPLETE_RESPONSE
                            - RESPONSE_PENDING
                            - NO_VIOLATION_FOUND
                          summary:
                            type: string
                          amountAtStakeUsd:
                            anyOf:
                            - type: number
                            - type: 'null'
                            description: Dollars saved or recoverable if the recommended action succeeds; null when it cannot be computed from the input.
                          amountBasis:
                            type: string
                          confidence:
                            type: string
                            enum:
                            - high
                            - medium
                            - low
                          nextStep:
                            type: string
                      followUpLetter:
                        anyOf:
                        - type: 'null'
                        - type: object
                          description: Plain-text letter built in code from the clock and findings. Fill every [BRACKETED] placeholder before sending.
                          properties:
                            subject:
                              type: string
                            body:
                              type: string
                            placeholders:
                              type: array
                              items:
                                type: string
                            controllingStatutes:
                              type: array
                              items:
                                type: object
                                properties:
                                  citation:
                                    type: string
                                  url:
                                    type: string
                                  role:
                                    type: string
                      disclaimer:
                        type: string
                      jurisdiction:
                        type: object
                        properties:
                          input:
                            type: string
                          code:
                            type: string
                          name:
                            type: string
                      clock:
                        description: An object with citation, initialDeadline, effectiveDeadline, daysLate and extension statuses, or the string "unknown_jurisdiction" / "calendar_not_modeled".
                        anyOf:
                        - type: string
                          enum:
                          - unknown_jurisdiction
                          - calendar_not_modeled
                        - type: object
                      deterministic:
                        type: object
                        properties:
                          findings:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                kind:
                                  type: string
                                  enum:
                                  - redaction_without_exemption
                                  - exemption_code_not_in_table
                                  - foia_stamp_in_state_record
                                  - inconsistent_redaction
                                  - missing_attachment
                                  - timeline_gap
                                severity:
                                  type: string
                                  enum:
                                  - high
                                  - medium
                                  - low
                                summary:
                                  type: string
                                evidenceIds:
                                  type: array
                                  items:
                                    type: string
                                details:
                                  type: object
                          countsByKind:
                            type: object
                          truncatedKinds:
                            type: array
                            items:
                              type: string
                          documents:
                            type: array
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                bytes:
                                  type: integer
                                sha256:
                                  type: string
                      evidence:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            documentName:
                              type: string
                            byteStart:
                              type: integer
                            byteEnd:
                              type: integer
                            spanSha256:
                              type: string
                              description: SHA-256 of the exact UTF-8 bytes [byteStart, byteEnd).
                            documentSha256:
                              type: string
                            quote:
                              type: string
                      llm:
                        type: string
                        enum:
                        - ok
                        - unavailable
                        - skipped
                      narrative:
                        type: object
                        description: summary and appealPoints, each citing finding/evidence ids; dropped lists statements removed for unknown ids or unsupported numbers. Absent unless llm is ok.
                      notes:
                        type: array
                        items:
                          type: string
                  _provenance:
                    type: object
                    description: C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance
                required:
                - data
                - _provenance
        '400':
          description: Invalid request (no payment consumed)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '401':
          description: Invalid X-API-KEY
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
        '402':
          description: Payment required or invalid
          content:
            application/json:
              schema:
                type: object
                description: x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)
                properties:
                  x402Version:
                    type: integer
                  error:
                    type: string
                  code:
                    type: string
                  resource:
                    type: object
                  accepts:
                    type: array
                    items:
                      type: object
                  extensions:
                    type: object
        '502':
          description: Upstream failure; the payment is released or not settled
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
      tags:
      - Audit Public Record
components:
  securitySchemes:
    x402:
      type: apiKey
      in: header
      name: PAYMENT-SIGNATURE
      description: x402 v2 payment payload (base64) sent after a 402 challenge
    apiKey:
      type: apiKey
      in: header
      name: X-API-KEY