IntentGuard · OpenAPI Overlay 1.0.0

IntentGuard Router API Evangelist enhancement overlay

8 actions 8 updates security extends openapi/hatchable-site-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for IntentGuard's API. It is a proposal applied on top of the contract, not a document IntentGuard publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

contentsecuritycontactx-llms-txtx-agent-cardx-mcp-endpointcomponentsrequestBody

Targets 8

$.info
$
$.paths['/api/route'].post
$.paths['/api/intent-check'].post
$.paths['/api/route'].post.responses['402']
$.paths['/api/intent-check'].post.responses['402']
$.paths['/api/router-preview'].post.responses['400']
$.paths['/api/route'].post.responses['400']

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: IntentGuard Router API Evangelist enhancement overlay
  version: 1.0.0
x-generated: '2026-09-19'
x-method: generated
x-source: >-
  openapi/hatchable-site-openapi.yml, enriched from mcp/hatchable-site-tools-list.json (live tools/list),
  well-known/hatchable-site-x402-service.json and a live 402 challenge observed at POST /api/route on 2026-09-19
x-note: >-
  Captures the API Evangelist enhancements to the operator's published spec without mutating it. Every value
  below was harvested from a document the operator itself publishes or from an observed live response. The
  three substantive additions are the missing securitySchemes for the x402 PAYMENT-SIGNATURE header, a content
  schema for the 402 challenge that both paid operations declare with no body shape, and the requestBody for
  checkImageIntent, which the spec omits entirely and the live MCP inputSchema supplies.
extends: openapi/hatchable-site-openapi.yml
actions:
- target: $.info
  description: Add the contact and provider surfaces the spec omits but the operator publishes (agent card provider block, llms.txt).
  update:
    contact:
      name: IntentGuard
      url: https://intentguard.hatchable.site
    x-llms-txt: https://intentguard.hatchable.site/llms.txt
    x-agent-card: https://intentguard.hatchable.site/.well-known/agent-card.json
    x-mcp-endpoint: https://intentguard.hatchable.site/api/mcp
- target: $
  description: >-
    Add the x402 security scheme. The spec carries x-payment-info on routeTask and declares 402 on both paid
    operations but has no components.securitySchemes, so the contract reads as an entirely open API.
  update:
    components:
      securitySchemes:
        x402:
          type: apiKey
          in: header
          name: PAYMENT-SIGNATURE
          description: >-
            x402 v2 pay-per-call. Not a static credential - the header value is a signed, single-use, amount-bound
            EIP-3009 payment authorization for the accepts[] entry returned in the 402 challenge (0.0009 USDC on
            Base, eip155:8453). Observed header name from the live challenge error string
            "PAYMENT-SIGNATURE header is required".
      schemas:
        X402PaymentRequired:
          type: object
          description: x402 v2 PaymentRequired challenge, as observed live on POST /api/route and POST /api/intent-check.
          required: [x402Version, accepts]
          properties:
            x402Version: {type: integer, const: 2}
            error: {type: string, example: PAYMENT-SIGNATURE header is required}
            resource:
              type: object
              properties:
                url: {type: string, format: uri}
                description: {type: string}
                mimeType: {type: string}
                serviceName: {type: string}
                tags: {type: array, items: {type: string}}
            accepts:
              type: array
              items:
                type: object
                properties:
                  scheme: {type: string, example: exact}
                  network: {type: string, example: eip155:8453}
                  amount: {type: string, description: USDC base units, example: '900'}
                  asset: {type: string, example: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'}
                  payTo: {type: string}
                  maxTimeoutSeconds: {type: integer, example: 60}
                  extra: {type: object}
            extensions: {type: object, description: Bazaar discovery extension carrying the input schema and an output example.}
        InvalidRequest:
          type: object
          description: Validation error envelope as observed live on POST /api/router-preview with an empty body.
          properties:
            error: {type: string, example: invalid_request}
            message: {type: string, example: task is required and must contain at least 8 characters.}
- target: $.paths['/api/route'].post
  description: Declare the x402 requirement on the paid operation.
  update:
    security:
    - x402: []
- target: $.paths['/api/intent-check'].post
  description: Declare the x402 requirement and add the requestBody the spec omits, taken from the live MCP tools/list inputSchema for check_image_intent.
  update:
    security:
    - x402: []
    requestBody:
      required: true
      content:
        application/json:
          schema:
            type: object
            required: [user_request, agent_plan]
            properties:
              user_request: {type: string, minLength: 3, maxLength: 12000}
              agent_plan: {type: string, minLength: 3, maxLength: 12000}
              reference_notes: {type: array, maxItems: 20, items: {type: string}}
- target: $.paths['/api/route'].post.responses['402']
  description: Give the 402 challenge a body schema.
  update:
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/X402PaymentRequired'
    headers:
      payment-required:
        description: base64 of the same challenge document
        schema: {type: string}
- target: $.paths['/api/intent-check'].post.responses['402']
  description: Give the 402 challenge a body schema.
  update:
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/X402PaymentRequired'
- target: $.paths['/api/router-preview'].post.responses['400']
  description: Give the validation error a body schema.
  update:
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/InvalidRequest'
- target: $.paths['/api/route'].post.responses['400']
  description: Give the validation error a body schema.
  update:
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/InvalidRequest'

Work with this as data

Every overlay 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 openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • 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 overlay
curl "https://apis.io/api/v1/overlays/hatchable-site-openapi-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.