Pagesnap · OpenAPI Overlay 1.0.0

API Evangelist enrichment overlay for the Pagesnap API

4 actions 4 updates update extends https://pagesnap.142-93-197-141.sslip.io/openapi.json
Generated by API Evangelist Written by API Evangelist tooling for Pagesnap's API. It is a proposal applied on top of the contract, not a document Pagesnap publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apis-io-enrichmentx-runtime-headersx-agent-surfacesx-gaps

Targets 1

$.info

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enrichment overlay for the Pagesnap API
  version: 1.0.0
extends: https://pagesnap.142-93-197-141.sslip.io/openapi.json
x-generated: '2026-09-02'
x-method: generated
x-source: openapi/pagesnap-openapi.json + live probes on 2026-09-02
x-note: >-
  Records the enrichment pass's findings as non-destructive additions. The upstream document is
  never mutated; the scorer parses the original spec, so this overlay improves derived artifacts
  and downstream tooling, not the raw content score.
actions:
  - target: $.info
    update:
      x-apis-io-enrichment:
        enriched: '2026-09-02'
        artifacts:
          openapi: openapi/pagesnap-openapi.json
          authentication: authentication/pagesnap-authentication.yml
          conventions: conventions/pagesnap-conventions.yml
          errors: errors/pagesnap-problem-types.yml
          lifecycle: lifecycle/pagesnap-lifecycle.yml
          rate_limits: rate-limits/pagesnap-rate-limits.yml
          plans: plans/pagesnap-plans-pricing.yml
          mcp: mcp/pagesnap-mcp.yml
          tool_crosswalk: mcp/pagesnap-tool-crosswalk.yml
          a2a: a2a/pagesnap-a2a.yml
          well_known: well-known/pagesnap-well-known.yml
          data_model: data-model/pagesnap-data-model.yml
          conformance: conformance/pagesnap-conformance.yml
          webhooks: asyncapi/pagesnap-webhooks.yml
          skills: skills/_index.yml
  - target: $.info
    update:
      x-runtime-headers:
        request: []
        response:
          - X-Plan
          - X-RateLimit-Limit
          - X-RateLimit-Remaining
          - X-RateLimit-Scope
          - X-Cache
          - X-Render-Ms
          - Retry-After
          - ETag
        note: >-
          Observed live on GET /v1/meta on 2026-09-02 but not declared in the upstream
          components.responses headers block. X-RateLimit-Scope is the useful one - it names WHICH
          window the limit/remaining pair describes.
  - target: $.info
    update:
      x-agent-surfaces:
        openapi: https://pagesnap.142-93-197-141.sslip.io/openapi.json
        mcp:
          endpoint: https://pagesnap.142-93-197-141.sslip.io/mcp
          transport: streamable-http
          anonymous: true
          tools: 11
        a2a:
          card: https://pagesnap.142-93-197-141.sslip.io/.well-known/agent-card.json
          endpoint: https://pagesnap.142-93-197-141.sslip.io/a2a
          skills: 6
          grade: near-conformant
        x402:
          manifest: https://pagesnap.142-93-197-141.sslip.io/.well-known/x402
          network: 'eip155:8453'
          asset: USDC
          routes: 7
        ard: https://pagesnap.142-93-197-141.sslip.io/.well-known/ard.json
        api_catalog: https://pagesnap.142-93-197-141.sslip.io/.well-known/api-catalog
        llms_txt: https://pagesnap.142-93-197-141.sslip.io/llms.txt
  - target: $.info
    update:
      x-gaps:
        - id: no-idempotency-key
          detail: >-
            No Idempotency-Key header on any write operation (createKey, createMonitor,
            createCheckout, verifyLinkGrant, createSupportTicket). x402 replay protection covers
            only the paid path.
        - id: no-rfc9457
          detail: >-
            Errors are a custom {"error":{code,message,reason}} envelope with a closed 58-value
            enum rather than application/problem+json.
        - id: no-request-id
          detail: No correlation-id request or response header is documented or observed.
        - id: no-webhook-payload-schema
          detail: >-
            The monitor webhook's signing, delivery and disable semantics are fully documented but
            the notification body schema is not published, and webhooks[] in the spec is empty.
        - id: no-crawl-job-callback
          detail: >-
            Asynchronous crawl and llms-txt jobs are poll-only; a completion webhook would remove
            the only mandatory polling loop in the API.
        - id: unregistered-package-names
          detail: >-
            The CLI/MCP bridge installs from GitHub, while `pagesnap` on npm and PyPI belong to
            unrelated authors - a name-confusion risk for anyone who guesses the install command.
        - id: ip-based-hostname
          detail: >-
            The service runs on a free sslip.io wildcard-DNS hostname derived from its IP, so
            every published URL breaks if the VPS address changes, and the registrable domain is
            not under provider control.