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.
What the actions change
x-apis-io-enrichmentx-runtime-headersx-agent-surfacesx-gaps
Targets 1
$.info
OpenAPI Overlay
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.