WritersLogic Verifiable AI Agent Hub Anchoring API

Transparency log anchoring with Merkle inclusion proofs

GitHub OpenAPI

Operations 4

POST /v1/anchor Anchor evidence hash #
GET /v1/anchor/sth Get latest signed tree head #
GET /v1/anchor/proof Get inclusion proof #
GET /v1/anchor/verify Verify anchored evidence #

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-anchoring-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-anchoring-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: WritersProof Anchoring API
  version: 1.0.0
  description: Certificate Authority and verification API for the Proof-of-Effort protocol. Certify, verify, and prove human authorship.
  contact:
    name: WritersLogic LLC
    url: https://writersproof.com
  license:
    name: SSPL-1.0
    url: https://www.mongodb.com/licensing/server-side-public-license
servers:
- url: https://api.writersproof.com
  description: Production
- url: https://api.writerslogic.com
  description: Legacy
tags:
- name: Anchoring
  description: Transparency log anchoring with Merkle inclusion proofs
paths:
  /v1/anchor:
    post:
      tags:
      - Anchoring
      operationId: anchorEvidence
      summary: Anchor evidence hash
      description: Append an evidence hash to the Merkle transparency log. Returns a signed tree head and inclusion proof.
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnchorRequest'
      responses:
        '201':
          description: Evidence anchored
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnchorResponse'
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          description: Signature verification failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Transparency log busy, retry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/anchor/sth:
    get:
      tags:
      - Anchoring
      operationId: getSignedTreeHead
      summary: Get latest signed tree head
      description: Return the latest signed tree head from the transparency log. Public endpoint.
      security: []
      responses:
        '200':
          description: Signed tree head
          content:
            application/json:
              schema:
                type: object
                properties:
                  tree_size:
                    type: integer
                  root_hash:
                    type: string
                  signature:
                    type: string
                  timestamp:
                    type: string
                    format: date-time
                  public_key:
                    type: string
                    description: Hex-encoded Ed25519 public key
  /v1/anchor/proof:
    get:
      tags:
      - Anchoring
      operationId: getInclusionProof
      summary: Get inclusion proof
      description: Compute a Merkle inclusion proof for a given log index. Public endpoint.
      security: []
      parameters:
      - name: log_index
        in: query
        required: true
        schema:
          type: integer
          minimum: 1
        description: 1-based log index
      responses:
        '200':
          description: Inclusion proof
          content:
            application/json:
              schema:
                type: object
                properties:
                  log_index:
                    type: integer
                  leaf_hash:
                    type: string
                  tree_size:
                    type: integer
                  root_hash:
                    type: string
                  inclusion_proof:
                    type: array
                    items:
                      type: string
        '400':
          $ref: '#/components/responses/ValidationError'
        '404':
          description: Log index not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/anchor/verify:
    get:
      tags:
      - Anchoring
      operationId: verifyAnchor
      summary: Verify anchored evidence
      description: Verify that an evidence hash is anchored in the transparency log and return the inclusion proof. Also supports legacy blockchain verification via tx or contentHash query parameters.
      security: []
      parameters:
      - name: evidence_hash
        in: query
        required: false
        schema:
          type: string
          pattern: ^[0-9a-f]{64}$
        description: SHA-256 evidence hash (64-char hex)
      - name: tx
        in: query
        required: false
        schema:
          type: string
        description: 'Legacy: blockchain transaction hash'
      - name: contentHash
        in: query
        required: false
        schema:
          type: string
        description: 'Legacy: content hash'
      responses:
        '200':
          description: Verification result
          content:
            application/json:
              schema:
                type: object
                properties:
                  verified:
                    type: boolean
                  type:
                    type: string
                    enum:
                    - transparency_log
                    - blockchain
                  anchor:
                    type: object
                  message:
                    type: string
        '400':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
      required:
      - error
    AnchorResponse:
      type: object
      properties:
        anchorId:
          type: string
          format: uuid
        timestamp:
          type: string
          format: date-time
        assuranceTier:
          type: string
          enum:
          - T1
          - T2
        logIndex:
          type: integer
        inclusionProof:
          type: array
          items:
            type: string
        signedTreeHead:
          type: object
          properties:
            treeSize:
              type: integer
            rootHash:
              type: string
            signature:
              type: string
    AnchorRequest:
      type: object
      required:
      - evidenceHash
      - authorDid
      - signature
      properties:
        evidenceHash:
          type: string
          pattern: ^[0-9a-f]{64}$
          description: SHA-256 hash of the evidence packet
        authorDid:
          type: string
          maxLength: 256
        signature:
          type: string
          pattern: ^[0-9a-f]{128}$
          description: 128-char hex Ed25519 signature
        metadata:
          type: object
          properties:
            documentName:
              type: string
            tier:
              type: string
  responses:
    ValidationError:
      description: Request validation failed
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                example: Validation failed
              details:
                type: array
                items:
                  type: string
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Supabase JWT token
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key with wp_sk_ prefix