{
  "name": "AgentBodega",
  "description": "Small x402-payable utility APIs for agents.",
  "openapi": "https://agentbodega.store/openapi.json",
  "x402": "https://agentbodega.store/.well-known/x402",
  "llmsTxt": "https://agentbodega.store/llms.txt",
  "getStarted": {
    "guide": "https://agentbodega.store/get-started",
    "prompt": "https://agentbodega.store/get-started/prompt.txt"
  },
  "freeEndpoints": [
    {
      "key": "status-service-suggestion",
      "title": "Suggest Official Status Coverage",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/suggest",
      "price": {
        "currency": "USD",
        "amount": "0.00"
      },
      "description": "Submit a missing service or official status page for future coverage. The route is free and persists demand signals for review.",
      "longDescription": "Submit a missing service or official status page for future coverage. The route is free and persists demand signals for review.\n\nInput: send a JSON request body.\nRequired fields: name.\nOptional fields: homepage, domain, statusPage, sourceUrl, category, priority, useCase, requestedBy, contact.\n\nAccepted fields:\n- name (required, string): Service name, for example Stripe or Railway. Constraints: min length: 2; max length: 120.\n- homepage (optional, string): string value. Constraints: format: uri; max length: 300.\n- domain (optional, string): Plain domain if the homepage URL is not known. Constraints: max length: 253.\n- statusPage (optional, string): string value. Constraints: format: uri; max length: 300.\n- sourceUrl (optional, string): Machine-readable status API URL if known. Constraints: format: uri; max length: 300.\n- category (optional, string): string value. Constraints: max length: 64.\n- priority (optional, string): string value. Constraints: accepted values: \"low\", \"normal\", \"high\", \"urgent\"; default: \"normal\".\n- useCase (optional, string): string value. Constraints: max length: 1000.\n- requestedBy (optional, string): string value. Constraints: max length: 120.\n- contact (optional, string): string value. Constraints: max length: 160.\n\nExample request body:\n```json\n{\n  \"name\": \"Railway\",\n  \"homepage\": \"https://railway.com\",\n  \"priority\": \"normal\",\n  \"useCase\": \"Official deploy status checks.\"\n}\n```",
      "category": "feedback",
      "kind": "http-json",
      "tags": [
        "status",
        "suggestion",
        "coverage-request",
        "agent-feedback"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 2,
            "maxLength": 120,
            "description": "Service name, for example Stripe or Railway."
          },
          "homepage": {
            "type": "string",
            "format": "uri",
            "maxLength": 300
          },
          "domain": {
            "type": "string",
            "maxLength": 253,
            "description": "Plain domain if the homepage URL is not known."
          },
          "statusPage": {
            "type": "string",
            "format": "uri",
            "maxLength": 300
          },
          "sourceUrl": {
            "type": "string",
            "format": "uri",
            "maxLength": 300,
            "description": "Machine-readable status API URL if known."
          },
          "category": {
            "type": "string",
            "maxLength": 64
          },
          "priority": {
            "type": "string",
            "enum": [
              "low",
              "normal",
              "high",
              "urgent"
            ],
            "default": "normal"
          },
          "useCase": {
            "type": "string",
            "maxLength": 1000
          },
          "requestedBy": {
            "type": "string",
            "maxLength": 120
          },
          "contact": {
            "type": "string",
            "maxLength": 160
          }
        },
        "additionalProperties": true
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "name"
        ],
        "optional": [
          "homepage",
          "domain",
          "statusPage",
          "sourceUrl",
          "category",
          "priority",
          "useCase",
          "requestedBy",
          "contact"
        ],
        "fields": [
          {
            "name": "name",
            "type": "string",
            "required": true,
            "description": "Service name, for example Stripe or Railway.",
            "constraints": {
              "minLength": 2,
              "maxLength": 120
            }
          },
          {
            "name": "homepage",
            "type": "string",
            "required": false,
            "constraints": {
              "format": "uri",
              "maxLength": 300
            }
          },
          {
            "name": "domain",
            "type": "string",
            "required": false,
            "description": "Plain domain if the homepage URL is not known.",
            "constraints": {
              "maxLength": 253
            }
          },
          {
            "name": "statusPage",
            "type": "string",
            "required": false,
            "constraints": {
              "format": "uri",
              "maxLength": 300
            }
          },
          {
            "name": "sourceUrl",
            "type": "string",
            "required": false,
            "description": "Machine-readable status API URL if known.",
            "constraints": {
              "format": "uri",
              "maxLength": 300
            }
          },
          {
            "name": "category",
            "type": "string",
            "required": false,
            "constraints": {
              "maxLength": 64
            }
          },
          {
            "name": "priority",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "low",
                "normal",
                "high",
                "urgent"
              ],
              "default": "normal"
            }
          },
          {
            "name": "useCase",
            "type": "string",
            "required": false,
            "constraints": {
              "maxLength": 1000
            }
          },
          {
            "name": "requestedBy",
            "type": "string",
            "required": false,
            "constraints": {
              "maxLength": 120
            }
          },
          {
            "name": "contact",
            "type": "string",
            "required": false,
            "constraints": {
              "maxLength": 160
            }
          }
        ],
        "additionalProperties": true,
        "example": {
          "name": "Railway",
          "homepage": "https://railway.com",
          "priority": "normal",
          "useCase": "Official deploy status checks."
        }
      },
      "exampleRequest": {
        "name": "Railway",
        "homepage": "https://railway.com",
        "priority": "normal",
        "useCase": "Official deploy status checks."
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "accepted": true,
        "status": "queued",
        "candidate": {
          "normalizedId": "railway",
          "serviceName": "Railway"
        }
      }
    }
  ],
  "endpoints": [
    {
      "key": "x402-inspector",
      "title": "x402 Endpoint Inspector",
      "method": "POST",
      "url": "https://agentbodega.store/api/inspect/x402",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Inspect a URL for x402 payment challenges, payable metadata, discovery links, OpenAPI, MCP, Agent Skills, and Bazaar-readiness signals.",
      "longDescription": "Inspect a URL for x402 payment challenges, payable metadata, discovery links, OpenAPI, MCP, Agent Skills, and Bazaar-readiness signals.\n\nInput: send a JSON request body.\nRequired fields: url.\nOptional fields: method, headers, body, timeoutMs.\n\nAccepted fields:\n- url (required, string): string value. Constraints: format: uri.\n- method (optional, string): string value. Constraints: accepted values: \"GET\", \"HEAD\", \"POST\"; default: \"GET\".\n- headers (optional, object): object value.\n- body (optional, object): object value.\n- timeoutMs (optional, integer): integer value. Constraints: default: 5000; min: 500; max: 8000.\n\nExample request body:\n```json\n{\n  \"url\": \"https://example.com/api/paid\"\n}\n```",
      "category": "x402-tools",
      "kind": "http-json",
      "tags": [
        "x402",
        "inspection",
        "agent-tools",
        "bazaar",
        "openapi"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "method": {
            "type": "string",
            "enum": [
              "GET",
              "HEAD",
              "POST"
            ],
            "default": "GET"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "body": {
            "type": "object",
            "additionalProperties": true
          },
          "timeoutMs": {
            "type": "integer",
            "minimum": 500,
            "maximum": 8000,
            "default": 5000
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "url"
        ],
        "optional": [
          "method",
          "headers",
          "body",
          "timeoutMs"
        ],
        "fields": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "method",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "GET",
                "HEAD",
                "POST"
              ],
              "default": "GET"
            }
          },
          {
            "name": "headers",
            "type": "object",
            "required": false
          },
          {
            "name": "body",
            "type": "object",
            "required": false
          },
          {
            "name": "timeoutMs",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 5000,
              "minimum": 500,
              "maximum": 8000
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://example.com/api/paid"
        }
      },
      "exampleRequest": {
        "url": "https://example.com/api/paid"
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "paymentRequired": true,
        "status": 402,
        "metadataQuality": {
          "score": 100
        },
        "discovery": {
          "x402": {
            "status": 200
          },
          "openapi": {
            "status": 200
          }
        }
      }
    },
    {
      "key": "public-data-catalog",
      "title": "Public Data Catalog",
      "method": "POST",
      "url": "https://agentbodega.store/api/public-data/catalog",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Return AgentBodega's Public Data department offerings grouped by category with full input/output schemas, prices, source paths, and workflow guidance.",
      "longDescription": "Return AgentBodega's Public Data department offerings grouped by category with full input/output schemas, prices, source paths, and workflow guidance.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: query, category, name, includeSchemas, limit.\n\nAccepted fields:\n- query (optional, string): Optional text filter matched against endpoint name, title, category, description, tags, and path.\n- category (optional, string): Optional Public Data department/category to return. Constraints: accepted values: \"catalog\", \"workflow-bundles\", \"cached-results\", \"recurring-monitoring\", \"discovery-verification\", \"data-enrichment\", \"marketplace-listings\", \"real-estate-rentals\", \"ecommerce-products-reviews\", \"health-prices\", \"jobs-hiring\", \"facebook-data\", \"social-video-intelligence\", \"public-records\".\n- name (optional, string): Optional exact endpoint name, such as osha-violations-scraper or marketplace-leads.\n- includeSchemas (optional, boolean): Include each endpoint's full input and output schemas. Constraints: default: true.\n- limit (optional, integer): Maximum number of endpoints to return after filters. Constraints: default: 28; min: 1; max: 50.\n\nExample request body:\n```json\n{\n  \"category\": \"public-records\",\n  \"includeSchemas\": true,\n  \"limit\": 10\n}\n```",
      "category": "public-data",
      "kind": "department-catalog",
      "tags": [
        "public-data-department",
        "public-data",
        "catalog",
        "marketplace-listings",
        "real-estate",
        "ecommerce",
        "facebook-data",
        "jobs",
        "public-records",
        "x402"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Optional text filter matched against endpoint name, title, category, description, tags, and path."
          },
          "category": {
            "type": "string",
            "enum": [
              "catalog",
              "workflow-bundles",
              "cached-results",
              "recurring-monitoring",
              "discovery-verification",
              "data-enrichment",
              "marketplace-listings",
              "real-estate-rentals",
              "ecommerce-products-reviews",
              "health-prices",
              "jobs-hiring",
              "facebook-data",
              "social-video-intelligence",
              "public-records"
            ],
            "description": "Optional Public Data department/category to return."
          },
          "name": {
            "type": "string",
            "description": "Optional exact endpoint name, such as osha-violations-scraper or marketplace-leads."
          },
          "includeSchemas": {
            "type": "boolean",
            "default": true,
            "description": "Include each endpoint's full input and output schemas."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 28,
            "description": "Maximum number of endpoints to return after filters."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "query",
          "category",
          "name",
          "includeSchemas",
          "limit"
        ],
        "fields": [
          {
            "name": "query",
            "type": "string",
            "required": false,
            "description": "Optional text filter matched against endpoint name, title, category, description, tags, and path."
          },
          {
            "name": "category",
            "type": "string",
            "required": false,
            "description": "Optional Public Data department/category to return.",
            "constraints": {
              "enum": [
                "catalog",
                "workflow-bundles",
                "cached-results",
                "recurring-monitoring",
                "discovery-verification",
                "data-enrichment",
                "marketplace-listings",
                "real-estate-rentals",
                "ecommerce-products-reviews",
                "health-prices",
                "jobs-hiring",
                "facebook-data",
                "social-video-intelligence",
                "public-records"
              ]
            }
          },
          {
            "name": "name",
            "type": "string",
            "required": false,
            "description": "Optional exact endpoint name, such as osha-violations-scraper or marketplace-leads."
          },
          {
            "name": "includeSchemas",
            "type": "boolean",
            "required": false,
            "description": "Include each endpoint's full input and output schemas.",
            "constraints": {
              "default": true
            }
          },
          {
            "name": "limit",
            "type": "integer",
            "required": false,
            "description": "Maximum number of endpoints to return after filters.",
            "constraints": {
              "default": 28,
              "minimum": 1,
              "maximum": 50
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "category": "public-records",
          "includeSchemas": true,
          "limit": 10
        }
      },
      "exampleRequest": {
        "category": "public-records",
        "includeSchemas": true,
        "limit": 10
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "source",
          "categories",
          "endpoints"
        ],
        "properties": {
          "source": {
            "type": "object",
            "additionalProperties": true
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "source": {
          "name": "AgentBodega Public Data Department",
          "department": "Public Data"
        },
        "categories": [
          {
            "category": "public-records",
            "count": 3
          }
        ],
        "endpoints": [
          {
            "name": "osha-violations-scraper",
            "category": "public-records",
            "price": {
              "mode": "dynamic"
            }
          }
        ]
      }
    },
    {
      "key": "recreation-gov-availability",
      "title": "Recreation.gov Availability Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/recreation-gov/availability",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Check live Recreation.gov availability for campgrounds, campsites, permits, lotteries, tours, and timed-entry resources over a bounded date range.",
      "longDescription": "Check live Recreation.gov availability for campgrounds, campsites, permits, lotteries, tours, and timed-entry resources over a bounded date range.\n\nInput: send a JSON request body.\nRequired fields: resource, startDate, endDate.\nOptional fields: entityId, entityType, state, isLottery, filters, limit, includeMetadata, proxiesSx.\n\nAccepted fields:\n- resource (required, string): Recreation.gov resource name or canonical URL. Supports campground, campsite, permit, lottery, timed-entry, and tour resources.\n- entityId (optional, string): Optional known Recreation.gov facility, campsite, permit, or timed-entry id. Skips name resolution when supplied.\n- entityType (optional, string): Optional known resource type. URLs usually imply this automatically. Constraints: accepted values: \"campground\", \"campsite\", \"permit\", \"timedentry\", \"timedentry_tour\".\n- state (optional, string): Optional state filter for name resolution, such as CA or California.\n- startDate (required, string): Start date in YYYY-MM-DD. For campgrounds this is the check-in date. Constraints: format: date.\n- endDate (required, string): End date in YYYY-MM-DD. For campgrounds this is the checkout date; returned availability covers nights before checkout. Constraints: format: date.\n- isLottery (optional, boolean): For permits, request lottery quota/application state instead of post-draw/walk-up availability. Constraints: default: false.\n- filters (optional, object): object value. Object accepts: groupSize, siteType, equipment, rvLengthFt, electric, accessibility, petsAllowed, loop, availableOnly.\n- limit (optional, integer): Maximum matching sites, divisions, or slots to return. Constraints: default: 20; min: 1; max: 50.\n- includeMetadata (optional, boolean): For campgrounds/campsites, include site/facility metadata such as equipment, accessibility, pet policy, and fees when available. Constraints: default: true.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"resource\": \"Upper Pines Campground\",\n  \"state\": \"CA\",\n  \"startDate\": \"2026-06-15\",\n  \"endDate\": \"2026-06-19\",\n  \"filters\": {\n    \"siteType\": \"TENT ONLY\",\n    \"groupSize\": 4,\n    \"availableOnly\": true\n  },\n  \"limit\": 5\n}\n```",
      "category": "public-data",
      "kind": "data-job",
      "tags": [
        "recreation.gov",
        "camping",
        "permits",
        "public-data",
        "travel",
        "availability",
        "parks"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "resource",
          "startDate",
          "endDate"
        ],
        "properties": {
          "resource": {
            "type": "string",
            "description": "Recreation.gov resource name or canonical URL. Supports campground, campsite, permit, lottery, timed-entry, and tour resources."
          },
          "entityId": {
            "type": "string",
            "description": "Optional known Recreation.gov facility, campsite, permit, or timed-entry id. Skips name resolution when supplied."
          },
          "entityType": {
            "type": "string",
            "enum": [
              "campground",
              "campsite",
              "permit",
              "timedentry",
              "timedentry_tour"
            ],
            "description": "Optional known resource type. URLs usually imply this automatically."
          },
          "state": {
            "type": "string",
            "description": "Optional state filter for name resolution, such as CA or California."
          },
          "startDate": {
            "type": "string",
            "format": "date",
            "description": "Start date in YYYY-MM-DD. For campgrounds this is the check-in date."
          },
          "endDate": {
            "type": "string",
            "format": "date",
            "description": "End date in YYYY-MM-DD. For campgrounds this is the checkout date; returned availability covers nights before checkout."
          },
          "isLottery": {
            "type": "boolean",
            "default": false,
            "description": "For permits, request lottery quota/application state instead of post-draw/walk-up availability."
          },
          "filters": {
            "type": "object",
            "properties": {
              "groupSize": {
                "type": "integer",
                "minimum": 1
              },
              "siteType": {
                "type": "string",
                "description": "Campground site type filter, such as tent only, RV, group, or standard."
              },
              "equipment": {
                "type": "string",
                "description": "Equipment name to match in permitted equipment, such as RV or tent."
              },
              "rvLengthFt": {
                "type": "integer",
                "minimum": 1
              },
              "electric": {
                "type": "boolean"
              },
              "accessibility": {
                "type": "boolean"
              },
              "petsAllowed": {
                "type": "boolean"
              },
              "loop": {
                "type": "string"
              },
              "availableOnly": {
                "type": "boolean",
                "default": true
              }
            },
            "additionalProperties": false
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 20,
            "description": "Maximum matching sites, divisions, or slots to return."
          },
          "includeMetadata": {
            "type": "boolean",
            "default": true,
            "description": "For campgrounds/campsites, include site/facility metadata such as equipment, accessibility, pet policy, and fees when available."
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "resource",
          "startDate",
          "endDate"
        ],
        "optional": [
          "entityId",
          "entityType",
          "state",
          "isLottery",
          "filters",
          "limit",
          "includeMetadata",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "resource",
            "type": "string",
            "required": true,
            "description": "Recreation.gov resource name or canonical URL. Supports campground, campsite, permit, lottery, timed-entry, and tour resources."
          },
          {
            "name": "entityId",
            "type": "string",
            "required": false,
            "description": "Optional known Recreation.gov facility, campsite, permit, or timed-entry id. Skips name resolution when supplied."
          },
          {
            "name": "entityType",
            "type": "string",
            "required": false,
            "description": "Optional known resource type. URLs usually imply this automatically.",
            "constraints": {
              "enum": [
                "campground",
                "campsite",
                "permit",
                "timedentry",
                "timedentry_tour"
              ]
            }
          },
          {
            "name": "state",
            "type": "string",
            "required": false,
            "description": "Optional state filter for name resolution, such as CA or California."
          },
          {
            "name": "startDate",
            "type": "string",
            "required": true,
            "description": "Start date in YYYY-MM-DD. For campgrounds this is the check-in date.",
            "constraints": {
              "format": "date"
            }
          },
          {
            "name": "endDate",
            "type": "string",
            "required": true,
            "description": "End date in YYYY-MM-DD. For campgrounds this is the checkout date; returned availability covers nights before checkout.",
            "constraints": {
              "format": "date"
            }
          },
          {
            "name": "isLottery",
            "type": "boolean",
            "required": false,
            "description": "For permits, request lottery quota/application state instead of post-draw/walk-up availability.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "filters",
            "type": "object",
            "required": false,
            "fields": [
              {
                "name": "groupSize",
                "type": "integer",
                "required": false,
                "constraints": {
                  "minimum": 1
                }
              },
              {
                "name": "siteType",
                "type": "string",
                "required": false,
                "description": "Campground site type filter, such as tent only, RV, group, or standard."
              },
              {
                "name": "equipment",
                "type": "string",
                "required": false,
                "description": "Equipment name to match in permitted equipment, such as RV or tent."
              },
              {
                "name": "rvLengthFt",
                "type": "integer",
                "required": false,
                "constraints": {
                  "minimum": 1
                }
              },
              {
                "name": "electric",
                "type": "boolean",
                "required": false
              },
              {
                "name": "accessibility",
                "type": "boolean",
                "required": false
              },
              {
                "name": "petsAllowed",
                "type": "boolean",
                "required": false
              },
              {
                "name": "loop",
                "type": "string",
                "required": false
              },
              {
                "name": "availableOnly",
                "type": "boolean",
                "required": false,
                "constraints": {
                  "default": true
                }
              }
            ]
          },
          {
            "name": "limit",
            "type": "integer",
            "required": false,
            "description": "Maximum matching sites, divisions, or slots to return.",
            "constraints": {
              "default": 20,
              "minimum": 1,
              "maximum": 50
            }
          },
          {
            "name": "includeMetadata",
            "type": "boolean",
            "required": false,
            "description": "For campgrounds/campsites, include site/facility metadata such as equipment, accessibility, pet policy, and fees when available.",
            "constraints": {
              "default": true
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "resource": "Upper Pines Campground",
          "state": "CA",
          "startDate": "2026-06-15",
          "endDate": "2026-06-19",
          "filters": {
            "siteType": "TENT ONLY",
            "groupSize": 4,
            "availableOnly": true
          },
          "limit": 5
        }
      },
      "exampleRequest": {
        "resource": "Upper Pines Campground",
        "state": "CA",
        "startDate": "2026-06-15",
        "endDate": "2026-06-19",
        "filters": {
          "siteType": "TENT ONLY",
          "groupSize": 4,
          "availableOnly": true
        },
        "limit": 5
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "kind",
          "requested",
          "resolved",
          "checkedAt"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "campground",
              "campsite",
              "permit",
              "timedentry",
              "timedentry_tour"
            ]
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "resolved": {
            "type": "object",
            "additionalProperties": true
          },
          "sites": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "divisions": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "slots": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "kind": "campground",
        "resolved": {
          "entityId": "232447",
          "entityType": "campground",
          "name": "Upper Pines Campground",
          "state": "CA"
        },
        "dateRange": {
          "checkin": "2026-06-15",
          "checkout": "2026-06-19",
          "nights": 4
        },
        "sites": [
          {
            "campsite_id": "98",
            "site_number": "040",
            "loop": "Upper Pines",
            "campsite_type": "TENT ONLY NONELECTRIC",
            "max_num_people": 6,
            "pets_allowed": "Domestic",
            "availability": {
              "2026-06-15": "Available",
              "2026-06-16": "Available",
              "2026-06-17": "Reserved",
              "2026-06-18": "Available"
            }
          }
        ]
      }
    },
    {
      "key": "browse-craigslist-search-listings",
      "title": "Craigslist Search Listings",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/craigslist/search-listings",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Search Craigslist by city, category, query, and common marketplace filters; returns normalized posting titles, prices, locations, dates, ids, and listing URLs.",
      "longDescription": "Search Craigslist by city, category, query, and common marketplace filters; returns normalized posting titles, prices, locations, dates, ids, and listing URLs.\n\nInput: send a JSON request body.\nRequired fields: city, category, query.\nOptional fields: sort, postal, search_distance, min_price, max_price, min_bedrooms, max_bedrooms, hasPic, bundleDuplicates, limit, proxiesSx.\n\nAccepted fields:\n- city (required, string): Craigslist city subdomain, such as sfbay, newyork, losangeles, seattle, chicago, or boston.\n- category (required, string): Craigslist search category/path abbreviation, such as sss, cta, apa, jjj, or zip.\n- query (required, string): Search text.\n- sort (optional, string): string value. Constraints: accepted values: \"date\", \"rel\", \"priceasc\", \"pricedsc\"; default: \"date\".\n- postal (optional, string): Optional postal code to force geo-scoping when the caller's IP region differs from the target city.\n- search_distance (optional, integer): Optional radius in miles when postal is supplied. Constraints: min: 1; max: 500.\n- min_price (optional, integer): integer value. Constraints: min: 0.\n- max_price (optional, integer): integer value. Constraints: min: 0.\n- min_bedrooms (optional, integer): integer value. Constraints: min: 0.\n- max_bedrooms (optional, integer): integer value. Constraints: min: 0.\n- hasPic (optional, boolean): boolean value.\n- bundleDuplicates (optional, boolean): boolean value.\n- limit (optional, integer): integer value. Constraints: default: 25; min: 1; max: 100.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"city\": \"sfbay\",\n  \"category\": \"sss\",\n  \"query\": \"bicycle\",\n  \"sort\": \"date\",\n  \"postal\": \"94103\",\n  \"search_distance\": 25,\n  \"limit\": 10\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "craigslist",
        "marketplace-listings",
        "classifieds",
        "public-data",
        "search"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "city",
          "category",
          "query"
        ],
        "properties": {
          "city": {
            "type": "string",
            "description": "Craigslist city subdomain, such as sfbay, newyork, losangeles, seattle, chicago, or boston."
          },
          "category": {
            "type": "string",
            "description": "Craigslist search category/path abbreviation, such as sss, cta, apa, jjj, or zip."
          },
          "query": {
            "type": "string",
            "description": "Search text."
          },
          "sort": {
            "type": "string",
            "enum": [
              "date",
              "rel",
              "priceasc",
              "pricedsc"
            ],
            "default": "date"
          },
          "postal": {
            "type": "string",
            "description": "Optional postal code to force geo-scoping when the caller's IP region differs from the target city."
          },
          "search_distance": {
            "type": "integer",
            "minimum": 1,
            "maximum": 500,
            "description": "Optional radius in miles when postal is supplied."
          },
          "min_price": {
            "type": "integer",
            "minimum": 0
          },
          "max_price": {
            "type": "integer",
            "minimum": 0
          },
          "min_bedrooms": {
            "type": "integer",
            "minimum": 0
          },
          "max_bedrooms": {
            "type": "integer",
            "minimum": 0
          },
          "hasPic": {
            "type": "boolean"
          },
          "bundleDuplicates": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "city",
          "category",
          "query"
        ],
        "optional": [
          "sort",
          "postal",
          "search_distance",
          "min_price",
          "max_price",
          "min_bedrooms",
          "max_bedrooms",
          "hasPic",
          "bundleDuplicates",
          "limit",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "city",
            "type": "string",
            "required": true,
            "description": "Craigslist city subdomain, such as sfbay, newyork, losangeles, seattle, chicago, or boston."
          },
          {
            "name": "category",
            "type": "string",
            "required": true,
            "description": "Craigslist search category/path abbreviation, such as sss, cta, apa, jjj, or zip."
          },
          {
            "name": "query",
            "type": "string",
            "required": true,
            "description": "Search text."
          },
          {
            "name": "sort",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "date",
                "rel",
                "priceasc",
                "pricedsc"
              ],
              "default": "date"
            }
          },
          {
            "name": "postal",
            "type": "string",
            "required": false,
            "description": "Optional postal code to force geo-scoping when the caller's IP region differs from the target city."
          },
          {
            "name": "search_distance",
            "type": "integer",
            "required": false,
            "description": "Optional radius in miles when postal is supplied.",
            "constraints": {
              "minimum": 1,
              "maximum": 500
            }
          },
          {
            "name": "min_price",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "max_price",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "min_bedrooms",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "max_bedrooms",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "hasPic",
            "type": "boolean",
            "required": false
          },
          {
            "name": "bundleDuplicates",
            "type": "boolean",
            "required": false
          },
          {
            "name": "limit",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 25,
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "city": "sfbay",
          "category": "sss",
          "query": "bicycle",
          "sort": "date",
          "postal": "94103",
          "search_distance": 25,
          "limit": 10
        }
      },
      "exampleRequest": {
        "city": "sfbay",
        "category": "sss",
        "query": "bicycle",
        "sort": "date",
        "postal": "94103",
        "search_distance": 25,
        "limit": 10
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "craigslist.org",
          "name": "search-listings"
        },
        "total_results": 5635,
        "results": [
          {
            "posting_id": 7927446618,
            "title": "Kryptonite bike chain",
            "price": "$100",
            "location": "san leandro",
            "subarea": "eby",
            "url": "https://sfbay.craigslist.org/eby/bop/d/example/7927446618.html"
          }
        ]
      }
    },
    {
      "key": "browse-abc7-cali-highway-traffic",
      "title": "California Highway Traffic Speeds",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/abc7news/cali-highway-traffic",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Return live California highway speed snapshots from the Sigalert/Total Traffic Network backend used by ABC7 traffic maps, grouped by road and direction.",
      "longDescription": "Return live California highway speed snapshots from the Sigalert/Total Traffic Network backend used by ABC7 traffic maps, grouped by road and direction.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: region, road, direction, minMph, includeIncidents, includeSensors, limit, proxiesSx.\n\nAccepted fields:\n- region (optional, string): Sigalert traffic region. Constraints: accepted values: \"NoCal\", \"SoCal\", \"CenCal\"; default: \"NoCal\".\n- road (optional, string): Optional road/highway filter, such as 101, 580, I-80, or CA-1.\n- direction (optional, string): string value. Constraints: accepted values: \"North\", \"South\", \"East\", \"West\".\n- minMph (optional, integer): Only return sections whose average speed is at or below this MPH. Constraints: min: 0.\n- includeIncidents (optional, boolean): boolean value. Constraints: default: true.\n- includeSensors (optional, boolean): boolean value. Constraints: default: false.\n- limit (optional, integer): integer value. Constraints: default: 100; min: 1; max: 200.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"region\": \"NoCal\",\n  \"road\": \"580\",\n  \"includeIncidents\": true,\n  \"limit\": 20\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "traffic",
        "california",
        "abc7",
        "sigalert",
        "public-data",
        "transportation"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "enum": [
              "NoCal",
              "SoCal",
              "CenCal"
            ],
            "default": "NoCal",
            "description": "Sigalert traffic region."
          },
          "road": {
            "type": "string",
            "description": "Optional road/highway filter, such as 101, 580, I-80, or CA-1."
          },
          "direction": {
            "type": "string",
            "enum": [
              "North",
              "South",
              "East",
              "West"
            ]
          },
          "minMph": {
            "type": "integer",
            "minimum": 0,
            "description": "Only return sections whose average speed is at or below this MPH."
          },
          "includeIncidents": {
            "type": "boolean",
            "default": true
          },
          "includeSensors": {
            "type": "boolean",
            "default": false
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "default": 100
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "region",
          "road",
          "direction",
          "minMph",
          "includeIncidents",
          "includeSensors",
          "limit",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "region",
            "type": "string",
            "required": false,
            "description": "Sigalert traffic region.",
            "constraints": {
              "enum": [
                "NoCal",
                "SoCal",
                "CenCal"
              ],
              "default": "NoCal"
            }
          },
          {
            "name": "road",
            "type": "string",
            "required": false,
            "description": "Optional road/highway filter, such as 101, 580, I-80, or CA-1."
          },
          {
            "name": "direction",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "North",
                "South",
                "East",
                "West"
              ]
            }
          },
          {
            "name": "minMph",
            "type": "integer",
            "required": false,
            "description": "Only return sections whose average speed is at or below this MPH.",
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "includeIncidents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeSensors",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          },
          {
            "name": "limit",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 100,
              "minimum": 1,
              "maximum": 200
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "region": "NoCal",
          "road": "580",
          "includeIncidents": true,
          "limit": 20
        }
      },
      "exampleRequest": {
        "region": "NoCal",
        "road": "580",
        "includeIncidents": true,
        "limit": 20
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "abc7news.com",
          "name": "cali-highway-traffic"
        },
        "region": "NoCal",
        "results": [
          {
            "road_id": "100580",
            "road": "580",
            "direction": "East",
            "avg_mph": 34.2,
            "min_mph": 12,
            "max_mph": 61,
            "sensors": 18
          }
        ]
      }
    },
    {
      "key": "browse-hotpads-find-rentals",
      "title": "HotPads Find Rentals",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/hotpads/find-rentals",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Find HotPads rental listings by resource id, rental category, price, bedrooms, bathrooms, and result limit; returns normalized rental/building records.",
      "longDescription": "Find HotPads rental listings by resource id, rental category, price, bedrooms, bathrooms, and result limit; returns normalized rental/building records.\n\nInput: send a JSON request body.\nRequired fields: resourceId.\nOptional fields: searchSlug, maxPrice, minPrice, bedrooms, bathrooms, orderBy, limit, proxiesSx.\n\nAccepted fields:\n- resourceId (required, string): HotPads resource slug or id, such as san-francisco-ca, new-york-ny, brooklyn-new-york-ny, or 94110-ca.\n- searchSlug (optional, string): Rental search slug, such as apartments-for-rent, houses-for-rent, condos-for-rent, townhomes-for-rent, or rooms-for-rent. Constraints: default: \"apartments-for-rent\".\n- maxPrice (optional, integer): integer value. Constraints: min: 0.\n- minPrice (optional, integer): integer value. Constraints: min: 0.\n- bedrooms (optional, string): Comma-separated bedroom filter accepted by HotPads, such as 1,2,3.\n- bathrooms (optional, string): Comma-separated bathroom filter accepted by HotPads, such as 1,1.5,2.\n- orderBy (optional, string): string value. Constraints: accepted values: \"score\", \"recencyTime\", \"price\"; default: \"score\".\n- limit (optional, integer): integer value. Constraints: default: 25; min: 1; max: 100.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"resourceId\": \"san-francisco-ca\",\n  \"searchSlug\": \"apartments-for-rent\",\n  \"maxPrice\": 4000,\n  \"bedrooms\": \"1,2\",\n  \"limit\": 10\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "hotpads",
        "rentals",
        "real-estate-rentals",
        "apartments",
        "public-data"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "resourceId"
        ],
        "properties": {
          "resourceId": {
            "type": "string",
            "description": "HotPads resource slug or id, such as san-francisco-ca, new-york-ny, brooklyn-new-york-ny, or 94110-ca."
          },
          "searchSlug": {
            "type": "string",
            "default": "apartments-for-rent",
            "description": "Rental search slug, such as apartments-for-rent, houses-for-rent, condos-for-rent, townhomes-for-rent, or rooms-for-rent."
          },
          "maxPrice": {
            "type": "integer",
            "minimum": 0
          },
          "minPrice": {
            "type": "integer",
            "minimum": 0
          },
          "bedrooms": {
            "type": "string",
            "description": "Comma-separated bedroom filter accepted by HotPads, such as 1,2,3."
          },
          "bathrooms": {
            "type": "string",
            "description": "Comma-separated bathroom filter accepted by HotPads, such as 1,1.5,2."
          },
          "orderBy": {
            "type": "string",
            "enum": [
              "score",
              "recencyTime",
              "price"
            ],
            "default": "score"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 25
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "resourceId"
        ],
        "optional": [
          "searchSlug",
          "maxPrice",
          "minPrice",
          "bedrooms",
          "bathrooms",
          "orderBy",
          "limit",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "resourceId",
            "type": "string",
            "required": true,
            "description": "HotPads resource slug or id, such as san-francisco-ca, new-york-ny, brooklyn-new-york-ny, or 94110-ca."
          },
          {
            "name": "searchSlug",
            "type": "string",
            "required": false,
            "description": "Rental search slug, such as apartments-for-rent, houses-for-rent, condos-for-rent, townhomes-for-rent, or rooms-for-rent.",
            "constraints": {
              "default": "apartments-for-rent"
            }
          },
          {
            "name": "maxPrice",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "minPrice",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "bedrooms",
            "type": "string",
            "required": false,
            "description": "Comma-separated bedroom filter accepted by HotPads, such as 1,2,3."
          },
          {
            "name": "bathrooms",
            "type": "string",
            "required": false,
            "description": "Comma-separated bathroom filter accepted by HotPads, such as 1,1.5,2."
          },
          {
            "name": "orderBy",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "score",
                "recencyTime",
                "price"
              ],
              "default": "score"
            }
          },
          {
            "name": "limit",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 25,
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "resourceId": "san-francisco-ca",
          "searchSlug": "apartments-for-rent",
          "maxPrice": 4000,
          "bedrooms": "1,2",
          "limit": 10
        }
      },
      "exampleRequest": {
        "resourceId": "san-francisco-ca",
        "searchSlug": "apartments-for-rent",
        "maxPrice": 4000,
        "bedrooms": "1,2",
        "limit": 10
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "hotpads.com",
          "name": "find-rentals"
        },
        "query": {
          "resource_id": "san-francisco-ca",
          "area_name": "San Francisco",
          "search_slug": "apartments-for-rent"
        },
        "results": [
          {
            "title": "NEMA",
            "street": "8 10th St",
            "city": "San Francisco",
            "state": "CA",
            "rent_min": 3750,
            "rent_max": 7925,
            "url": "https://hotpads.com/example/pad"
          }
        ]
      }
    },
    {
      "key": "browse-medicare-hospital-rating",
      "title": "Medicare.gov Hospital Quality Rating",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/medicare/hospital-rating",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Look up CMS Care Compare hospital quality metadata by CCN, Care Compare URL, or hospital name/state, including overall star rating and selected measure rows.",
      "longDescription": "Look up CMS Care Compare hospital quality metadata by CCN, Care Compare URL, or hospital name/state, including overall star rating and selected measure rows.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: ccn, careCompareUrl, hospitalName, city, state, includeMeasures, compareTo, proxiesSx.\n\nAccepted fields:\n- ccn (optional, string): Six-digit CMS Certification Number/facility id.\n- careCompareUrl (optional, string): Medicare Care Compare hospital detail URL containing the CCN. Constraints: format: uri.\n- hospitalName (optional, string): Hospital/facility name for lookup.\n- city (optional, string): string value.\n- state (optional, string): Two-letter state abbreviation for name lookup.\n- includeMeasures (optional, boolean): boolean value. Constraints: default: true.\n- compareTo (optional, array): Optional extra CCNs to fetch side by side. Constraints: max items: 3.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"ccn\": \"240010\",\n  \"includeMeasures\": true\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "medicare",
        "cms",
        "hospital",
        "healthcare",
        "ratings",
        "public-records",
        "public-data"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ccn": {
            "type": "string",
            "description": "Six-digit CMS Certification Number/facility id."
          },
          "careCompareUrl": {
            "type": "string",
            "format": "uri",
            "description": "Medicare Care Compare hospital detail URL containing the CCN."
          },
          "hospitalName": {
            "type": "string",
            "description": "Hospital/facility name for lookup."
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "description": "Two-letter state abbreviation for name lookup."
          },
          "includeMeasures": {
            "type": "boolean",
            "default": true
          },
          "compareTo": {
            "type": "array",
            "maxItems": 3,
            "items": {
              "type": "string"
            },
            "description": "Optional extra CCNs to fetch side by side."
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "ccn",
          "careCompareUrl",
          "hospitalName",
          "city",
          "state",
          "includeMeasures",
          "compareTo",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "ccn",
            "type": "string",
            "required": false,
            "description": "Six-digit CMS Certification Number/facility id."
          },
          {
            "name": "careCompareUrl",
            "type": "string",
            "required": false,
            "description": "Medicare Care Compare hospital detail URL containing the CCN.",
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "hospitalName",
            "type": "string",
            "required": false,
            "description": "Hospital/facility name for lookup."
          },
          {
            "name": "city",
            "type": "string",
            "required": false
          },
          {
            "name": "state",
            "type": "string",
            "required": false,
            "description": "Two-letter state abbreviation for name lookup."
          },
          {
            "name": "includeMeasures",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "compareTo",
            "type": "array",
            "required": false,
            "description": "Optional extra CCNs to fetch side by side.",
            "constraints": {
              "maxItems": 3
            },
            "items": {
              "type": "string"
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "ccn": "240010",
          "includeMeasures": true
        }
      },
      "exampleRequest": {
        "ccn": "240010",
        "includeMeasures": true
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "medicare.gov",
          "name": "get-hospital-rating"
        },
        "result": {
          "ccn": "240010",
          "facility_name": "MAYO CLINIC HOSPITAL ROCHESTER",
          "state": "MN",
          "overall_rating": "5",
          "measures": {
            "hcahps": [],
            "complications_and_deaths": []
          }
        }
      }
    },
    {
      "key": "browse-realtor-school-rating",
      "title": "Realtor.com School Rating Lookup",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/realtor/school-rating",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Look up Realtor.com school rating data by school URL or school name/city/state, returning GreatSchools rating, grades, enrollment, district, address, and ids.",
      "longDescription": "Look up Realtor.com school rating data by school URL or school name/city/state, returning GreatSchools rating, grades, enrollment, district, address, and ids.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: schoolUrl, schoolName, city, state, includeCatchment, proxiesSx.\n\nAccepted fields:\n- schoolUrl (optional, string): Direct Realtor.com school detail URL. Constraints: format: uri.\n- schoolName (optional, string): School name to resolve through Realtor.com's suggest endpoint.\n- city (optional, string): string value.\n- state (optional, string): string value.\n- includeCatchment (optional, boolean): Include catchment GeoJSON when present. Large polygons are omitted by default. Constraints: default: false.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"schoolName\": \"Sylvia Mendez Elementary\",\n  \"city\": \"Berkeley\",\n  \"state\": \"CA\"\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "realtor",
        "schools",
        "ratings",
        "real-estate",
        "public-data"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "schoolUrl": {
            "type": "string",
            "format": "uri",
            "description": "Direct Realtor.com school detail URL."
          },
          "schoolName": {
            "type": "string",
            "description": "School name to resolve through Realtor.com's suggest endpoint."
          },
          "city": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "includeCatchment": {
            "type": "boolean",
            "default": false,
            "description": "Include catchment GeoJSON when present. Large polygons are omitted by default."
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "schoolUrl",
          "schoolName",
          "city",
          "state",
          "includeCatchment",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "schoolUrl",
            "type": "string",
            "required": false,
            "description": "Direct Realtor.com school detail URL.",
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "schoolName",
            "type": "string",
            "required": false,
            "description": "School name to resolve through Realtor.com's suggest endpoint."
          },
          {
            "name": "city",
            "type": "string",
            "required": false
          },
          {
            "name": "state",
            "type": "string",
            "required": false
          },
          {
            "name": "includeCatchment",
            "type": "boolean",
            "required": false,
            "description": "Include catchment GeoJSON when present. Large polygons are omitted by default.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "schoolName": "Sylvia Mendez Elementary",
          "city": "Berkeley",
          "state": "CA"
        }
      },
      "exampleRequest": {
        "schoolName": "Sylvia Mendez Elementary",
        "city": "Berkeley",
        "state": "CA"
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "realtor.com",
          "name": "get-school-rating"
        },
        "result": {
          "name": "Sylvia Mendez Elementary",
          "school_id": "078571861",
          "great_schools_rating": 7,
          "grades_served": "K-5",
          "enrollment": 379,
          "district": {
            "name": "Berkeley Unified School District"
          }
        }
      }
    },
    {
      "key": "browse-redfin-comparable-sales",
      "title": "Redfin Comparable Sales",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/redfin/comparable-sales",
      "price": {
        "currency": "USD",
        "amount": "0.03"
      },
      "amount": "30000",
      "description": "Return best-effort Redfin recent sold comparable sales for a region or lat/lon search using the public GIS endpoint; returns structured upstream errors if Redfin blocks the Worker IP.",
      "longDescription": "Return best-effort Redfin recent sold comparable sales for a region or lat/lon search using the public GIS endpoint; returns structured upstream errors if Redfin blocks the Worker IP.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: regionId, regionType, market, lat, lon, radiusMiles, soldWithinDays, minPrice, maxPrice, minBeds, maxBeds, minBaths, maxBaths, limit, proxiesSx.\n\nAccepted fields:\n- regionId (optional, string): Redfin region id, such as city id or ZIP region id.\n- regionType (optional, integer): Redfin region type. Common values: 2 for ZIP, 6 for city. Constraints: default: 6.\n- market (optional, string): Redfin market slug, such as sanfrancisco, losangeles, seattle, chicago, newyork, or boston.\n- lat (optional, number): Subject latitude for a bounded-radius polygon search.\n- lon (optional, number): Subject longitude for a bounded-radius polygon search.\n- radiusMiles (optional, number): number value. Constraints: default: 1; min: 0.1; max: 25.\n- soldWithinDays (optional, integer): integer value. Constraints: accepted values: 30, 90, 180, 365, 730, 1095; default: 180.\n- minPrice (optional, integer): integer value. Constraints: min: 0.\n- maxPrice (optional, integer): integer value. Constraints: min: 0.\n- minBeds (optional, integer): integer value. Constraints: min: 0.\n- maxBeds (optional, integer): integer value. Constraints: min: 0.\n- minBaths (optional, number): number value. Constraints: min: 0.\n- maxBaths (optional, number): number value. Constraints: min: 0.\n- limit (optional, integer): integer value. Constraints: default: 10; min: 1; max: 50.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"regionId\": \"17151\",\n  \"regionType\": 6,\n  \"market\": \"sanfrancisco\",\n  \"soldWithinDays\": 180,\n  \"minBeds\": 2,\n  \"limit\": 10\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "redfin",
        "comparable-sales",
        "real-estate",
        "sold-comps",
        "public-data"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "regionId": {
            "type": "string",
            "description": "Redfin region id, such as city id or ZIP region id."
          },
          "regionType": {
            "type": "integer",
            "default": 6,
            "description": "Redfin region type. Common values: 2 for ZIP, 6 for city."
          },
          "market": {
            "type": "string",
            "description": "Redfin market slug, such as sanfrancisco, losangeles, seattle, chicago, newyork, or boston."
          },
          "lat": {
            "type": "number",
            "description": "Subject latitude for a bounded-radius polygon search."
          },
          "lon": {
            "type": "number",
            "description": "Subject longitude for a bounded-radius polygon search."
          },
          "radiusMiles": {
            "type": "number",
            "minimum": 0.1,
            "maximum": 25,
            "default": 1
          },
          "soldWithinDays": {
            "type": "integer",
            "enum": [
              30,
              90,
              180,
              365,
              730,
              1095
            ],
            "default": 180
          },
          "minPrice": {
            "type": "integer",
            "minimum": 0
          },
          "maxPrice": {
            "type": "integer",
            "minimum": 0
          },
          "minBeds": {
            "type": "integer",
            "minimum": 0
          },
          "maxBeds": {
            "type": "integer",
            "minimum": 0
          },
          "minBaths": {
            "type": "number",
            "minimum": 0
          },
          "maxBaths": {
            "type": "number",
            "minimum": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "default": 10
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "regionId",
          "regionType",
          "market",
          "lat",
          "lon",
          "radiusMiles",
          "soldWithinDays",
          "minPrice",
          "maxPrice",
          "minBeds",
          "maxBeds",
          "minBaths",
          "maxBaths",
          "limit",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "regionId",
            "type": "string",
            "required": false,
            "description": "Redfin region id, such as city id or ZIP region id."
          },
          {
            "name": "regionType",
            "type": "integer",
            "required": false,
            "description": "Redfin region type. Common values: 2 for ZIP, 6 for city.",
            "constraints": {
              "default": 6
            }
          },
          {
            "name": "market",
            "type": "string",
            "required": false,
            "description": "Redfin market slug, such as sanfrancisco, losangeles, seattle, chicago, newyork, or boston."
          },
          {
            "name": "lat",
            "type": "number",
            "required": false,
            "description": "Subject latitude for a bounded-radius polygon search."
          },
          {
            "name": "lon",
            "type": "number",
            "required": false,
            "description": "Subject longitude for a bounded-radius polygon search."
          },
          {
            "name": "radiusMiles",
            "type": "number",
            "required": false,
            "constraints": {
              "default": 1,
              "minimum": 0.1,
              "maximum": 25
            }
          },
          {
            "name": "soldWithinDays",
            "type": "integer",
            "required": false,
            "constraints": {
              "enum": [
                30,
                90,
                180,
                365,
                730,
                1095
              ],
              "default": 180
            }
          },
          {
            "name": "minPrice",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "maxPrice",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "minBeds",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "maxBeds",
            "type": "integer",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "minBaths",
            "type": "number",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "maxBaths",
            "type": "number",
            "required": false,
            "constraints": {
              "minimum": 0
            }
          },
          {
            "name": "limit",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 10,
              "minimum": 1,
              "maximum": 50
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "regionId": "17151",
          "regionType": 6,
          "market": "sanfrancisco",
          "soldWithinDays": 180,
          "minBeds": 2,
          "limit": 10
        }
      },
      "exampleRequest": {
        "regionId": "17151",
        "regionType": 6,
        "market": "sanfrancisco",
        "soldWithinDays": 180,
        "minBeds": 2,
        "limit": 10
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "redfin.com",
          "name": "get-comparable-sales"
        },
        "result": {
          "subject": {
            "region_id": "17151",
            "market": "sanfrancisco"
          },
          "comps": [
            {
              "address": "123 Example St",
              "price": 1275000,
              "beds": 3,
              "baths": 2,
              "sqft": 1420,
              "sold_date": "2026-05-15",
              "url": "https://www.redfin.com/example/home/123"
            }
          ]
        }
      }
    },
    {
      "key": "browse-volunteermatch-find-opportunities",
      "title": "VolunteerMatch Find Opportunities",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/volunteermatch/find-opportunities",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Search VolunteerMatch/Idealist opportunities by query, cause, remote/local mode, lat/lon, radius, page, and result limit using the public Idealist Algolia index.",
      "longDescription": "Search VolunteerMatch/Idealist opportunities by query, cause, remote/local mode, lat/lon, radius, page, and result limit using the public Idealist Algolia index.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: query, opportunityUrl, lat, lon, radiusMiles, remote, categories, page, limit, proxiesSx.\n\nAccepted fields:\n- query (optional, string): Search text.\n- opportunityUrl (optional, string): Direct Idealist opportunity URL or legacy VolunteerMatch opportunity URL. Constraints: format: uri.\n- lat (optional, number): number value.\n- lon (optional, number): number value.\n- radiusMiles (optional, number): number value. Constraints: default: 25; min: 1; max: 250.\n- remote (optional, boolean): Filter for remote/virtual opportunities.\n- categories (optional, array): Idealist areasOfFocus values, such as ANIMALS, EDUCATION, HEALTH_MEDICINE, or ENVIRONMENT. Constraints: max items: 8.\n- page (optional, integer): integer value. Constraints: default: 0; min: 0; max: 100.\n- limit (optional, integer): integer value. Constraints: default: 20; min: 1; max: 100.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"query\": \"food bank\",\n  \"lat\": 40.7128,\n  \"lon\": -74.006,\n  \"radiusMiles\": 25,\n  \"categories\": [\n    \"HUNGER_FOOD_SECURITY\"\n  ],\n  \"limit\": 10\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "volunteermatch",
        "idealist",
        "volunteering",
        "opportunities",
        "civic",
        "public-data"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search text."
          },
          "opportunityUrl": {
            "type": "string",
            "format": "uri",
            "description": "Direct Idealist opportunity URL or legacy VolunteerMatch opportunity URL."
          },
          "lat": {
            "type": "number"
          },
          "lon": {
            "type": "number"
          },
          "radiusMiles": {
            "type": "number",
            "minimum": 1,
            "maximum": 250,
            "default": 25
          },
          "remote": {
            "type": "boolean",
            "description": "Filter for remote/virtual opportunities."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 8,
            "description": "Idealist areasOfFocus values, such as ANIMALS, EDUCATION, HEALTH_MEDICINE, or ENVIRONMENT."
          },
          "page": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "default": 0
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 20
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "query",
          "opportunityUrl",
          "lat",
          "lon",
          "radiusMiles",
          "remote",
          "categories",
          "page",
          "limit",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "query",
            "type": "string",
            "required": false,
            "description": "Search text."
          },
          {
            "name": "opportunityUrl",
            "type": "string",
            "required": false,
            "description": "Direct Idealist opportunity URL or legacy VolunteerMatch opportunity URL.",
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "lat",
            "type": "number",
            "required": false
          },
          {
            "name": "lon",
            "type": "number",
            "required": false
          },
          {
            "name": "radiusMiles",
            "type": "number",
            "required": false,
            "constraints": {
              "default": 25,
              "minimum": 1,
              "maximum": 250
            }
          },
          {
            "name": "remote",
            "type": "boolean",
            "required": false,
            "description": "Filter for remote/virtual opportunities."
          },
          {
            "name": "categories",
            "type": "array",
            "required": false,
            "description": "Idealist areasOfFocus values, such as ANIMALS, EDUCATION, HEALTH_MEDICINE, or ENVIRONMENT.",
            "constraints": {
              "maxItems": 8
            },
            "items": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 0,
              "minimum": 0,
              "maximum": 100
            }
          },
          {
            "name": "limit",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 20,
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "query": "food bank",
          "lat": 40.7128,
          "lon": -74.006,
          "radiusMiles": 25,
          "categories": [
            "HUNGER_FOOD_SECURITY"
          ],
          "limit": 10
        }
      },
      "exampleRequest": {
        "query": "food bank",
        "lat": 40.7128,
        "lon": -74.006,
        "radiusMiles": 25,
        "categories": [
          "HUNGER_FOOD_SECURITY"
        ],
        "limit": 10
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "volunteermatch.org",
          "name": "find-opportunities"
        },
        "total": 128,
        "results": [
          {
            "id": "abc123",
            "title": "Pack meals for neighbors",
            "organization": "Example Food Bank",
            "location": {
              "city": "New York",
              "state": "NY"
            },
            "remote": false,
            "url": "https://www.idealist.org/en/volunteer-opportunity/abc123"
          }
        ]
      }
    },
    {
      "key": "browse-weather-gov-forecast",
      "title": "NWS Weather Forecast",
      "method": "POST",
      "url": "https://agentbodega.store/api/browse/weather-gov/forecast",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Return a National Weather Service forecast for a US point by latitude/longitude, ZIP code, or city/state, including current observation, hourly forecast, multi-day periods, alerts, and grid metadata.",
      "longDescription": "Return a National Weather Service forecast for a US point by latitude/longitude, ZIP code, or city/state, including current observation, hourly forecast, multi-day periods, alerts, and grid metadata.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: lat, lon, zip, city, state, location, includeCurrent, includeHourly, includeAlerts, includeOffice, hourlyLimit, dailyLimit, proxiesSx.\n\nAccepted fields:\n- lat (optional, number): Latitude for a US point. Must be paired with lon. Constraints: min: -90; max: 90.\n- lon (optional, number): Longitude for a US point. Must be paired with lat. Constraints: min: -180; max: 180.\n- zip (optional, string): US ZIP code to geocode before querying Weather.gov.\n- city (optional, string): US city name. Pair with state for best geocoding.\n- state (optional, string): US state name or two-letter abbreviation for city lookup.\n- location (optional, string): Free-form US place query when lat/lon, zip, or city/state are not supplied.\n- includeCurrent (optional, boolean): Fetch the nearest station's latest observation. Constraints: default: true.\n- includeHourly (optional, boolean): Fetch the hourly forecast. Constraints: default: true.\n- includeAlerts (optional, boolean): Fetch active watches, warnings, and advisories for the point. Constraints: default: true.\n- includeOffice (optional, boolean): Fetch forecast office metadata such as name, phone, and email. Constraints: default: false.\n- hourlyLimit (optional, integer): Maximum hourly periods to return. Constraints: default: 24; min: 1; max: 72.\n- dailyLimit (optional, integer): Maximum multi-day forecast periods to return. Constraints: default: 14; min: 1; max: 14.\n- proxiesSx (optional, boolean | object): Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers. Object accepts: enabled, country, session, rotation, pool, reason.\n\nExample request body:\n```json\n{\n  \"city\": \"Boulder\",\n  \"state\": \"CO\",\n  \"hourlyLimit\": 24,\n  \"includeAlerts\": true\n}\n```",
      "category": "public-data",
      "kind": "browse-sh-api-skill",
      "tags": [
        "browse-sh",
        "weather.gov",
        "nws",
        "weather",
        "forecast",
        "alerts",
        "public-data"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -90,
            "maximum": 90,
            "description": "Latitude for a US point. Must be paired with lon."
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180,
            "description": "Longitude for a US point. Must be paired with lat."
          },
          "zip": {
            "type": "string",
            "description": "US ZIP code to geocode before querying Weather.gov."
          },
          "city": {
            "type": "string",
            "description": "US city name. Pair with state for best geocoding."
          },
          "state": {
            "type": "string",
            "description": "US state name or two-letter abbreviation for city lookup."
          },
          "location": {
            "type": "string",
            "description": "Free-form US place query when lat/lon, zip, or city/state are not supplied."
          },
          "includeCurrent": {
            "type": "boolean",
            "default": true,
            "description": "Fetch the nearest station's latest observation."
          },
          "includeHourly": {
            "type": "boolean",
            "default": true,
            "description": "Fetch the hourly forecast."
          },
          "includeAlerts": {
            "type": "boolean",
            "default": true,
            "description": "Fetch active watches, warnings, and advisories for the point."
          },
          "includeOffice": {
            "type": "boolean",
            "default": false,
            "description": "Fetch forecast office metadata such as name, phone, and email."
          },
          "hourlyLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 72,
            "default": 24,
            "description": "Maximum hourly periods to return."
          },
          "dailyLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 14,
            "default": 14,
            "description": "Maximum multi-day forecast periods to return."
          },
          "proxiesSx": {
            "type": [
              "boolean",
              "object"
            ],
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "properties": {
              "enabled": {
                "type": "boolean",
                "default": true,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled."
              },
              "country": {
                "type": "string",
                "minLength": 2,
                "maxLength": 2,
                "default": "US",
                "description": "Two-letter country code for the Proxies.sx pool, for example US."
              },
              "session": {
                "type": "string",
                "maxLength": 64,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity."
              },
              "rotation": {
                "type": "string",
                "enum": [
                  "sticky",
                  "hard",
                  "auto5",
                  "auto10",
                  "auto20",
                  "auto60",
                  "ondemand"
                ],
                "default": "sticky",
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP."
              },
              "pool": {
                "type": "string",
                "enum": [
                  "mobile",
                  "residential",
                  "any"
                ],
                "default": "mobile",
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose."
              },
              "reason": {
                "type": "string",
                "maxLength": 160,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress."
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "lat",
          "lon",
          "zip",
          "city",
          "state",
          "location",
          "includeCurrent",
          "includeHourly",
          "includeAlerts",
          "includeOffice",
          "hourlyLimit",
          "dailyLimit",
          "proxiesSx"
        ],
        "fields": [
          {
            "name": "lat",
            "type": "number",
            "required": false,
            "description": "Latitude for a US point. Must be paired with lon.",
            "constraints": {
              "minimum": -90,
              "maximum": 90
            }
          },
          {
            "name": "lon",
            "type": "number",
            "required": false,
            "description": "Longitude for a US point. Must be paired with lat.",
            "constraints": {
              "minimum": -180,
              "maximum": 180
            }
          },
          {
            "name": "zip",
            "type": "string",
            "required": false,
            "description": "US ZIP code to geocode before querying Weather.gov."
          },
          {
            "name": "city",
            "type": "string",
            "required": false,
            "description": "US city name. Pair with state for best geocoding."
          },
          {
            "name": "state",
            "type": "string",
            "required": false,
            "description": "US state name or two-letter abbreviation for city lookup."
          },
          {
            "name": "location",
            "type": "string",
            "required": false,
            "description": "Free-form US place query when lat/lon, zip, or city/state are not supplied."
          },
          {
            "name": "includeCurrent",
            "type": "boolean",
            "required": false,
            "description": "Fetch the nearest station's latest observation.",
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeHourly",
            "type": "boolean",
            "required": false,
            "description": "Fetch the hourly forecast.",
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeAlerts",
            "type": "boolean",
            "required": false,
            "description": "Fetch active watches, warnings, and advisories for the point.",
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeOffice",
            "type": "boolean",
            "required": false,
            "description": "Fetch forecast office metadata such as name, phone, and email.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "hourlyLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum hourly periods to return.",
            "constraints": {
              "default": 24,
              "minimum": 1,
              "maximum": 72
            }
          },
          {
            "name": "dailyLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum multi-day forecast periods to return.",
            "constraints": {
              "default": 14,
              "minimum": 1,
              "maximum": 14
            }
          },
          {
            "name": "proxiesSx",
            "type": "boolean | object",
            "required": false,
            "description": "Optional Proxies.sx egress hint for services that need mobile/residential fetches. Pass true for default US mobile egress, or an object with enabled, country, session, and rotation. Credentials and proxy URLs are never accepted from callers.",
            "fields": [
              {
                "name": "enabled",
                "type": "boolean",
                "required": false,
                "description": "Set false to force direct Worker egress when service-level Proxies.sx default routing is enabled.",
                "constraints": {
                  "default": true
                }
              },
              {
                "name": "country",
                "type": "string",
                "required": false,
                "description": "Two-letter country code for the Proxies.sx pool, for example US.",
                "constraints": {
                  "default": "US",
                  "minLength": 2,
                  "maxLength": 2
                }
              },
              {
                "name": "session",
                "type": "string",
                "required": false,
                "description": "Optional sticky-session key. Use stable, non-secret text when you need repeated calls to keep the same mobile identity.",
                "constraints": {
                  "maxLength": 64
                }
              },
              {
                "name": "rotation",
                "type": "string",
                "required": false,
                "description": "Rotation mode requested from the runner. sticky keeps the same session; hard asks for a fresh mobile IP.",
                "constraints": {
                  "enum": [
                    "sticky",
                    "hard",
                    "auto5",
                    "auto10",
                    "auto20",
                    "auto60",
                    "ondemand"
                  ],
                  "default": "sticky"
                }
              },
              {
                "name": "pool",
                "type": "string",
                "required": false,
                "description": "Optional pool preference. mobile maps to the Proxies.sx mbl pool, residential maps to peer, and any lets the gateway choose.",
                "constraints": {
                  "enum": [
                    "mobile",
                    "residential",
                    "any"
                  ],
                  "default": "mobile"
                }
              },
              {
                "name": "reason",
                "type": "string",
                "required": false,
                "description": "Optional caller note for internal observability, such as blocked-direct-worker-egress.",
                "constraints": {
                  "maxLength": 160
                }
              }
            ]
          }
        ],
        "additionalProperties": false,
        "example": {
          "city": "Boulder",
          "state": "CO",
          "hourlyLimit": 24,
          "includeAlerts": true
        }
      },
      "exampleRequest": {
        "city": "Boulder",
        "state": "CO",
        "hourlyLimit": 24,
        "includeAlerts": true
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "skill",
          "requested",
          "checkedAt"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "skill": {
            "type": "object",
            "additionalProperties": true
          },
          "requested": {
            "type": "object",
            "additionalProperties": true
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": true
            }
          },
          "result": {
            "type": "object",
            "additionalProperties": true
          },
          "upstream": {
            "type": "object",
            "additionalProperties": true
          },
          "checkedAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": true
      },
      "outputExample": {
        "success": true,
        "skill": {
          "source": "weather.gov",
          "name": "NWS Weather Forecast"
        },
        "location": {
          "input": "Boulder, CO",
          "lat": 40.015,
          "lon": -105.2705,
          "relative_location": {
            "city": "Boulder",
            "state": "CO"
          },
          "time_zone": "America/Denver"
        },
        "grid": {
          "wfo": "BOU",
          "gridX": 54,
          "gridY": 74
        },
        "current_observation": {
          "station_id": "KBDU",
          "text_description": "Mostly Cloudy",
          "temperature_f": 71.6
        },
        "forecast_multi_day": [
          {
            "name": "Tonight",
            "temperature": 54,
            "temperature_unit": "F",
            "short_forecast": "Partly Cloudy"
          }
        ],
        "forecast_hourly": [
          {
            "start_time": "2026-07-03T18:00:00-06:00",
            "temperature": 72,
            "temperature_unit": "F",
            "short_forecast": "Sunny"
          }
        ],
        "alerts": []
      }
    },
    {
      "key": "official-status-check",
      "title": "Official Service Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/check",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check one official status page or status API for GitHub, GitLab, deploy platforms, package registries, databases, auth, and AI APIs.",
      "longDescription": "Check one official status page or status API for GitHub, GitLab, deploy platforms, package registries, databases, auth, and AI APIs.\n\nInput: send a JSON request body.\nRequired fields: service.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- service (required, string): Service id from /api/status/catalog, for example github or gitlab.\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"service\": \"github\",\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "utility",
      "tags": [
        "status",
        "github",
        "gitlab",
        "deploy-readiness",
        "incident-response",
        "agent-tools"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "service"
        ],
        "properties": {
          "service": {
            "type": "string",
            "description": "Service id from /api/status/catalog, for example github or gitlab."
          },
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "service"
        ],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "service",
            "type": "string",
            "required": true,
            "description": "Service id from /api/status/catalog, for example github or gitlab."
          },
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "service": "github",
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "service": "github",
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "id": "github",
          "name": "GitHub"
        },
        "ok": true,
        "status": "operational",
        "label": "All Systems Operational",
        "source": {
          "type": "managed-status-source",
          "cached": false,
          "stale": false
        }
      }
    },
    {
      "key": "cloud-status-check",
      "title": "Cloud Provider Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/cloud/status/check",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check one public AWS, Google Cloud, Azure, DigitalOcean, or Linode service/location status source and return a terse agent-ready verdict.",
      "longDescription": "Check one public AWS, Google Cloud, Azure, DigitalOcean, or Linode service/location status source and return a terse agent-ready verdict.\n\nInput: send a JSON request body.\nRequired fields: provider.\nOptional fields: service, product, region, location, includeHistory, includeHealthy, incidentLimit.\n\nAccepted fields:\n- provider (required, string): Cloud provider id. Constraints: accepted values: \"aws\", \"gcp\", \"azure\", \"digitalocean\", \"linode\".\n- service (optional, string): Provider service name or id, for example ec2, lambda, app-service, spaces, droplets, object-storage, or lke.\n- product (optional, string): GCP product name, id, or alias, for example cloud-run, vertex-ai, cloud-sql, or compute-engine.\n- region (optional, string): Provider region/location such as us-east-1, us-central1, eastus, nyc3, us-east-newark, or global.\n- location (optional, string): Provider location alias. Treated the same as region.\n- includeHistory (optional, boolean): Return recent/resolved historical incidents when the provider source exposes them. Constraints: default: false.\n- includeHealthy (optional, boolean): Include healthy/noisy rows. Default responses focus on degraded or relevant incidents. Constraints: default: false.\n- incidentLimit (optional, integer): integer value. Constraints: default: 5; min: 1; max: 20.\n\nExample request body:\n```json\n{\n  \"provider\": \"aws\",\n  \"service\": \"lambda\",\n  \"region\": \"us-east-1\",\n  \"includeHistory\": false\n}\n```",
      "category": "cloud-status",
      "kind": "utility",
      "tags": [
        "status",
        "cloud",
        "aws",
        "gcp",
        "azure",
        "digitalocean",
        "linode",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "provider"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "aws",
              "gcp",
              "azure",
              "digitalocean",
              "linode"
            ],
            "description": "Cloud provider id."
          },
          "service": {
            "type": "string",
            "description": "Provider service name or id, for example ec2, lambda, app-service, spaces, droplets, object-storage, or lke."
          },
          "product": {
            "type": "string",
            "description": "GCP product name, id, or alias, for example cloud-run, vertex-ai, cloud-sql, or compute-engine."
          },
          "region": {
            "type": "string",
            "description": "Provider region/location such as us-east-1, us-central1, eastus, nyc3, us-east-newark, or global."
          },
          "location": {
            "type": "string",
            "description": "Provider location alias. Treated the same as region."
          },
          "includeHistory": {
            "type": "boolean",
            "default": false,
            "description": "Return recent/resolved historical incidents when the provider source exposes them."
          },
          "includeHealthy": {
            "type": "boolean",
            "default": false,
            "description": "Include healthy/noisy rows. Default responses focus on degraded or relevant incidents."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "provider"
        ],
        "optional": [
          "service",
          "product",
          "region",
          "location",
          "includeHistory",
          "includeHealthy",
          "incidentLimit"
        ],
        "fields": [
          {
            "name": "provider",
            "type": "string",
            "required": true,
            "description": "Cloud provider id.",
            "constraints": {
              "enum": [
                "aws",
                "gcp",
                "azure",
                "digitalocean",
                "linode"
              ]
            }
          },
          {
            "name": "service",
            "type": "string",
            "required": false,
            "description": "Provider service name or id, for example ec2, lambda, app-service, spaces, droplets, object-storage, or lke."
          },
          {
            "name": "product",
            "type": "string",
            "required": false,
            "description": "GCP product name, id, or alias, for example cloud-run, vertex-ai, cloud-sql, or compute-engine."
          },
          {
            "name": "region",
            "type": "string",
            "required": false,
            "description": "Provider region/location such as us-east-1, us-central1, eastus, nyc3, us-east-newark, or global."
          },
          {
            "name": "location",
            "type": "string",
            "required": false,
            "description": "Provider location alias. Treated the same as region."
          },
          {
            "name": "includeHistory",
            "type": "boolean",
            "required": false,
            "description": "Return recent/resolved historical incidents when the provider source exposes them.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "includeHealthy",
            "type": "boolean",
            "required": false,
            "description": "Include healthy/noisy rows. Default responses focus on degraded or relevant incidents.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "provider": "aws",
          "service": "lambda",
          "region": "us-east-1",
          "includeHistory": false
        }
      },
      "exampleRequest": {
        "provider": "aws",
        "service": "lambda",
        "region": "us-east-1",
        "includeHistory": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "provider": {
          "id": "aws",
          "name": "AWS"
        },
        "status": "operational",
        "summary": "No broad-impact incident matched the requested unit.",
        "incidents": []
      }
    },
    {
      "key": "cloud-status-summary",
      "title": "Cloud Provider Status Summary",
      "method": "POST",
      "url": "https://agentbodega.store/api/cloud/status/summary",
      "price": {
        "currency": "USD",
        "amount": "0.002"
      },
      "amount": "2000",
      "description": "Summarize public broad-impact incidents for AWS, Google Cloud, Azure, DigitalOcean, Linode, or all providers before an agent retries cloud work.",
      "longDescription": "Summarize public broad-impact incidents for AWS, Google Cloud, Azure, DigitalOcean, Linode, or all providers before an agent retries cloud work.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: provider, includeHistory, includeHealthy, incidentLimit.\n\nAccepted fields:\n- provider (optional, string): string value. Constraints: accepted values: \"aws\", \"gcp\", \"azure\", \"digitalocean\", \"linode\", \"all\"; default: \"all\".\n- includeHistory (optional, boolean): boolean value. Constraints: default: false.\n- includeHealthy (optional, boolean): boolean value. Constraints: default: false.\n- incidentLimit (optional, integer): integer value. Constraints: default: 5; min: 1; max: 20.\n\nExample request body:\n```json\n{\n  \"provider\": \"all\",\n  \"includeHistory\": false\n}\n```",
      "category": "cloud-status",
      "kind": "http-json",
      "tags": [
        "status",
        "cloud",
        "summary",
        "aws",
        "gcp",
        "azure",
        "digitalocean",
        "linode",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string",
            "enum": [
              "aws",
              "gcp",
              "azure",
              "digitalocean",
              "linode",
              "all"
            ],
            "default": "all"
          },
          "includeHistory": {
            "type": "boolean",
            "default": false
          },
          "includeHealthy": {
            "type": "boolean",
            "default": false
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "provider",
          "includeHistory",
          "includeHealthy",
          "incidentLimit"
        ],
        "fields": [
          {
            "name": "provider",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "aws",
                "gcp",
                "azure",
                "digitalocean",
                "linode",
                "all"
              ],
              "default": "all"
            }
          },
          {
            "name": "includeHistory",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          },
          {
            "name": "includeHealthy",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "provider": "all",
          "includeHistory": false
        }
      },
      "exampleRequest": {
        "provider": "all",
        "includeHistory": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "provider": "all",
        "summary": {
          "worstStatus": "operational",
          "checkedProviders": 5
        },
        "incidents": []
      }
    },
    {
      "key": "cloud-status-bundle",
      "title": "Cloud Status Small Bundle",
      "method": "POST",
      "url": "https://agentbodega.store/api/cloud/status/bundle",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Check up to five cloud service/location units, or a curated cloud-provider bundle, without dumping every healthy cloud service.",
      "longDescription": "Check up to five cloud service/location units, or a curated cloud-provider bundle, without dumping every healthy cloud service.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: bundle, targets, includeHistory, includeHealthy.\n\nAccepted fields:\n- bundle (optional, string): string value. Constraints: accepted values: \"cloud-core\", \"aws-webapp\", \"gcp-ai-app\", \"azure-saas\", \"do-core\", \"linode-core\"; default: \"cloud-core\".\n- targets (optional, array): Optional explicit cloud checks. Bundle price covers up to five normalized units. Constraints: min items: 1; max items: 5. Array items accept: provider, service, product, region, location.\n- includeHistory (optional, boolean): boolean value. Constraints: default: false.\n- includeHealthy (optional, boolean): boolean value. Constraints: default: false.\n\nExample request body:\n```json\n{\n  \"bundle\": \"cloud-core\",\n  \"includeHistory\": false\n}\n```",
      "category": "cloud-status",
      "kind": "utility",
      "tags": [
        "status",
        "cloud",
        "bundle",
        "aws",
        "gcp",
        "azure",
        "digitalocean",
        "linode",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "bundle": {
            "type": "string",
            "enum": [
              "cloud-core",
              "aws-webapp",
              "gcp-ai-app",
              "azure-saas",
              "do-core",
              "linode-core"
            ],
            "default": "cloud-core"
          },
          "targets": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "provider"
              ],
              "properties": {
                "provider": {
                  "type": "string",
                  "enum": [
                    "aws",
                    "gcp",
                    "azure",
                    "digitalocean",
                    "linode"
                  ],
                  "description": "Cloud provider id."
                },
                "service": {
                  "type": "string",
                  "description": "Provider service name or id, for example ec2, lambda, app-service, spaces, droplets, object-storage, or lke."
                },
                "product": {
                  "type": "string",
                  "description": "GCP product name, id, or alias, for example cloud-run, vertex-ai, cloud-sql, or compute-engine."
                },
                "region": {
                  "type": "string",
                  "description": "Provider region/location such as us-east-1, us-central1, eastus, nyc3, us-east-newark, or global."
                },
                "location": {
                  "type": "string",
                  "description": "Provider location alias. Treated the same as region."
                }
              },
              "additionalProperties": false
            },
            "minItems": 1,
            "maxItems": 5,
            "description": "Optional explicit cloud checks. Bundle price covers up to five normalized units."
          },
          "includeHistory": {
            "type": "boolean",
            "default": false
          },
          "includeHealthy": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "bundle",
          "targets",
          "includeHistory",
          "includeHealthy"
        ],
        "fields": [
          {
            "name": "bundle",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "cloud-core",
                "aws-webapp",
                "gcp-ai-app",
                "azure-saas",
                "do-core",
                "linode-core"
              ],
              "default": "cloud-core"
            }
          },
          {
            "name": "targets",
            "type": "array",
            "required": false,
            "description": "Optional explicit cloud checks. Bundle price covers up to five normalized units.",
            "constraints": {
              "minItems": 1,
              "maxItems": 5
            },
            "items": {
              "type": "object",
              "required": [
                "provider"
              ],
              "fields": [
                {
                  "name": "provider",
                  "type": "string",
                  "required": true,
                  "description": "Cloud provider id.",
                  "constraints": {
                    "enum": [
                      "aws",
                      "gcp",
                      "azure",
                      "digitalocean",
                      "linode"
                    ]
                  }
                },
                {
                  "name": "service",
                  "type": "string",
                  "required": false,
                  "description": "Provider service name or id, for example ec2, lambda, app-service, spaces, droplets, object-storage, or lke."
                },
                {
                  "name": "product",
                  "type": "string",
                  "required": false,
                  "description": "GCP product name, id, or alias, for example cloud-run, vertex-ai, cloud-sql, or compute-engine."
                },
                {
                  "name": "region",
                  "type": "string",
                  "required": false,
                  "description": "Provider region/location such as us-east-1, us-central1, eastus, nyc3, us-east-newark, or global."
                },
                {
                  "name": "location",
                  "type": "string",
                  "required": false,
                  "description": "Provider location alias. Treated the same as region."
                }
              ]
            }
          },
          {
            "name": "includeHistory",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          },
          {
            "name": "includeHealthy",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "bundle": "cloud-core",
          "includeHistory": false
        }
      },
      "exampleRequest": {
        "bundle": "cloud-core",
        "includeHistory": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "bundle": {
          "id": "cloud-core",
          "units": 4
        },
        "summary": {
          "worstStatus": "operational",
          "degraded": 0
        },
        "results": []
      }
    },
    {
      "key": "cloud-status-stack",
      "title": "Cloud Stack Status Bundle",
      "method": "POST",
      "url": "https://agentbodega.store/api/cloud/status/stack",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Check up to twelve caller-selected cloud service/location units for a stack-wide public status verdict.",
      "longDescription": "Check up to twelve caller-selected cloud service/location units for a stack-wide public status verdict.\n\nInput: send a JSON request body.\nRequired fields: targets.\nOptional fields: includeHistory, includeHealthy.\n\nAccepted fields:\n- targets (required, array): Caller-selected cloud checks. Stack price covers up to twelve normalized units. Constraints: min items: 3; max items: 12. Array items accept: provider, service, product, region, location.\n- includeHistory (optional, boolean): boolean value. Constraints: default: false.\n- includeHealthy (optional, boolean): boolean value. Constraints: default: false.\n\nExample request body:\n```json\n{\n  \"targets\": [\n    {\n      \"provider\": \"aws\",\n      \"service\": \"lambda\",\n      \"region\": \"us-east-1\"\n    },\n    {\n      \"provider\": \"aws\",\n      \"service\": \"s3\",\n      \"region\": \"us-east-1\"\n    },\n    {\n      \"provider\": \"gcp\",\n      \"product\": \"cloud-run\",\n      \"location\": \"us-central1\"\n    },\n    {\n      \"provider\": \"azure\",\n      \"service\": \"app-service\",\n      \"region\": \"eastus\"\n    }\n  ],\n  \"includeHistory\": false\n}\n```",
      "category": "cloud-status",
      "kind": "http-json",
      "tags": [
        "status",
        "cloud",
        "custom-stack",
        "aws",
        "gcp",
        "azure",
        "digitalocean",
        "linode",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "targets"
        ],
        "properties": {
          "targets": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "provider"
              ],
              "properties": {
                "provider": {
                  "type": "string",
                  "enum": [
                    "aws",
                    "gcp",
                    "azure",
                    "digitalocean",
                    "linode"
                  ],
                  "description": "Cloud provider id."
                },
                "service": {
                  "type": "string",
                  "description": "Provider service name or id, for example ec2, lambda, app-service, spaces, droplets, object-storage, or lke."
                },
                "product": {
                  "type": "string",
                  "description": "GCP product name, id, or alias, for example cloud-run, vertex-ai, cloud-sql, or compute-engine."
                },
                "region": {
                  "type": "string",
                  "description": "Provider region/location such as us-east-1, us-central1, eastus, nyc3, us-east-newark, or global."
                },
                "location": {
                  "type": "string",
                  "description": "Provider location alias. Treated the same as region."
                }
              },
              "additionalProperties": false
            },
            "minItems": 3,
            "maxItems": 12,
            "description": "Caller-selected cloud checks. Stack price covers up to twelve normalized units."
          },
          "includeHistory": {
            "type": "boolean",
            "default": false
          },
          "includeHealthy": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "targets"
        ],
        "optional": [
          "includeHistory",
          "includeHealthy"
        ],
        "fields": [
          {
            "name": "targets",
            "type": "array",
            "required": true,
            "description": "Caller-selected cloud checks. Stack price covers up to twelve normalized units.",
            "constraints": {
              "minItems": 3,
              "maxItems": 12
            },
            "items": {
              "type": "object",
              "required": [
                "provider"
              ],
              "fields": [
                {
                  "name": "provider",
                  "type": "string",
                  "required": true,
                  "description": "Cloud provider id.",
                  "constraints": {
                    "enum": [
                      "aws",
                      "gcp",
                      "azure",
                      "digitalocean",
                      "linode"
                    ]
                  }
                },
                {
                  "name": "service",
                  "type": "string",
                  "required": false,
                  "description": "Provider service name or id, for example ec2, lambda, app-service, spaces, droplets, object-storage, or lke."
                },
                {
                  "name": "product",
                  "type": "string",
                  "required": false,
                  "description": "GCP product name, id, or alias, for example cloud-run, vertex-ai, cloud-sql, or compute-engine."
                },
                {
                  "name": "region",
                  "type": "string",
                  "required": false,
                  "description": "Provider region/location such as us-east-1, us-central1, eastus, nyc3, us-east-newark, or global."
                },
                {
                  "name": "location",
                  "type": "string",
                  "required": false,
                  "description": "Provider location alias. Treated the same as region."
                }
              ]
            }
          },
          {
            "name": "includeHistory",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          },
          {
            "name": "includeHealthy",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "targets": [
            {
              "provider": "aws",
              "service": "lambda",
              "region": "us-east-1"
            },
            {
              "provider": "aws",
              "service": "s3",
              "region": "us-east-1"
            },
            {
              "provider": "gcp",
              "product": "cloud-run",
              "location": "us-central1"
            },
            {
              "provider": "azure",
              "service": "app-service",
              "region": "eastus"
            }
          ],
          "includeHistory": false
        }
      },
      "exampleRequest": {
        "targets": [
          {
            "provider": "aws",
            "service": "lambda",
            "region": "us-east-1"
          },
          {
            "provider": "aws",
            "service": "s3",
            "region": "us-east-1"
          },
          {
            "provider": "gcp",
            "product": "cloud-run",
            "location": "us-central1"
          },
          {
            "provider": "azure",
            "service": "app-service",
            "region": "eastus"
          }
        ],
        "includeHistory": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "bundle": {
          "id": "custom-stack",
          "units": 5
        },
        "summary": {
          "worstStatus": "operational",
          "degraded": 0
        },
        "results": []
      }
    },
    {
      "key": "status-bundle-check",
      "title": "Vibe Deploy Readiness Bundle",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/bundle",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Check a bundle of official status sources so an agent can decide whether to deploy, retry, or wait before blaming its own code.",
      "longDescription": "Check a bundle of official status sources so an agent can decide whether to deploy, retry, or wait before blaming its own code.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: bundle, services, includeComponents.\n\nAccepted fields:\n- bundle (optional, string): string value. Constraints: accepted values: \"vibe-deploy-readiness\", \"ai-app-stack\", \"source-and-ci\", \"deploy-platforms\", \"all\"; default: \"vibe-deploy-readiness\".\n- services (optional, array): Optional explicit service ids from /api/status/catalog. Constraints: min items: 1; max items: 20.\n- includeComponents (optional, boolean): boolean value. Constraints: default: false.\n\nExample request body:\n```json\n{\n  \"bundle\": \"vibe-deploy-readiness\",\n  \"includeComponents\": false\n}\n```",
      "category": "agent-utilities",
      "kind": "utility",
      "tags": [
        "status",
        "deploy-readiness",
        "github",
        "gitlab",
        "vercel",
        "supabase",
        "openai"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "bundle": {
            "type": "string",
            "enum": [
              "vibe-deploy-readiness",
              "ai-app-stack",
              "source-and-ci",
              "deploy-platforms",
              "all"
            ],
            "default": "vibe-deploy-readiness"
          },
          "services": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "maxItems": 20,
            "description": "Optional explicit service ids from /api/status/catalog."
          },
          "includeComponents": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "bundle",
          "services",
          "includeComponents"
        ],
        "fields": [
          {
            "name": "bundle",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "vibe-deploy-readiness",
                "ai-app-stack",
                "source-and-ci",
                "deploy-platforms",
                "all"
              ],
              "default": "vibe-deploy-readiness"
            }
          },
          {
            "name": "services",
            "type": "array",
            "required": false,
            "description": "Optional explicit service ids from /api/status/catalog.",
            "constraints": {
              "minItems": 1,
              "maxItems": 20
            },
            "items": {
              "type": "string"
            }
          },
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "bundle": "vibe-deploy-readiness",
          "includeComponents": false
        }
      },
      "exampleRequest": {
        "bundle": "vibe-deploy-readiness",
        "includeComponents": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "bundle": {
          "id": "vibe-deploy-readiness"
        },
        "summary": {
          "status": "operational"
        },
        "results": [
          {
            "service": {
              "id": "github"
            },
            "status": "operational"
          }
        ]
      }
    },
    {
      "key": "status-stack-bundle",
      "title": "Custom Stack Status Bundle",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/stack",
      "price": {
        "currency": "USD",
        "amount": "0.005"
      },
      "amount": "5000",
      "description": "Check a caller-selected stack of official status sources at the stack-bundle price. Repeated stack layers are rejected before payment.",
      "longDescription": "Check a caller-selected stack of official status sources at the stack-bundle price. Repeated stack layers are rejected before payment.\n\nInput: send a JSON request body.\nRequired fields: services.\nOptional fields: includeComponents.\n\nAccepted fields:\n- services (required, array): Service ids from /api/status/catalog. Stack pricing requires at least three stack roles and no repeated capped layer, for example one data layer and one deploy host. Constraints: min items: 3; max items: 20.\n- includeComponents (optional, boolean): boolean value. Constraints: default: false.\n\nExample request body:\n```json\n{\n  \"services\": [\n    \"github\",\n    \"npm\",\n    \"vercel\",\n    \"supabase\",\n    \"openai\"\n  ],\n  \"includeComponents\": false\n}\n```",
      "category": "agent-utilities",
      "kind": "utility",
      "tags": [
        "status",
        "custom-stack",
        "deploy-readiness",
        "github",
        "vercel",
        "supabase",
        "openai"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "services"
        ],
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "minItems": 3,
            "maxItems": 20,
            "description": "Service ids from /api/status/catalog. Stack pricing requires at least three stack roles and no repeated capped layer, for example one data layer and one deploy host."
          },
          "includeComponents": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "services"
        ],
        "optional": [
          "includeComponents"
        ],
        "fields": [
          {
            "name": "services",
            "type": "array",
            "required": true,
            "description": "Service ids from /api/status/catalog. Stack pricing requires at least three stack roles and no repeated capped layer, for example one data layer and one deploy host.",
            "constraints": {
              "minItems": 3,
              "maxItems": 20
            },
            "items": {
              "type": "string"
            }
          },
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "services": [
            "github",
            "npm",
            "vercel",
            "supabase",
            "openai"
          ],
          "includeComponents": false
        }
      },
      "exampleRequest": {
        "services": [
          "github",
          "npm",
          "vercel",
          "supabase",
          "openai"
        ],
        "includeComponents": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "bundle": {
          "id": "vibe-deploy-readiness"
        },
        "summary": {
          "status": "operational"
        },
        "results": [
          {
            "service": {
              "id": "github"
            },
            "status": "operational"
          }
        ]
      }
    },
    {
      "key": "official-status-github",
      "title": "GitHub Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/github",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check GitHub's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check GitHub's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "github",
        "git",
        "ci",
        "packages",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "GitHub Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-gitlab",
      "title": "GitLab Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/gitlab",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check GitLab.com's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check GitLab.com's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "gitlab",
        "git",
        "ci",
        "packages",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "GitLab Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-bitbucket",
      "title": "Bitbucket Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/bitbucket",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Bitbucket's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Bitbucket's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "bitbucket",
        "git",
        "ci",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Bitbucket Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-npm",
      "title": "npm Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/npm",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check npm's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check npm's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "npm",
        "node",
        "packages",
        "registry",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "npm Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-vercel",
      "title": "Vercel Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/vercel",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Vercel's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Vercel's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "vercel",
        "deploy",
        "hosting",
        "nextjs",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Vercel Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-netlify",
      "title": "Netlify Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/netlify",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Netlify's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Netlify's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "netlify",
        "deploy",
        "hosting",
        "functions",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Netlify Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-render",
      "title": "Render Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/render",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Render's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Render's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "render",
        "deploy",
        "hosting",
        "postgres",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Render Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-fly",
      "title": "Fly.io Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/fly",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Fly.io's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Fly.io's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "fly",
        "flyio",
        "deploy",
        "hosting",
        "edge",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Fly.io Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-coinbase",
      "title": "Coinbase Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/coinbase",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Coinbase's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Coinbase's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "coinbase",
        "crypto",
        "payments",
        "wallet",
        "api",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Coinbase Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-cursor",
      "title": "Cursor Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/cursor",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Cursor's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Cursor's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "cursor",
        "ai",
        "editor",
        "ide",
        "developer-tools",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Cursor Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-bambulab",
      "title": "Bambu Lab Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/bambulab",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Bambu Lab's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Bambu Lab's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "bambu-lab",
        "3d-printing",
        "hardware",
        "iot",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Bambu Lab Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-ring",
      "title": "Ring Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/ring",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Ring's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Ring's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "ring",
        "iot",
        "security",
        "camera",
        "smart-home",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Ring Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-cloudflare",
      "title": "Cloudflare Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/cloudflare",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Cloudflare's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Cloudflare's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "cloudflare",
        "dns",
        "cdn",
        "workers",
        "edge",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Cloudflare Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-supabase",
      "title": "Supabase Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/supabase",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Supabase's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Supabase's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "supabase",
        "postgres",
        "auth",
        "storage",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Supabase Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-convex",
      "title": "Convex Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/convex",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Convex's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Convex's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "convex",
        "backend",
        "database",
        "realtime",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Convex Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-clerk",
      "title": "Clerk Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/clerk",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Clerk's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Clerk's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "clerk",
        "auth",
        "identity",
        "sessions",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Clerk Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-openai",
      "title": "OpenAI Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/openai",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check OpenAI's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check OpenAI's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "openai",
        "ai",
        "llm",
        "api",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "OpenAI Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "official-status-anthropic",
      "title": "Anthropic Claude Status Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/status/anthropic",
      "price": {
        "currency": "USD",
        "amount": "0.001"
      },
      "amount": "1000",
      "description": "Check Anthropic Claude's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.",
      "longDescription": "Check Anthropic Claude's official status source for current incidents, component health, and scheduled maintenance before an agent retries, deploys, or escalates.\n\nInput: send a JSON request body.\nRequired fields: none.\nOptional fields: includeComponents, includeIncidentDetails, incidentLimit, component, components.\n\nAccepted fields:\n- includeComponents (optional, boolean): boolean value. Constraints: default: true.\n- includeIncidentDetails (optional, boolean): Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json. Constraints: default: false.\n- incidentLimit (optional, integer): Maximum recent incidents to return when includeIncidentDetails is true. Constraints: default: 5; min: 1; max: 20.\n- component (optional, string): Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government.\n- components (optional, array): Optional component selectors when the caller wants a scoped provider status. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"includeComponents\": true\n}\n```",
      "category": "official-status",
      "kind": "status-alias",
      "tags": [
        "status",
        "anthropic",
        "claude",
        "ai",
        "llm",
        "api",
        "incident-response"
      ],
      "inputSchema": {
        "type": "object",
        "properties": {
          "includeComponents": {
            "type": "boolean",
            "default": true
          },
          "includeIncidentDetails": {
            "type": "boolean",
            "default": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json."
          },
          "incidentLimit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 5,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true."
          },
          "component": {
            "type": "string",
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          "components": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12,
            "description": "Optional component selectors when the caller wants a scoped provider status."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [],
        "optional": [
          "includeComponents",
          "includeIncidentDetails",
          "incidentLimit",
          "component",
          "components"
        ],
        "fields": [
          {
            "name": "includeComponents",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          },
          {
            "name": "includeIncidentDetails",
            "type": "boolean",
            "required": false,
            "description": "Optional deep incident history/timeline fetch. For Status.io providers this parses the public history page; for Statuspage providers it uses /api/v2/incidents.json.",
            "constraints": {
              "default": false
            }
          },
          {
            "name": "incidentLimit",
            "type": "integer",
            "required": false,
            "description": "Maximum recent incidents to return when includeIncidentDetails is true.",
            "constraints": {
              "default": 5,
              "minimum": 1,
              "maximum": 20
            }
          },
          {
            "name": "component",
            "type": "string",
            "required": false,
            "description": "Optional component selector, alias, id, or name. For Anthropic examples: api, code, console, claude-ai, cowork, government."
          },
          {
            "name": "components",
            "type": "array",
            "required": false,
            "description": "Optional component selectors when the caller wants a scoped provider status.",
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "includeComponents": true
        }
      },
      "exampleRequest": {
        "includeComponents": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "service": {
          "name": "Anthropic Claude Status Check"
        },
        "ok": true,
        "status": "operational",
        "recommendation": "No provider incident is visible."
      }
    },
    {
      "key": "domain-launch-check",
      "title": "DNS SSL Email Launch Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/check/domain",
      "price": {
        "currency": "USD",
        "amount": "0.02"
      },
      "amount": "20000",
      "description": "Check a domain's launch basics: DNS resolution, HTTPS reachability, MX, SPF, DMARC, CAA, and optional DKIM selectors.",
      "longDescription": "Check a domain's launch basics: DNS resolution, HTTPS reachability, MX, SPF, DMARC, CAA, and optional DKIM selectors.\n\nInput: send a JSON request body.\nRequired fields: domain.\nOptional fields: dkimSelectors.\n\nAccepted fields:\n- domain (required, string): Domain name to inspect, without a URL scheme. Constraints: min length: 1.\n- dkimSelectors (optional, array): Optional DKIM selectors to check, such as google or selector1. Constraints: max items: 10.\n\nExample request body:\n```json\n{\n  \"domain\": \"example.com\",\n  \"dkimSelectors\": [\n    \"google\",\n    \"selector1\"\n  ]\n}\n```",
      "category": "launch-checks",
      "kind": "utility",
      "tags": [
        "dns",
        "ssl",
        "email",
        "deliverability",
        "launch-check"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "domain"
        ],
        "properties": {
          "domain": {
            "type": "string",
            "minLength": 1,
            "description": "Domain name to inspect, without a URL scheme."
          },
          "dkimSelectors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "description": "Optional DKIM selectors to check, such as google or selector1."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "domain"
        ],
        "optional": [
          "dkimSelectors"
        ],
        "fields": [
          {
            "name": "domain",
            "type": "string",
            "required": true,
            "description": "Domain name to inspect, without a URL scheme.",
            "constraints": {
              "minLength": 1
            }
          },
          {
            "name": "dkimSelectors",
            "type": "array",
            "required": false,
            "description": "Optional DKIM selectors to check, such as google or selector1.",
            "constraints": {
              "maxItems": 10
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "domain": "example.com",
          "dkimSelectors": [
            "google",
            "selector1"
          ]
        }
      },
      "exampleRequest": {
        "domain": "example.com",
        "dkimSelectors": [
          "google",
          "selector1"
        ]
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "domain": "example.com",
        "summary": {
          "status": "pass",
          "score": 92
        },
        "checks": [
          {
            "name": "https",
            "status": "pass"
          },
          {
            "name": "spf",
            "status": "pass"
          }
        ]
      }
    },
    {
      "key": "hosted-artifact",
      "title": "Temporary Hosted Artifact",
      "method": "POST",
      "url": "https://agentbodega.store/api/artifacts",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Create a short-lived signed hosted artifact for agents: text, JSON, SVG badge, or redirect URL. No database required for small artifacts.",
      "longDescription": "Create a short-lived signed hosted artifact for agents: text, JSON, SVG badge, or redirect URL. No database required for small artifacts.\n\nInput: send a JSON request body.\nRequired fields: kind, content.\nOptional fields: contentType, ttlSeconds, filename.\n\nAccepted fields:\n- kind (required, string): string value. Constraints: accepted values: \"text\", \"json\", \"svg\", \"redirect\".\n- content (required, any): Artifact body. Use a string for text, SVG, and redirects, or any JSON value when kind is json.\n- contentType (optional, string): Optional MIME type override.\n- ttlSeconds (optional, integer): Artifact lifetime in seconds. Constraints: default: 86400; min: 60; max: 604800.\n- filename (optional, string): Optional display filename. Constraints: max length: 120.\n\nExample request body:\n```json\n{\n  \"kind\": \"json\",\n  \"content\": {\n    \"ok\": true,\n    \"message\": \"hello agent\"\n  },\n  \"ttlSeconds\": 3600\n}\n```",
      "category": "agent-utilities",
      "kind": "http-json",
      "tags": [
        "artifact-hosting",
        "webhook-bin",
        "signed-url",
        "agent-tools"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "kind",
          "content"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "text",
              "json",
              "svg",
              "redirect"
            ]
          },
          "content": {
            "description": "Artifact body. Use a string for text, SVG, and redirects, or any JSON value when kind is json."
          },
          "contentType": {
            "type": "string",
            "description": "Optional MIME type override."
          },
          "ttlSeconds": {
            "type": "integer",
            "minimum": 60,
            "maximum": 604800,
            "default": 86400,
            "description": "Artifact lifetime in seconds."
          },
          "filename": {
            "type": "string",
            "maxLength": 120,
            "description": "Optional display filename."
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "kind",
          "content"
        ],
        "optional": [
          "contentType",
          "ttlSeconds",
          "filename"
        ],
        "fields": [
          {
            "name": "kind",
            "type": "string",
            "required": true,
            "constraints": {
              "enum": [
                "text",
                "json",
                "svg",
                "redirect"
              ]
            }
          },
          {
            "name": "content",
            "type": "any",
            "required": true,
            "description": "Artifact body. Use a string for text, SVG, and redirects, or any JSON value when kind is json."
          },
          {
            "name": "contentType",
            "type": "string",
            "required": false,
            "description": "Optional MIME type override."
          },
          {
            "name": "ttlSeconds",
            "type": "integer",
            "required": false,
            "description": "Artifact lifetime in seconds.",
            "constraints": {
              "default": 86400,
              "minimum": 60,
              "maximum": 604800
            }
          },
          {
            "name": "filename",
            "type": "string",
            "required": false,
            "description": "Optional display filename.",
            "constraints": {
              "maxLength": 120
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "kind": "json",
          "content": {
            "ok": true,
            "message": "hello agent"
          },
          "ttlSeconds": 3600
        }
      },
      "exampleRequest": {
        "kind": "json",
        "content": {
          "ok": true,
          "message": "hello agent"
        },
        "ttlSeconds": 3600
      },
      "outputSchema": {
        "type": "object",
        "required": [
          "artifactUrl",
          "expiresAt"
        ],
        "properties": {
          "artifactUrl": {
            "type": "string",
            "format": "uri"
          },
          "expiresAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "outputExample": {
        "artifactUrl": "signed hosted URL",
        "expiresAt": "2026-07-04T16:00:00.000Z",
        "bytes": 128
      }
    },
    {
      "key": "agent-launch-audit",
      "title": "Agent Launch Audit",
      "method": "POST",
      "url": "https://agentbodega.store/api/audit/agent-launch",
      "price": {
        "currency": "USD",
        "amount": "0.03"
      },
      "amount": "30000",
      "description": "Audit whether a site or API is ready for AI agents: discoverability, markdown access, OpenAPI, MCP, Agent Skills, x402 commerce, and concrete fix instructions.",
      "longDescription": "Audit whether a site or API is ready for AI agents: discoverability, markdown access, OpenAPI, MCP, Agent Skills, x402 commerce, and concrete fix instructions.\n\nInput: send a JSON request body.\nRequired fields: url.\nOptional fields: siteType, includeEvidence.\n\nAccepted fields:\n- url (required, string): string value. Constraints: format: uri.\n- siteType (optional, string): string value. Constraints: accepted values: \"all\", \"content\", \"api\"; default: \"all\".\n- includeEvidence (optional, boolean): boolean value. Constraints: default: true.\n\nExample request body:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"siteType\": \"all\",\n  \"includeEvidence\": true\n}\n```",
      "category": "agent-readiness",
      "kind": "http-json",
      "tags": [
        "agent-readiness",
        "launch-audit",
        "mcp",
        "agent-skills",
        "x402",
        "seo"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "siteType": {
            "type": "string",
            "enum": [
              "all",
              "content",
              "api"
            ],
            "default": "all"
          },
          "includeEvidence": {
            "type": "boolean",
            "default": true
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "url"
        ],
        "optional": [
          "siteType",
          "includeEvidence"
        ],
        "fields": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "siteType",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "all",
                "content",
                "api"
              ],
              "default": "all"
            }
          },
          {
            "name": "includeEvidence",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://example.com",
          "siteType": "all",
          "includeEvidence": true
        }
      },
      "exampleRequest": {
        "url": "https://example.com",
        "siteType": "all",
        "includeEvidence": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "summary": {
          "score": 86,
          "verdict": "agent-ready with fixes"
        },
        "checks": [
          {
            "name": "OpenAPI",
            "status": "pass"
          },
          {
            "name": "x402 discovery",
            "status": "pass"
          }
        ]
      }
    },
    {
      "key": "agent-discoverability-check",
      "title": "Agent Discoverability Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/check/agent-discoverability",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Check robots.txt, sitemap, Link headers, markdown access, llms.txt, and AI content-signal hints for agent-facing discoverability.",
      "longDescription": "Check robots.txt, sitemap, Link headers, markdown access, llms.txt, and AI content-signal hints for agent-facing discoverability.\n\nInput: send a JSON request body.\nRequired fields: url.\nOptional fields: includeEvidence.\n\nAccepted fields:\n- url (required, string): string value. Constraints: format: uri.\n- includeEvidence (optional, boolean): boolean value. Constraints: default: true.\n\nExample request body:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"includeEvidence\": true\n}\n```",
      "category": "agent-readiness",
      "kind": "utility",
      "tags": [
        "agent-readiness",
        "robots",
        "sitemap",
        "llms",
        "markdown",
        "link-headers"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "includeEvidence": {
            "type": "boolean",
            "default": true
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "url"
        ],
        "optional": [
          "includeEvidence"
        ],
        "fields": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "includeEvidence",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://example.com",
          "includeEvidence": true
        }
      },
      "exampleRequest": {
        "url": "https://example.com",
        "includeEvidence": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "summary": {
          "score": 78
        },
        "checks": [
          {
            "name": "robots.txt",
            "status": "pass"
          },
          {
            "name": "sitemap",
            "status": "pass"
          }
        ]
      }
    },
    {
      "key": "agent-protocol-check",
      "title": "Agent Protocol Discovery Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/check/agent-protocols",
      "price": {
        "currency": "USD",
        "amount": "0.02"
      },
      "amount": "20000",
      "description": "Check OpenAPI, API catalog, MCP server cards, Agent Skills, auth.md, OAuth discovery, OAuth protected-resource metadata, A2A cards, and WebMCP hints.",
      "longDescription": "Check OpenAPI, API catalog, MCP server cards, Agent Skills, auth.md, OAuth discovery, OAuth protected-resource metadata, A2A cards, and WebMCP hints.\n\nInput: send a JSON request body.\nRequired fields: url.\nOptional fields: includeEvidence.\n\nAccepted fields:\n- url (required, string): string value. Constraints: format: uri.\n- includeEvidence (optional, boolean): boolean value. Constraints: default: true.\n\nExample request body:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"includeEvidence\": true\n}\n```",
      "category": "agent-readiness",
      "kind": "utility",
      "tags": [
        "agent-readiness",
        "openapi",
        "mcp",
        "agent-skills",
        "oauth",
        "a2a",
        "webmcp"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "includeEvidence": {
            "type": "boolean",
            "default": true
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "url"
        ],
        "optional": [
          "includeEvidence"
        ],
        "fields": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "includeEvidence",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://example.com",
          "includeEvidence": true
        }
      },
      "exampleRequest": {
        "url": "https://example.com",
        "includeEvidence": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "summary": {
          "score": 82
        },
        "checks": [
          {
            "name": "OpenAPI",
            "status": "pass"
          },
          {
            "name": "MCP card",
            "status": "neutral"
          }
        ]
      }
    },
    {
      "key": "agent-commerce-check",
      "title": "Agent Commerce Check",
      "method": "POST",
      "url": "https://agentbodega.store/api/check/agent-commerce",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Check whether a site exposes machine-payable commerce metadata for x402, MPP-style OpenAPI payment hints, UCP, or ACP.",
      "longDescription": "Check whether a site exposes machine-payable commerce metadata for x402, MPP-style OpenAPI payment hints, UCP, or ACP.\n\nInput: send a JSON request body.\nRequired fields: url.\nOptional fields: includeEvidence.\n\nAccepted fields:\n- url (required, string): string value. Constraints: format: uri.\n- includeEvidence (optional, boolean): boolean value. Constraints: default: true.\n\nExample request body:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"includeEvidence\": true\n}\n```",
      "category": "agent-readiness",
      "kind": "utility",
      "tags": [
        "agent-readiness",
        "x402",
        "mpp",
        "ucp",
        "acp",
        "commerce"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "includeEvidence": {
            "type": "boolean",
            "default": true
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "url"
        ],
        "optional": [
          "includeEvidence"
        ],
        "fields": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "includeEvidence",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": true
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://example.com",
          "includeEvidence": true
        }
      },
      "exampleRequest": {
        "url": "https://example.com",
        "includeEvidence": true
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "summary": {
          "score": 70
        },
        "checks": [
          {
            "name": "x402",
            "status": "pass"
          },
          {
            "name": "payment hints",
            "status": "neutral"
          }
        ]
      }
    },
    {
      "key": "agent-readiness-batch",
      "title": "Agent Readiness Batch Audit",
      "method": "POST",
      "url": "https://agentbodega.store/api/audit/agent-batch",
      "price": {
        "currency": "USD",
        "amount": "0.05"
      },
      "amount": "50000",
      "description": "Run agent-readiness checks across up to five URLs in one paid call and return comparable scores, failures, and concrete next steps.",
      "longDescription": "Run agent-readiness checks across up to five URLs in one paid call and return comparable scores, failures, and concrete next steps.\n\nInput: send a JSON request body.\nRequired fields: urls.\nOptional fields: scope, includeEvidence.\n\nAccepted fields:\n- urls (required, array): array value. Constraints: min items: 1; max items: 5.\n- scope (optional, string): string value. Constraints: accepted values: \"all\", \"discoverability\", \"protocols\", \"commerce\"; default: \"all\".\n- includeEvidence (optional, boolean): boolean value. Constraints: default: false.\n\nExample request body:\n```json\n{\n  \"urls\": [\n    \"https://example.com\",\n    \"https://example.org\"\n  ],\n  \"scope\": \"all\",\n  \"includeEvidence\": false\n}\n```",
      "category": "agent-readiness",
      "kind": "http-json",
      "tags": [
        "agent-readiness",
        "batch-audit",
        "launch-audit",
        "seo",
        "x402"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "urls"
        ],
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            },
            "minItems": 1,
            "maxItems": 5
          },
          "scope": {
            "type": "string",
            "enum": [
              "all",
              "discoverability",
              "protocols",
              "commerce"
            ],
            "default": "all"
          },
          "includeEvidence": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "urls"
        ],
        "optional": [
          "scope",
          "includeEvidence"
        ],
        "fields": [
          {
            "name": "urls",
            "type": "array",
            "required": true,
            "constraints": {
              "minItems": 1,
              "maxItems": 5
            },
            "items": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "all",
                "discoverability",
                "protocols",
                "commerce"
              ],
              "default": "all"
            }
          },
          {
            "name": "includeEvidence",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "urls": [
            "https://example.com",
            "https://example.org"
          ],
          "scope": "all",
          "includeEvidence": false
        }
      },
      "exampleRequest": {
        "urls": [
          "https://example.com",
          "https://example.org"
        ],
        "scope": "all",
        "includeEvidence": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "summary": {
          "compared": 3,
          "best": "example.com"
        },
        "results": [
          {
            "site": "example.com",
            "score": 86
          }
        ]
      }
    },
    {
      "key": "agent-ready-badge",
      "title": "Agent Ready Badge",
      "method": "POST",
      "url": "https://agentbodega.store/api/badge/agent-ready",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Generate an agent-readiness score and SVG badge for a URL using the same checks as the launch audit.",
      "longDescription": "Generate an agent-readiness score and SVG badge for a URL using the same checks as the launch audit.\n\nInput: send a JSON request body.\nRequired fields: url.\nOptional fields: scope, includeEvidence.\n\nAccepted fields:\n- url (required, string): string value. Constraints: format: uri.\n- scope (optional, string): string value. Constraints: accepted values: \"all\", \"discoverability\", \"protocols\", \"commerce\"; default: \"all\".\n- includeEvidence (optional, boolean): boolean value. Constraints: default: false.\n\nExample request body:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"scope\": \"all\",\n  \"includeEvidence\": false\n}\n```",
      "category": "agent-readiness",
      "kind": "http-json",
      "tags": [
        "agent-readiness",
        "badge",
        "svg",
        "launch-audit"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "scope": {
            "type": "string",
            "enum": [
              "all",
              "discoverability",
              "protocols",
              "commerce"
            ],
            "default": "all"
          },
          "includeEvidence": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "url"
        ],
        "optional": [
          "scope",
          "includeEvidence"
        ],
        "fields": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "scope",
            "type": "string",
            "required": false,
            "constraints": {
              "enum": [
                "all",
                "discoverability",
                "protocols",
                "commerce"
              ],
              "default": "all"
            }
          },
          {
            "name": "includeEvidence",
            "type": "boolean",
            "required": false,
            "constraints": {
              "default": false
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://example.com",
          "scope": "all",
          "includeEvidence": false
        }
      },
      "exampleRequest": {
        "url": "https://example.com",
        "scope": "all",
        "includeEvidence": false
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "score": 86,
        "badgeSvg": "<svg>...</svg>",
        "summary": {
          "verdict": "agent-ready"
        }
      }
    },
    {
      "key": "x402-directory-pack",
      "title": "x402 Directory Listing Pack",
      "method": "POST",
      "url": "https://agentbodega.store/api/package/x402-directory",
      "price": {
        "currency": "USD",
        "amount": "0.01"
      },
      "amount": "10000",
      "description": "Build a compact listing payload for x402 directories: service name, discovery links, payment metadata, endpoint counts, tags, and readiness warnings.",
      "longDescription": "Build a compact listing payload for x402 directories: service name, discovery links, payment metadata, endpoint counts, tags, and readiness warnings.\n\nInput: send a JSON request body.\nRequired fields: url.\nOptional fields: name, tags.\n\nAccepted fields:\n- url (required, string): string value. Constraints: format: uri.\n- name (optional, string): string value. Constraints: max length: 80.\n- tags (optional, array): array value. Constraints: max items: 12.\n\nExample request body:\n```json\n{\n  \"url\": \"https://example.com\",\n  \"name\": \"Example x402 API\",\n  \"tags\": [\n    \"x402\",\n    \"agents\"\n  ]\n}\n```",
      "category": "x402-tools",
      "kind": "http-json",
      "tags": [
        "x402",
        "directory-listing",
        "marketplace",
        "bazaar",
        "discovery"
      ],
      "inputSchema": {
        "type": "object",
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "name": {
            "type": "string",
            "maxLength": 80
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "maxItems": 12
          }
        },
        "additionalProperties": false
      },
      "inputContract": {
        "contentType": "application/json",
        "required": [
          "url"
        ],
        "optional": [
          "name",
          "tags"
        ],
        "fields": [
          {
            "name": "url",
            "type": "string",
            "required": true,
            "constraints": {
              "format": "uri"
            }
          },
          {
            "name": "name",
            "type": "string",
            "required": false,
            "constraints": {
              "maxLength": 80
            }
          },
          {
            "name": "tags",
            "type": "array",
            "required": false,
            "constraints": {
              "maxItems": 12
            },
            "items": {
              "type": "string"
            }
          }
        ],
        "additionalProperties": false,
        "example": {
          "url": "https://example.com",
          "name": "Example x402 API",
          "tags": [
            "x402",
            "agents"
          ]
        }
      },
      "exampleRequest": {
        "url": "https://example.com",
        "name": "Example x402 API",
        "tags": [
          "x402",
          "agents"
        ]
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": true
      },
      "outputExample": {
        "listing": {
          "payableResourceCount": 12,
          "score": 91
        },
        "files": [
          {
            "name": "openapi.json"
          },
          {
            "name": "x402 discovery"
          }
        ]
      }
    }
  ]
}