Agent Health Monitor · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Agent Health Monitor API

Enhancements API Evangelist applies on top of the provider-served OpenAPI (https://agenthealthmonitor.xyz/openapi.json, info.version 1.8.0), which declares no servers[], no securitySchemes and no 401/402/429 responses even though every paid route answers 402 with an x402 PAYMENT-REQUIRED header and accepts an X-API-Key header. Nothing here changes the harvested original in openapi/_original/. Prices are copied from the provider's own /.well-known/x402 document and /api/info.

19 actions 19 updates security extends openapi/agenthealthmonitor-xyz-openapi.yml
Authorship not recorded No authorship marker is recorded for this file. It is not presented as the provider's.
View Overlay File View on GitHub Overlay Specification

What the actions change

responsessecurityx-x402-pricex-x402-networkx-apievangelist-providerx-apievangelist-sourcex-apievangelist-fetchedsecuritySchemes

Targets 19 · first 16 shown; the file carries all of them

$.info
$.servers
$.components
$.tags
$.paths['/risk/premium/{address}'].get
$.paths['/counterparties/{address}'].get
$.paths['/network-map/{address}'].get
$.paths['/risk/{address}'].get
$.paths['/health/{address}'].get
$.paths['/wash/{address}'].post
$.paths['/ahs/{address}'].get
$.paths['/ahs/route/policy'].put
$.paths['/ahs/route/{address}'].get
$.paths['/ahs/batch'].post
$.paths['/report-card/{address}'].get
$.paths['/optimize/{address}'].get

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Agent Health Monitor API
  version: 1.0.0
  description: Enhancements API Evangelist applies on top of the provider-served OpenAPI (https://agenthealthmonitor.xyz/openapi.json,
    info.version 1.8.0), which declares no servers[], no securitySchemes and no 401/402/429 responses even though every paid
    route answers 402 with an x402 PAYMENT-REQUIRED header and accepts an X-API-Key header. Nothing here changes the harvested
    original in openapi/_original/. Prices are copied from the provider's own /.well-known/x402 document and /api/info.
extends: openapi/agenthealthmonitor-xyz-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-provider: agenthealthmonitor-xyz
    x-apievangelist-source: https://agenthealthmonitor.xyz/openapi.json
    x-apievangelist-fetched: '2026-09-19'
- target: $.servers
  description: Base URL stated in the provider docs and README
  update:
  - url: https://agenthealthmonitor.xyz
    description: Production (Base mainnet, eip155:8453)
- target: $.components
  description: Security schemes the provider documents but the spec omits
  update:
    securitySchemes:
      ApiKeyAuth:
        type: apiKey
        in: header
        name: X-API-Key
        description: 'Fiat API key bought via Stripe (Starter $9 / Pro $39 one-time credit packs, Unlimited $99/month). Key
          prefix ahm_live_ (README) — the docs quick-start shows ahm_sk_. Keys can be exhausted: 429 "API key calls exhausted".'
      X402Payment:
        type: apiKey
        in: header
        name: X-PAYMENT
        description: x402 v2 pay-per-call. Without payment the paid routes answer HTTP 402 with a base64 PAYMENT-REQUIRED
          header carrying accepts[] {scheme exact, network eip155:8453, asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC),
          amount, payTo, maxTimeoutSeconds 300}; sign the EIP-3009 authorization and resend with X-PAYMENT. Facilitator https://facilitator.payai.network.
    responses:
      PaymentRequired:
        description: x402 payment required (or X-API-Key missing). Body is {} ; the challenge is in the PAYMENT-REQUIRED response
          header (base64 JSON).
        headers:
          PAYMENT-REQUIRED:
            schema:
              type: string
            description: 'base64-encoded x402 v2 challenge: {x402Version, error, resource{url,description,mimeType}, accepts[],
              extensions.bazaar}'
      Unauthorized:
        description: Invalid or expired API key / X-Internal-Key required
        content:
          application/json:
            schema:
              type: object
              properties:
                detail:
                  type: string
            examples:
              invalidKey:
                value:
                  detail: Invalid or expired API key
              missingKey:
                value:
                  detail: X-API-Key header required
      TooManyRequests:
        description: Per-IP rate limit (slowapi, 60/20/10 per minute by route) or API-key credits exhausted
        content:
          application/json:
            schema:
              type: object
              properties:
                error:
                  type: string
                detail:
                  type: string
            examples:
              ipLimit:
                value:
                  error: Rate limit exceeded
                  detail: 60 per 1 minute
              creditsExhausted:
                value:
                  detail: API key calls exhausted
- target: $.tags
  description: Mark the tags an agent may call versus internal/partner surfaces
  update:
  - name: Scoring & Risk
    x-agent-callable: true
  - name: Health & Hygiene
    x-agent-callable: true
  - name: Optimization
    x-agent-callable: true
  - name: Protection
    x-agent-callable: true
  - name: Alerts
    x-agent-callable: true
  - name: Coupon Access
    x-agent-callable: false
    description: Partner coupon routes
  - name: Discovery & Info
    x-agent-callable: false
    description: HTML pages and service-info routes
  - name: Billing
    x-agent-callable: false
    description: Stripe checkout and webhook routes
  - name: Admin
    x-agent-callable: false
    description: X-Internal-Key protected
  - name: Utility
    x-agent-callable: false
- target: $.paths['/risk/premium/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.05
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/counterparties/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.10
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/network-map/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.10
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/risk/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.001
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/health/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.50
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/wash/{address}'].post
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.50
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/ahs/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $1.00
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/ahs/route/policy'].put
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.01
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/ahs/route/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $0.01
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/ahs/batch'].post
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $10.00
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/report-card/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: '2.00'
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/optimize/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $5.00
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/agent/protect/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $25.00
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/retry/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $10.00
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'
- target: $.paths['/alerts/subscribe/{address}'].get
  update:
    security:
    - X402Payment: []
    - ApiKeyAuth: []
    x-x402-price: $2.00
    x-x402-network: eip155:8453
    responses:
      '402':
        $ref: '#/components/responses/PaymentRequired'
      '401':
        $ref: '#/components/responses/Unauthorized'
      '429':
        $ref: '#/components/responses/TooManyRequests'