{"openapi":"3.1.0","info":{"title":"Forest Factory API","version":"1.0.0","description":"Machine-readable contract for active Forest paid capabilities. Unsigned paid calls return HTTP 402 with a PAYMENT-REQUIRED x402 challenge."},"servers":[{"url":"https://http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run"}],"components":{"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 v2 signed payment proof. Unsigned requests receive PAYMENT-REQUIRED."}}},"paths":{"/api/discover":{"post":{"operationId":"api.discover","summary":"find the public API for this site","description":"Find API docs, developer portal, candidate base URLs and auth docs.","tags":["api","docs","discovery","discover"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"api.discover","x-forest-price-usd":"0.004","x-price-usd":"0.004","x-forest-next-capabilities":[{"capability":"api.readiness","when":"when one bounded API usability decision is preferred after discovery"},{"capability":"openapi.preflight","when":"when an OpenAPI or Swagger candidate is discovered"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"api.discover","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"site":{"type":"string","description":"Public site value used to scope this lookup."},"api_docs":{"type":"array","description":"Public api docs value used to scope this lookup."},"developer_portals":{"type":"array","description":"Public developer portals value used to scope this lookup."},"auth_docs":{"type":"array","description":"Public auth docs value used to scope this lookup."},"openapi":{"type":"array","description":"Public openapi value used to scope this lookup."},"candidate_base_urls":{"type":"array","description":"Public candidate base urls value used to scope this lookup."}},"required":["site","api_docs","developer_portals","auth_docs","openapi","candidate_base_urls"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/api/readiness":{"post":{"operationId":"api.readiness","summary":"is this public API ready for an agent to use","description":"Compose bounded API discovery with one deterministic OpenAPI or Swagger preflight into a concise agent-readiness state. The check does not authenticate, call discovered API operations, or prove business-level API correctness.","tags":["api","openapi","readiness","discovery"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.006"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"api.readiness","x-forest-price-usd":"0.006","x-price-usd":"0.006","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"openapi_url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public openapi url value used to scope this lookup."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"api.readiness","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"state":{"enum":["ready","partial","blocked","unknown"],"description":"Public state value used to scope this lookup."},"blockers":{"type":"array","items":{"type":"string"},"description":"Public blockers value used to scope this lookup."},"site":{"type":"string","description":"Public site value used to scope this lookup."},"api_docs":{"type":"array","items":{"type":"object"},"description":"Public api docs value used to scope this lookup."},"developer_portals":{"type":"array","items":{"type":"object"},"description":"Public developer portals value used to scope this lookup."},"auth_docs":{"type":"array","items":{"type":"object"},"description":"Public auth docs value used to scope this lookup."},"openapi_candidates":{"type":"array","items":{"type":"string"},"description":"Public openapi candidates value used to scope this lookup."},"selected_openapi_url":{"type":["string","null"],"description":"Public selected openapi url value used to scope this lookup."},"openapi_reachable":{"type":["boolean","null"],"description":"Public openapi reachable value used to scope this lookup."},"openapi_parse_valid":{"type":["boolean","null"],"description":"Public openapi parse valid value used to scope this lookup."},"openapi_version":{"type":["string","null"],"description":"Public openapi version value used to scope this lookup."},"operation_count":{"type":"integer","minimum":0,"description":"Public operation count value used to scope this lookup."},"auth_types":{"type":"array","items":{"type":"string"},"description":"Public auth types value used to scope this lookup."},"servers":{"type":"array","items":{"type":"string"},"description":"Public servers value used to scope this lookup."},"provider_request_count":{"type":"integer","minimum":0,"maximum":11,"description":"Public provider request count value used to scope this lookup."},"provider_request_budget":{"const":11,"description":"Public provider request budget value used to scope this lookup."},"scope":{"const":"bounded_api_discovery_plus_single_openapi_preflight","description":"Public scope value used to scope this lookup."}},"required":["state","blockers","site","api_docs","developer_portals","auth_docs","openapi_candidates","selected_openapi_url","openapi_reachable","openapi_parse_valid","openapi_version","operation_count","auth_types","servers","provider_request_count","provider_request_budget","scope"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/automation/preflight":{"post":{"operationId":"automation.preflight","summary":"can an agent safely prepare to run this paid Apify Actor","description":"Preflight one public Apify Actor before a paid automation run using only public Store and default-build OpenAPI metadata. Forest checks agentic-payment eligibility, pricing/budget signals and top-level input compatibility without starting an Actor, buying credit, authenticating or making an external payment.","tags":["automation","apify","agentic-payment","budget"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"automation.preflight","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"actor":{"type":"string","minLength":3,"maxLength":193,"pattern":"^[A-Za-z0-9][A-Za-z0-9._-]{0,63}[~/][A-Za-z0-9][A-Za-z0-9._-]{0,127}$","description":"Public actor value used to scope this lookup."},"input":{"type":"object","additionalProperties":true,"description":"Public input value used to scope this lookup."},"max_charge_usd":{"type":"number","exclusiveMinimum":0,"maximum":10000,"description":"Public max charge usd value used to scope this lookup."}},"required":["actor"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"automation.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"state":{"enum":["ready","partial","blocked","not_found"],"description":"Public state value used to scope this lookup."},"blockers":{"type":"array","items":{"type":"string"},"description":"Public blockers value used to scope this lookup."},"warnings":{"type":"array","items":{"type":"string"},"description":"Public warnings value used to scope this lookup."},"actor_id":{"type":["string","null"],"description":"Public actor id value used to scope this lookup."},"actor_slug":{"type":"string","description":"Public actor slug value used to scope this lookup."},"title":{"type":["string","null"],"description":"Public actor id value used to scope this lookup."},"summary":{"type":["string","null"],"description":"Public actor id value used to scope this lookup."},"deprecated":{"type":"boolean","description":"Public deprecated value used to scope this lookup."},"notice":{"type":["string","null"],"description":"Public actor id value used to scope this lookup."},"agentic_payment_eligible":{"type":["boolean","null"],"description":"Public agentic payment eligible value used to scope this lookup."},"pricing_model":{"type":["string","null"],"description":"Public actor id value used to scope this lookup."},"minimum_charge_limit_usd":{"type":["number","null"],"description":"Public minimum charge limit usd value used to scope this lookup."},"primary_event_price_usd":{"type":["number","null"],"description":"Public minimum charge limit usd value used to scope this lookup."},"event_prices":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"title":{"type":["string","null"],"description":"Public actor id value used to scope this lookup."},"price_usd":{"type":["number","null"],"description":"Public minimum charge limit usd value used to scope this lookup."},"tiered":{"type":"boolean","description":"Public tiered value used to scope this lookup."},"primary":{"type":"boolean","description":"Public primary value used to scope this lookup."},"one_time":{"type":"boolean","description":"Public one time value used to scope this lookup."}},"required":["name","title","price_usd","tiered","primary","one_time"],"additionalProperties":false},"description":"Public event prices value used to scope this lookup."},"platform_usage_separately_charged":{"type":["boolean","null"],"description":"Public agentic payment eligible value used to scope this lookup."},"max_charge_usd":{"type":["number","null"],"description":"Public minimum charge limit usd value used to scope this lookup."},"budget_compatible":{"type":["boolean","null"],"description":"Public agentic payment eligible value used to scope this lookup."},"estimated_total_charge_usd":{"type":["number","null"],"description":"Public minimum charge limit usd value used to scope this lookup."},"estimated_runtime_seconds":{"type":["number","null"],"description":"Public minimum charge limit usd value used to scope this lookup."},"input_contract_available":{"type":"boolean","description":"Public input contract available value used to scope this lookup."},"required_input_fields":{"type":"array","items":{"type":"string"},"description":"Public required input fields value used to scope this lookup."},"missing_required_fields":{"type":"array","items":{"type":"string"},"description":"Public missing required fields value used to scope this lookup."},"unexpected_fields":{"type":"array","items":{"type":"string"},"description":"Public unexpected fields value used to scope this lookup."},"type_mismatches":{"type":"array","items":{"type":"string"},"description":"Public type mismatches value used to scope this lookup."},"enum_mismatches":{"type":"array","items":{"type":"string"},"description":"Public enum mismatches value used to scope this lookup."},"additional_properties_allowed":{"type":["boolean","null"],"description":"Public agentic payment eligible value used to scope this lookup."},"output_surfaces":{"type":"array","items":{"enum":["actor_output","dataset_items","run_object"]},"description":"Public output surfaces value used to scope this lookup."},"provider_request_count":{"type":"integer","minimum":1,"maximum":2,"description":"Public provider request count value used to scope this lookup."},"provider_request_budget":{"const":2,"description":"Public provider request budget value used to scope this lookup."},"scope":{"const":"public_apify_metadata_only_no_actor_run","description":"Public scope value used to scope this lookup."}},"required":["state","blockers","warnings","actor_id","actor_slug","title","summary","deprecated","notice","agentic_payment_eligible","pricing_model","minimum_charge_limit_usd","primary_event_price_usd","event_prices","platform_usage_separately_charged","max_charge_usd","budget_compatible","estimated_total_charge_usd","estimated_runtime_seconds","input_contract_available","required_input_fields","missing_required_fields","unexpected_fields","type_mismatches","enum_mismatches","additional_properties_allowed","output_surfaces","provider_request_count","provider_request_budget","scope"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/availability":{"post":{"operationId":"commerce.availability","summary":"is this product in stock","description":"Resolve public product or listing availability with explicit normalized states. It reports only provider evidence and never infers inventory, reserves items or places an order.","tags":["commerce","availability"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.availability","x-forest-price-usd":"0.002","x-price-usd":"0.002","x-forest-next-capabilities":[{"capability":"commerce.purchase-preflight","when":"when available inventory should be checked through cart and checkout handoff readiness"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"variant":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.availability","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"available":{"type":["boolean","null"],"description":"Public available value used to scope this lookup."},"status":{"type":"string","description":"Public status value used to scope this lookup."},"requested_variant":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},{"type":"null"}],"description":"Public requested variant value used to scope this lookup."},"resolved_variant":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},{"type":"null"}],"description":"Public resolved variant value used to scope this lookup."},"quantity_known":{"type":"boolean","description":"Public quantity known value used to scope this lookup."},"quantity_available":{"type":["integer","null"],"description":"Public quantity available value used to scope this lookup."},"backorder":{"type":"boolean","description":"Public backorder value used to scope this lookup."}},"required":["available","status","requested_variant","resolved_variant","quantity_known","quantity_available","backorder"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/buyability":{"post":{"operationId":"commerce.buyability","summary":"can I buy this product now","description":"Report whether a public item appears buyable with explicit blockers such as out-of-stock or unknown. This is a preflight only: it never signs in, buys, creates an order or guarantees checkout.","tags":["commerce","buyability"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.buyability","x-forest-price-usd":"0.003","x-price-usd":"0.003","x-forest-next-capabilities":[{"capability":"commerce.purchase-preflight","when":"when a buyable item should be checked through cart and checkout handoff readiness"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"variant":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},"quantity":{"type":"integer","minimum":1,"maximum":100,"description":"Requested item quantity to validate against provider limits."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.buyability","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"buyable":{"type":"boolean","description":"Public buyable value used to scope this lookup."},"blockers":{"type":"array","description":"Public blockers value used to scope this lookup."},"variant_resolved":{"type":"boolean","description":"Public variant resolved value used to scope this lookup."},"available":{"type":"boolean","description":"Public available value used to scope this lookup."},"quantity_allowed":{"type":"boolean","description":"Public quantity allowed value used to scope this lookup."},"purchase_route":{"type":["string","null"],"description":"Public purchase route value used to scope this lookup."}},"required":["buyable","blockers","variant_resolved","available","quantity_allowed","purchase_route"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/canonical-product":{"post":{"operationId":"commerce.canonical-product","summary":"find the canonical product URL","description":"Resolve a public product redirect, canonical URL and stable provider identifiers using bounded HTTP and structured data. It does not execute JavaScript or assert unavailable facts.","tags":["commerce","canonical","product"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.canonical-product","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.canonical-product","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"canonical_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"platform":{"type":["string","null"],"description":"Public platform value used to scope this lookup."},"product_id":{"type":["string","null"],"description":"Public product id value used to scope this lookup."},"variant_id":{"type":["string","null"],"description":"Public provider variant identifier to validate."},"redirected":{"type":"boolean","description":"Public redirected value used to scope this lookup."},"redirect_chain":{"type":"array","description":"Public redirect chain value used to scope this lookup."}},"required":["canonical_url","platform","product_id","variant_id","redirected","redirect_chain"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/cart-preflight":{"post":{"operationId":"commerce.cart-preflight","summary":"can I add this item to a cart","description":"Preflight an item into a fresh isolated commerce session without touching a customer cart. Sessions are ephemeral and payment/order creation is never attempted.","tags":["commerce","cart"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.cart-preflight","x-forest-price-usd":"0.004","x-price-usd":"0.004","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"variant_id":{"type":"string","description":"Public provider variant identifier to validate."},"quantity":{"type":"integer","minimum":1,"maximum":100,"description":"Requested item quantity to validate against provider limits."}},"required":["url","quantity"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.cart-preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"cart_possible":{"type":"boolean","description":"Public cart possible value used to scope this lookup."},"item_accepted":{"type":"boolean","description":"Public item accepted value used to scope this lookup."},"accepted_quantity":{"type":"integer","description":"Public accepted quantity value used to scope this lookup."},"subtotal":{"type":["number","null"],"description":"Public subtotal value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public currency value used to scope this lookup."},"cart_constraints":{"type":"array","description":"Public cart constraints value used to scope this lookup."},"blockers":{"type":"array","description":"Public blockers value used to scope this lookup."}},"required":["cart_possible","item_accepted","accepted_quantity","subtotal","currency","cart_constraints","blockers"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/changed":{"post":{"operationId":"commerce.changed","summary":"has this product listing changed","description":"Cheaply detect material public product changes in price, availability, selected variant or seller using a deterministic hash. Timestamps, images and analytics noise are excluded.","tags":["commerce"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$","description":"Earlier result hash used to detect a material change."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."},"current_summary":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","current_summary"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/checkout-preflight":{"post":{"operationId":"commerce.checkout-preflight","summary":"can this cart reach checkout","description":"Check whether an isolated cart can reach checkout and expose blockers without payment. It never logs in, creates an order or finalizes checkout.","tags":["commerce","checkout"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.checkout-preflight","x-forest-price-usd":"0.005","x-price-usd":"0.005","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"variant_id":{"type":"string","description":"Public provider variant identifier to validate."},"quantity":{"type":"integer","minimum":1,"maximum":100,"description":"Requested item quantity to validate against provider limits."}},"required":["url","quantity"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.checkout-preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"checkout_possible":{"type":"boolean","description":"Public checkout possible value used to scope this lookup."},"checkout_url":{"type":["string","null"],"description":"Public checkout url value used to scope this lookup."},"requires_address":{"type":["boolean","null"],"description":"Public requires address value used to scope this lookup."},"requires_login":{"type":["boolean","null"],"description":"Public requires login value used to scope this lookup."},"payment_not_attempted":{"const":true,"description":"Public payment not attempted value used to scope this lookup."},"blockers":{"type":"array","description":"Public blockers value used to scope this lookup."}},"required":["checkout_possible","checkout_url","requires_address","requires_login","payment_not_attempted","blockers"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/delivery-options":{"post":{"operationId":"commerce.delivery-options","summary":"can this item be delivered to this address","description":"Report public delivery options for an isolated ephemeral cart and destination when the provider exposes them. No customer cart, payment or order is touched.","tags":["commerce","delivery","options"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.006"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.delivery-options","x-forest-price-usd":"0.006","x-price-usd":"0.006","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"variant_id":{"type":"string","description":"Public provider variant identifier to validate."},"quantity":{"type":"integer","minimum":1,"maximum":100,"description":"Requested item quantity to validate against provider limits."},"destination":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["url","quantity","destination"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.delivery-options","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"deliverable":{"type":["boolean","null"],"description":"Public deliverable value used to scope this lookup."},"rates":{"type":"array","description":"Public rates value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public currency value used to scope this lookup."},"cheapest":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},{"type":"null"}],"description":"Public cheapest value used to scope this lookup."},"fastest":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},{"type":"null"}],"description":"Public fastest value used to scope this lookup."},"restrictions":{"type":"array","description":"Public restrictions value used to scope this lookup."},"destination":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["deliverable","rates","currency","cheapest","fastest","restrictions","destination"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/price":{"post":{"operationId":"commerce.price","summary":"what is the current product price","description":"Return a normalized current offer price for a public product or listing. Provider fields missing from the source remain null; no price prediction, purchase or customer authentication is performed.","tags":["commerce","price"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.price","x-forest-price-usd":"0.002","x-price-usd":"0.002","x-forest-next-capabilities":[{"capability":"commerce.purchase-preflight","when":"when the priced item should be checked through cart and checkout handoff readiness"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"variant":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.price","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"price":{"type":["number","null"],"description":"Public price value used to scope this lookup."},"compare_at_price":{"type":["number","null"],"description":"Public compare at price value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public currency value used to scope this lookup."},"price_valid_until":{"type":["string","null"],"description":"Public price valid until value used to scope this lookup."},"offer_count":{"type":"integer","description":"Public offer count value used to scope this lookup."},"evidence":{"type":"array","items":{"type":"string"},"description":"Public evidence value used to scope this lookup."}},"required":["price","compare_at_price","currency","price_valid_until","offer_count","evidence"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/product-identifiers":{"post":{"operationId":"commerce.product-identifiers","summary":"find the product SKU and GTIN","description":"Extract public SKU, GTIN, UPC, EAN, ISBN, MPN and provider identifiers from a product source. Missing identifiers stay null and are never guessed.","tags":["commerce","product","identifiers"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.product-identifiers","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.product-identifiers","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"sku":{"type":["string","null"],"description":"Public sku value used to scope this lookup."},"gtin":{"type":["string","null"],"description":"Public gtin value used to scope this lookup."},"upc":{"type":["string","null"],"description":"Public upc value used to scope this lookup."},"ean":{"type":["string","null"],"description":"Public ean value used to scope this lookup."},"isbn":{"type":["string","null"],"description":"Public isbn value used to scope this lookup."},"mpn":{"type":["string","null"],"description":"Public mpn value used to scope this lookup."},"product_id":{"type":["string","null"],"description":"Public product id value used to scope this lookup."},"variant_id":{"type":["string","null"],"description":"Public provider variant identifier to validate."},"provider_ids":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["sku","gtin","upc","ean","isbn","mpn","product_id","variant_id","provider_ids"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/product-state":{"post":{"operationId":"commerce.product-state","summary":"what is the current product listing","description":"Normalize a public product URL into current title, selected variant, price, currency, availability and buyability. Uses bounded read-only provider responses or JSON-LD; it never buys, logs in or guarantees unpublished stock.","tags":["commerce","product"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.product-state","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.product-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"platform":{"type":["string","null"],"description":"Public platform value used to scope this lookup."},"canonical_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"product_id":{"type":["string","null"],"description":"Public product id value used to scope this lookup."},"title":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"brand":{"type":["string","null"],"description":"Public brand value used to scope this lookup."},"selected_variant":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},{"type":"null"}],"description":"Public selected variant value used to scope this lookup."},"price":{"type":["number","null"],"description":"Public price value used to scope this lookup."},"compare_at_price":{"type":["number","null"],"description":"Public compare at price value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public currency value used to scope this lookup."},"availability":{"enum":["in_stock","out_of_stock","preorder","backorder","limited","discontinued","unknown",null],"description":"Public availability value used to scope this lookup."},"buyable":{"type":["boolean","null"],"description":"Public buyable value used to scope this lookup."},"seller":{"anyOf":[{"type":["string","null"]},{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}],"description":"Public seller value used to scope this lookup."},"identifiers":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},"purchase_route":{"type":["string","null"],"description":"Public purchase route value used to scope this lookup."},"evidence":{"type":"array","items":{"type":"string"},"description":"Public evidence value used to scope this lookup."}},"required":["platform","canonical_url","product_id","title","brand","selected_variant","price","compare_at_price","currency","availability","buyable","seller","identifiers","purchase_route","evidence"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/purchase-preflight":{"post":{"operationId":"commerce.purchase-preflight","summary":"is this item ready to hand off toward checkout","description":"Combine public product resolution, one fresh isolated anonymous cart, optional delivery lookup and checkout handoff evidence into one bounded purchase preflight. Shopify Ajax and WooCommerce Store API are supported; Forest never logs in, touches a customer session, creates an order or attempts payment.","tags":["commerce","purchase","checkout"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.006"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.purchase-preflight","x-forest-price-usd":"0.006","x-price-usd":"0.006","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"quantity":{"type":"integer","minimum":1,"maximum":100,"description":"Requested item quantity to validate against provider limits."},"variant_id":{"type":"string","minLength":1,"maxLength":256,"description":"Public provider variant identifier to validate."},"destination":{"type":"object","properties":{"country":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"Public country value used to scope this lookup."},"postal_code":{"type":"string","minLength":1,"maxLength":32,"description":"Public postal code value used to scope this lookup."}},"required":["country","postal_code"],"additionalProperties":false,"description":"Delivery country and postal code used to quote delivery availability."}},"required":["url","quantity"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.purchase-preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"state":{"enum":["ready","blocked","partial","unsupported"],"description":"Public state value used to scope this lookup."},"blockers":{"type":"array","items":{"type":"string"},"description":"Public blockers value used to scope this lookup."},"platform":{"type":"string","description":"Public platform value used to scope this lookup."},"canonical_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"selected_variant_id":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"requested_quantity":{"type":"integer","minimum":1,"maximum":100,"description":"Public requested quantity value used to scope this lookup."},"accepted_quantity":{"type":["integer","null"],"description":"Public accepted quantity value used to scope this lookup."},"item_price":{"type":["number","null"],"description":"Public item price value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"subtotal":{"type":["number","null"],"description":"Public item price value used to scope this lookup."},"cart_possible":{"type":"boolean","description":"Public cart possible value used to scope this lookup."},"delivery_requested":{"type":"boolean","description":"Public delivery requested value used to scope this lookup."},"delivery_checked":{"type":"boolean","description":"Public delivery checked value used to scope this lookup."},"deliverable":{"type":["boolean","null"],"description":"Public deliverable value used to scope this lookup."},"shipping_option_count":{"type":"integer","minimum":0,"description":"Public shipping option count value used to scope this lookup."},"shipping_options":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"name":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"price":{"type":["number","null"],"description":"Public item price value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"min_delivery_date":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"max_delivery_date":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."}},"required":["name","price","currency","min_delivery_date","max_delivery_date"],"additionalProperties":false},"description":"Public shipping options value used to scope this lookup."},"cheapest_shipping":{"anyOf":[{"type":"object","properties":{"name":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"price":{"type":["number","null"],"description":"Public item price value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"min_delivery_date":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"max_delivery_date":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."}},"required":["name","price","currency","min_delivery_date","max_delivery_date"],"additionalProperties":false},{"type":"null"}],"description":"Public cheapest shipping value used to scope this lookup."},"checkout_possible":{"type":"boolean","description":"Public checkout possible value used to scope this lookup."},"checkout_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"provider_request_count":{"type":"integer","minimum":0,"maximum":4,"description":"Public provider request count value used to scope this lookup."},"payment_not_attempted":{"const":true,"description":"Public payment not attempted value used to scope this lookup."},"order_not_created":{"const":true,"description":"Public order not created value used to scope this lookup."},"customer_session_touched":{"const":false,"description":"Public customer session touched value used to scope this lookup."},"session_scope":{"const":"request_scoped_ephemeral","description":"Public session scope value used to scope this lookup."},"scope":{"const":"anonymous_bounded_preflight_not_purchase_guarantee","description":"Public scope value used to scope this lookup."}},"required":["state","blockers","platform","canonical_url","selected_variant_id","requested_quantity","accepted_quantity","item_price","currency","subtotal","cart_possible","delivery_requested","delivery_checked","deliverable","shipping_option_count","shipping_options","cheapest_shipping","checkout_possible","checkout_url","provider_request_count","payment_not_attempted","order_not_created","customer_session_touched","session_scope","scope"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/quantity-preflight":{"post":{"operationId":"commerce.quantity-preflight","summary":"is this quantity allowed","description":"Check a requested quantity against public variant constraints and known availability. Unknown stock remains unknown; this capability never reserves or purchases inventory.","tags":["commerce","quantity"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.quantity-preflight","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"variant":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},"options":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},"variant_id":{"type":"string","maxLength":256,"description":"Public provider variant identifier to validate."},"quantity":{"type":"integer","minimum":1,"maximum":100,"description":"Requested item quantity to validate against provider limits."},"previous_hash":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$","description":"Earlier result hash used to detect a material change."},"destination":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["url","variant_id","quantity"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.quantity-preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"allowed":{"type":"boolean","description":"Public allowed value used to scope this lookup."},"requested_quantity":{"type":"integer","description":"Public requested quantity value used to scope this lookup."},"min":{"type":["integer","null"],"description":"Public min value used to scope this lookup."},"max":{"type":["integer","null"],"description":"Public max value used to scope this lookup."},"increment":{"type":["integer","null"],"description":"Public increment value used to scope this lookup."},"stock_known":{"type":"boolean","description":"Public stock known value used to scope this lookup."},"available_quantity":{"type":["integer","null"],"description":"Public available quantity value used to scope this lookup."},"blockers":{"type":"array","description":"Public blockers value used to scope this lookup."}},"required":["allowed","requested_quantity","min","max","increment","stock_known","available_quantity","blockers"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/commerce/variant-resolve":{"post":{"operationId":"commerce.variant-resolve","summary":"which product variant matches these options","description":"Resolve requested product options to a canonical public variant when the provider exposes them. Ambiguous or missing options are reported explicitly; no checkout or cart mutation occurs.","tags":["commerce","variant","resolve"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"commerce.variant-resolve","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"options":{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}},"required":["url","options"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"commerce.variant-resolve","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"matched":{"type":"boolean","description":"Public matched value used to scope this lookup."},"variant_id":{"type":["string","null"],"description":"Public provider variant identifier to validate."},"sku":{"type":["string","null"],"description":"Public sku value used to scope this lookup."},"selected_options":{"type":"array","description":"Public selected options value used to scope this lookup."},"available":{"type":["boolean","null"],"description":"Public available value used to scope this lookup."},"price":{"type":["number","null"],"description":"Public price value used to scope this lookup."},"ambiguity":{"type":["string","null"],"description":"Public ambiguity value used to scope this lookup."},"alternatives":{"type":"array","description":"Public alternatives value used to scope this lookup."}},"required":["matched","variant_id","sku","selected_options","available","price","ambiguity","alternatives"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/container/changed":{"post":{"operationId":"container.changed","summary":"has this container image changed","description":"Watch an OCI tag for digest and platform changes with a deterministic hash. Registry timestamps and unrelated annotations are ignored; no layers are pulled.","tags":["container"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"container.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]*(?::\\d+)?(?:/[a-z0-9._-]+)+$","maxLength":512,"description":"Public registry image repository to inspect."},"tag":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."},"previous_hash":{"type":"string","description":"Earlier result hash used to detect a material change."}},"required":["image","tag"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"container.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."},"digest":{"type":["string","null"],"description":"Immutable image digest whose referring artifacts should be listed."},"platforms_summary":{"type":"array","description":"Public platforms summary value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","digest","platforms_summary"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/container/digest":{"post":{"operationId":"container.digest","summary":"what immutable digest does this image use","description":"Resolve a mutable OCI tag to an immutable content digest using bounded Distribution manifest metadata. It does not assert signature or vulnerability status.","tags":["container","digest"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"container.digest","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]*(?::\\d+)?(?:/[a-z0-9._-]+)+$","maxLength":512,"description":"Public registry image repository to inspect."},"tag":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["image","tag"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"container.digest","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"image":{"type":"string","description":"Public registry image repository to inspect."},"tag":{"type":["string","null"],"description":"Mutable image tag whose current state should be resolved."},"digest":{"type":["string","null"],"description":"Immutable image digest whose referring artifacts should be listed."},"immutable":{"type":"boolean","description":"Public immutable value used to scope this lookup."},"media_type":{"type":["string","null"],"description":"Public media type value used to scope this lookup."}},"required":["image","tag","digest","immutable","media_type"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/container/platforms":{"post":{"operationId":"container.platforms","summary":"does this docker image support arm64","description":"Return deterministic OS/architecture variants from an OCI image index or manifest list. It reads bounded manifest metadata only and never downloads image layers.","tags":["container","platforms"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"container.platforms","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]*(?::\\d+)?(?:/[a-z0-9._-]+)+$","maxLength":512,"description":"Public registry image repository to inspect."},"reference":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["image","reference"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"container.platforms","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"manifest_type":{"type":["string","null"],"description":"Public manifest type value used to scope this lookup."},"platforms":{"type":"array","description":"Public platforms value used to scope this lookup."},"multi_arch":{"type":"boolean","description":"Public multi arch value used to scope this lookup."}},"required":["manifest_type","platforms","multi_arch"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/container/referrers":{"post":{"operationId":"container.referrers","summary":"does this image have an SBOM","description":"Discover OCI 1.1 artifacts referring to an image digest, such as SBOM or attestation evidence. Presence is reported only; Forest does not verify signatures or download blobs.","tags":["container","referrers"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"container.referrers","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]*(?::\\d+)?(?:/[a-z0-9._-]+)+$","maxLength":512,"description":"Public registry image repository to inspect."},"digest":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$","description":"Immutable image digest whose referring artifacts should be listed."}},"required":["image","digest"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"container.referrers","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"supported":{"type":"boolean","description":"Public supported value used to scope this lookup."},"referrers":{"type":"array","description":"Public referrers value used to scope this lookup."}},"required":["supported","referrers"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/container/size":{"post":{"operationId":"container.size","summary":"how large is this container image","description":"Return manifest-declared OCI config and layer sizes before an agent pulls an image. Values are registry declarations, not a compressed download or vulnerability measurement.","tags":["container","size"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"container.size","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]*(?::\\d+)?(?:/[a-z0-9._-]+)+$","maxLength":512,"description":"Public registry image repository to inspect."},"reference":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["image","reference"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"container.size","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"digest":{"type":["string","null"],"description":"Immutable image digest whose referring artifacts should be listed."},"config_size":{"type":["integer","null"],"description":"Public config size value used to scope this lookup."},"layer_count":{"type":"integer","description":"Public layer count value used to scope this lookup."},"layer_size":{"type":"integer","description":"Public layer size value used to scope this lookup."},"total_size":{"type":"integer","description":"Public total size value used to scope this lookup."}},"required":["digest","config_size","layer_count","layer_size","total_size"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/container/tag-state":{"post":{"operationId":"container.tag-state","summary":"does this container tag exist","description":"Check an anonymously readable OCI image tag and resolve its manifest digest through the standard Distribution API. No blob pull, push, delete or private registry access is performed.","tags":["container","tag"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"container.tag-state","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","pattern":"^[a-z0-9][a-z0-9._-]*(?::\\d+)?(?:/[a-z0-9._-]+)+$","maxLength":512,"description":"Public registry image repository to inspect."},"tag":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["image","tag"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"container.tag-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"repository_exists":{"type":"boolean","description":"Public repository exists value used to scope this lookup."},"tag_exists":{"type":"boolean","description":"Public tag exists value used to scope this lookup."},"tag":{"type":["string","null"],"description":"Mutable image tag whose current state should be resolved."},"digest":{"type":["string","null"],"description":"Immutable image digest whose referring artifacts should be listed."},"media_type":{"type":["string","null"],"description":"Public media type value used to scope this lookup."},"registry":{"type":"string","description":"Public registry value used to scope this lookup."}},"required":["repository_exists","tag_exists","tag","digest","media_type","registry"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/deploy/readiness":{"post":{"operationId":"deploy.readiness","summary":"is this deployment ready after DNS changed","description":"Compose bounded DNS propagation, TLS validity and HTTP health observations into one conservative deployment-readiness state. Optional DNS change evidence is included when a previous hash is supplied; this is not a deployment guarantee or worldwide propagation claim.","tags":["deployment","dns","tls","http","readiness"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.006"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"deploy.readiness","x-forest-price-usd":"0.006","x-price-usd":"0.006","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hostname":{"type":"string","pattern":"^[a-zA-Z0-9.-]+$","maxLength":253,"description":"Public hostname value used to scope this lookup."},"record_type":{"enum":["A","AAAA","CNAME"],"description":"Public record type value used to scope this lookup."},"expected_answers":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":512},"description":"Public expected answers value used to scope this lookup."},"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_dns_hash":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Public previous dns hash value used to scope this lookup."}},"required":["hostname"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"deploy.readiness","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"hostname":{"type":"string","description":"Public hostname value used to scope this lookup."},"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"record_type":{"type":"string","description":"Public record type value used to scope this lookup."},"state":{"enum":["ready","degraded","blocked","unknown"],"description":"Public state value used to scope this lookup."},"blockers":{"type":"array","items":{"type":"string"},"description":"Public blockers value used to scope this lookup."},"warnings":{"type":"array","items":{"type":"string"},"description":"Public warnings value used to scope this lookup."},"scope":{"const":"bounded_dns_tls_http_observation_only","description":"Public scope value used to scope this lookup."},"checks":{"type":"object","properties":{"dns_propagation":{"type":"object","description":"Public dns propagation value used to scope this lookup."},"tls":{"type":"object","description":"Public tls value used to scope this lookup."},"http":{"type":"object","description":"Public http value used to scope this lookup."},"dns_changed":{"anyOf":[{"type":"object"},{"type":"null"}],"description":"Public dns changed value used to scope this lookup."}},"required":["dns_propagation","tls","http","dns_changed"],"additionalProperties":false,"description":"Public checks value used to scope this lookup."}},"required":["hostname","url","record_type","state","blockers","warnings","scope","checks"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/dns/changed":{"post":{"operationId":"dns.changed","summary":"has this DNS record changed","description":"Detect material public DNS answer changes with a deterministic hash. TTL-only changes do not count and no arbitrary resolver or AXFR operation is exposed.","tags":["dns"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"dns.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-z0-9.-]+$","maxLength":253,"description":"Public DNS hostname to resolve."},"type":{"enum":["A","AAAA","CNAME","MX","NS","TXT"],"description":"DNS record type to query."},"previous_hash":{"type":"string","description":"Earlier result hash used to detect a material change."}},"required":["name","type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"dns.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."},"answers":{"type":"array","description":"Public answers value used to scope this lookup."},"ttl":{"type":["integer","null"],"description":"Public ttl value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","answers","ttl"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/dns/consensus":{"post":{"operationId":"dns.consensus","summary":"do public DNS resolvers agree on this record","description":"Compare one public DNS record type across a fixed bounded set of independent public DNS-over-HTTPS resolvers. Answers, TTL ranges and resolver disagreement are normalized; this is not an authoritative or worldwide DNS view.","tags":["dns","deployment","readiness","consensus"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"dns.consensus","x-forest-price-usd":"0.003","x-price-usd":"0.003","x-forest-next-capabilities":[{"capability":"dns.propagation","when":"when expected DNS answers are known and should be verified"},{"capability":"deploy.readiness","when":"when the next decision is whether a deployment is ready"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hostname":{"type":"string","pattern":"^[a-zA-Z0-9.-]+$","maxLength":253,"description":"Public hostname value used to scope this lookup."},"record_type":{"enum":["A","AAAA","CNAME","MX","NS","TXT"],"description":"Public record type value used to scope this lookup."}},"required":["hostname","record_type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"dns.consensus","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"hostname":{"type":"string","description":"Public hostname value used to scope this lookup."},"record_type":{"type":"string","description":"Public record type value used to scope this lookup."},"resolver_count":{"type":"integer","minimum":1,"maximum":3,"description":"Public resolver count value used to scope this lookup."},"successful_resolvers":{"type":"integer","minimum":0,"maximum":3,"description":"Public successful resolvers value used to scope this lookup."},"failed_resolvers":{"type":"integer","minimum":0,"maximum":3,"description":"Public failed resolvers value used to scope this lookup."},"answer_sets":{"type":"array","items":{"type":"object","properties":{"rcode":{"type":"string","description":"Public rcode value used to scope this lookup."},"answers":{"type":"array","items":{"type":"string"},"description":"Public answers value used to scope this lookup."},"resolvers":{"type":"array","items":{"type":"string"},"description":"Public resolvers value used to scope this lookup."}},"required":["rcode","answers","resolvers"],"additionalProperties":false},"description":"Public answer sets value used to scope this lookup."},"resolvers":{"type":"array","items":{"type":"object","properties":{"resolver":{"type":"string","description":"Public resolver value used to scope this lookup."},"state":{"enum":["ok","error"],"description":"Public state value used to scope this lookup."},"rcode":{"type":["string","null"],"description":"Public rcode value used to scope this lookup."},"answers":{"type":"array","items":{"type":"string"},"description":"Public answers value used to scope this lookup."},"ttl_min":{"type":["integer","null"],"description":"Public ttl min value used to scope this lookup."},"ttl_max":{"type":["integer","null"],"description":"Public ttl min value used to scope this lookup."}},"required":["resolver","state","rcode","answers","ttl_min","ttl_max"],"additionalProperties":false},"description":"Public resolvers value used to scope this lookup."},"state":{"enum":["agreement","disagreement","insufficient_data","unknown"],"description":"Public state value used to scope this lookup."}},"required":["hostname","record_type","resolver_count","successful_resolvers","failed_resolvers","answer_sets","resolvers","state"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/dns/lookup":{"post":{"operationId":"dns.lookup","summary":"what DNS records does this hostname have","description":"Resolve one bounded public DNS record type into normalized answers. AXFR, resolver abuse and private-network probing are blocked; TTL and authority are null when unavailable.","tags":["dns","lookup"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"dns.lookup","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-z0-9.-]+$","maxLength":253,"description":"Public DNS hostname to resolve."},"type":{"enum":["A","AAAA","CNAME","MX","NS","TXT"],"description":"DNS record type to query."}},"required":["name","type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"dns.lookup","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"type":{"type":"string","description":"DNS record type to query."},"answers":{"type":"array","description":"Public answers value used to scope this lookup."},"ttl":{"type":["integer","null"],"description":"Public ttl value used to scope this lookup."},"authoritative_status_if_known":{"type":["string","null"],"description":"Public authoritative status if known value used to scope this lookup."},"rcode":{"type":"string","description":"Public rcode value used to scope this lookup."}},"required":["name","type","answers","ttl","authoritative_status_if_known","rcode"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/dns/propagation":{"post":{"operationId":"dns.propagation","summary":"has this DNS change reached public resolvers","description":"Check whether a DNS change has reached the configured public resolvers. Compare public DoH answers with an optional expected answer set and return complete, partial, not_observed or unknown. Scope is a fixed bounded resolver set; Forest does not claim worldwide propagation.","tags":["dns","deployment","readiness","propagation"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"dns.propagation","x-forest-price-usd":"0.003","x-price-usd":"0.003","x-forest-next-capabilities":[{"capability":"deploy.readiness","when":"when DNS is only one part of the deployment readiness decision"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"hostname":{"type":"string","pattern":"^[a-zA-Z0-9.-]+$","maxLength":253,"description":"Public hostname value used to scope this lookup."},"record_type":{"enum":["A","AAAA","CNAME","MX","NS","TXT"],"description":"Public record type value used to scope this lookup."},"expected_answers":{"type":"array","minItems":1,"maxItems":32,"items":{"type":"string","minLength":1,"maxLength":512},"description":"Public expected answers value used to scope this lookup."}},"required":["hostname","record_type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"dns.propagation","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"hostname":{"type":"string","description":"Public hostname value used to scope this lookup."},"record_type":{"type":"string","description":"Public record type value used to scope this lookup."},"resolver_count":{"type":"integer","minimum":1,"maximum":3,"description":"Public resolver count value used to scope this lookup."},"successful_resolvers":{"type":"integer","minimum":0,"maximum":3,"description":"Public successful resolvers value used to scope this lookup."},"failed_resolvers":{"type":"integer","minimum":0,"maximum":3,"description":"Public failed resolvers value used to scope this lookup."},"answer_sets":{"type":"array","items":{"type":"object","properties":{"rcode":{"type":"string","description":"Public rcode value used to scope this lookup."},"answers":{"type":"array","items":{"type":"string"},"description":"Public answers value used to scope this lookup."},"resolvers":{"type":"array","items":{"type":"string"},"description":"Public resolvers value used to scope this lookup."}},"required":["rcode","answers","resolvers"],"additionalProperties":false},"description":"Public answer sets value used to scope this lookup."},"resolvers":{"type":"array","items":{"type":"object","properties":{"resolver":{"type":"string","description":"Public resolver value used to scope this lookup."},"state":{"enum":["ok","error"],"description":"Public state value used to scope this lookup."},"rcode":{"type":["string","null"],"description":"Public rcode value used to scope this lookup."},"answers":{"type":"array","items":{"type":"string"},"description":"Public answers value used to scope this lookup."},"ttl_min":{"type":["integer","null"],"description":"Public ttl min value used to scope this lookup."},"ttl_max":{"type":["integer","null"],"description":"Public ttl min value used to scope this lookup."}},"required":["resolver","state","rcode","answers","ttl_min","ttl_max"],"additionalProperties":false},"description":"Public resolvers value used to scope this lookup."},"state":{"enum":["complete","partial","not_observed","unknown"],"description":"Public state value used to scope this lookup."},"consensus_state":{"enum":["agreement","disagreement","insufficient_data","unknown"],"description":"Public consensus state value used to scope this lookup."},"expected_answers":{"anyOf":[{"type":"array","items":{"type":"string"}},{"type":"null"}],"description":"Public expected answers value used to scope this lookup."},"matching_resolvers":{"type":"integer","minimum":0,"maximum":3,"description":"Public matching resolvers value used to scope this lookup."},"scope":{"const":"bounded_public_doh_resolvers_only","description":"Public scope value used to scope this lookup."}},"required":["hostname","record_type","resolver_count","successful_resolvers","failed_resolvers","answer_sets","resolvers","state","consensus_state","expected_answers","matching_resolvers","scope"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/docs/discover":{"post":{"operationId":"docs.discover","summary":"find machine-readable documentation for this site","description":"Perform a bounded static discovery pass for machine-usable documentation: llms.txt, Markdown alternates, developer/API/auth docs, OpenAPI/Swagger and MCP candidates. Candidates are returned only after bounded verification. Maximum 10 HTTP requests, no JavaScript, recursive crawl or authenticated content.","tags":["public-data","docs","discover"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"docs.discover","x-forest-price-usd":"0.004","x-price-usd":"0.004","x-forest-next-capabilities":[{"capability":"openapi.preflight","when":"when an OpenAPI or Swagger candidate is discovered"},{"capability":"mcp.preflight","when":"when an MCP endpoint candidate is discovered"},{"capability":"x402.preflight","when":"when an x402 endpoint candidate is discovered"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"intent":{"enum":["any","api","agent","developer"],"description":"Buyer goal used to prioritize documentation candidates."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"docs.discover","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"site":{"type":"string","description":"Public site value used to scope this lookup."},"found":{"type":"boolean","description":"Public found value used to scope this lookup."},"llms_txt":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public llms txt value used to scope this lookup."},"markdown_alternates":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public markdown alternates value used to scope this lookup."},"developer_portals":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public developer portals value used to scope this lookup."},"api_docs":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public api docs value used to scope this lookup."},"openapi":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public openapi value used to scope this lookup."},"swagger":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public swagger value used to scope this lookup."},"auth_docs":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public auth docs value used to scope this lookup."},"mcp":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public mcp value used to scope this lookup."},"other":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"verified":{"const":true,"description":"Public verified value used to scope this lookup."},"evidence":{"type":"string","description":"Public evidence value used to scope this lookup."},"version":{"type":"string","description":"Package version whose public metadata should be checked."}},"required":["url","verified","evidence"],"additionalProperties":false},"description":"Public other value used to scope this lookup."}},"required":["site","found","llms_txt","markdown_alternates","developer_portals","api_docs","openapi","swagger","auth_docs","mcp","other"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/domain/mail-preflight":{"post":{"operationId":"domain.mail-preflight","summary":"is email configured for this domain","description":"MX/SPF/DMARC preflight; not mailbox verification.","tags":["domain","mail","dns"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"domain.mail-preflight","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253,"description":"Public domain name to inspect."}},"required":["domain"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"domain.mail-preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"domain":{"type":"string","description":"Public domain name to inspect."},"mx":{"type":"boolean","description":"Public mx value used to scope this lookup."},"mx_hosts":{"type":"array","description":"Public mx hosts value used to scope this lookup."},"spf":{"type":"boolean","description":"Public spf value used to scope this lookup."},"dmarc":{"type":"boolean","description":"Public dmarc value used to scope this lookup."}},"required":["domain","mx","mx_hosts","spf","dmarc"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/domain/preflight":{"post":{"operationId":"domain.preflight","summary":"is this domain ready to use","description":"Resolve a bare public domain into operational registration, DNS, HTTPS/TLS and mail-policy state using IANA-routed RDAP, DNS, MX/TXT/SPF/DMARC and a bounded TLS probe. No registrant personal data, vulnerability scanning, mailbox existence or deliverability claim. Provider uncertainty is explicit.","tags":["public-data","domain"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"domain.preflight","x-forest-price-usd":"0.003","x-price-usd":"0.003","x-forest-next-capabilities":[{"capability":"dns.consensus","when":"when resolver agreement matters before a deployment decision"},{"capability":"dns.propagation","when":"when checking whether an expected DNS change is visible yet"},{"capability":"deploy.readiness","when":"when DNS, TLS and HTTP readiness should be checked together"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":253,"description":"Bare DNS domain name, not a URL, path, IP address or email."}},"required":["domain"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"domain.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"domain":{"type":"string","description":"Public domain name to inspect."},"registered":{"type":["boolean","null"],"description":"Public registered value used to scope this lookup."},"registration":{"type":["object","null"],"properties":{"registrar":{"type":["string","null"],"description":"Public registrar value used to scope this lookup."},"created_at":{"type":["string","null"],"description":"Public registrar value used to scope this lookup."},"expires_at":{"type":["string","null"],"description":"Public registrar value used to scope this lookup."},"statuses":{"type":"array","items":{"type":"string"},"description":"Public statuses value used to scope this lookup."}},"required":["registrar","created_at","expires_at","statuses"],"additionalProperties":false,"description":"Public registration value used to scope this lookup."},"dns":{"type":"object","properties":{"resolves":{"type":"boolean","description":"Public resolves value used to scope this lookup."},"a":{"type":"boolean","description":"Public a value used to scope this lookup."},"aaaa":{"type":"boolean","description":"Public aaaa value used to scope this lookup."},"nameservers":{"type":"array","items":{"type":"string"},"description":"Public nameservers value used to scope this lookup."}},"required":["resolves","a","aaaa","nameservers"],"additionalProperties":false,"description":"Public dns value used to scope this lookup."},"https":{"type":"object","properties":{"reachable":{"type":"boolean","description":"Public reachable value used to scope this lookup."},"tls_present":{"type":"boolean","description":"Public tls present value used to scope this lookup."},"valid_certificate":{"type":"boolean","description":"Public valid certificate value used to scope this lookup."},"expires_at":{"type":["string","null"],"description":"Public registrar value used to scope this lookup."},"redirect_target":{"type":["string","null"],"description":"Public registrar value used to scope this lookup."}},"required":["reachable","tls_present","valid_certificate","expires_at","redirect_target"],"additionalProperties":false,"description":"Public https value used to scope this lookup."},"mail":{"type":"object","properties":{"mx":{"type":"boolean","description":"Public mx value used to scope this lookup."},"mx_hosts":{"type":"array","items":{"type":"string"},"description":"Public mx hosts value used to scope this lookup."},"spf":{"type":"boolean","description":"Public spf value used to scope this lookup."},"dmarc":{"type":"boolean","description":"Public dmarc value used to scope this lookup."}},"required":["mx","mx_hosts","spf","dmarc"],"additionalProperties":false,"description":"Public mail value used to scope this lookup."}},"required":["domain","registered","registration","dns","https","mail"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/domain/registration-state":{"post":{"operationId":"domain.registration-state","summary":"who manages this domain","description":"Registration/registrar/expiry/status without unrelated domain checks.","tags":["domain","registration"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"domain.registration-state","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":253,"description":"Public domain name to inspect."}},"required":["domain"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"domain.registration-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"domain":{"type":"string","description":"Public domain name to inspect."},"registered":{"type":["boolean","null"],"description":"Public registered value used to scope this lookup."},"registration":{"type":["object","null"],"description":"Public registration value used to scope this lookup."}},"required":["domain","registered","registration"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/entity/lei-resolve":{"post":{"operationId":"entity.lei-resolve","summary":"resolve this LEI to a legal entity","description":"Resolve one exact 20-character Legal Entity Identifier against the public GLEIF LEI record API and return a compact normalized legal-entity reference snapshot. Forest reports source facts only and does not turn LEI status into a KYC, AML, credit or legal decision.","tags":["entity","lei","legal-entity","resolve"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"entity.lei-resolve","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lei":{"type":"string","minLength":20,"maxLength":20,"pattern":"^[A-Za-z0-9]{20}$","description":"Public lei value used to scope this lookup."}},"required":["lei"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"entity.lei-resolve","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"provider":{"const":"gleif","description":"Public provider value used to scope this lookup."},"found":{"type":"boolean","description":"Public found value used to scope this lookup."},"lei":{"type":"string","description":"Public lei value used to scope this lookup."},"legal_name":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"entity_status":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"registration_status":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"jurisdiction":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"legal_address_country":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"headquarters_country":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"registered_as":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"legal_form_id":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"managing_lou":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"initial_registration_date":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"last_update_date":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"next_renewal_date":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."},"corroboration_level":{"type":["string","null"],"description":"Public legal name value used to scope this lookup."}},"required":["provider","found","lei","legal_name","entity_status","registration_status","jurisdiction","legal_address_country","headquarters_country","registered_as","legal_form_id","managing_lou","initial_registration_date","last_update_date","next_renewal_date","corroboration_level"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/http/changed":{"post":{"operationId":"http.changed","summary":"has this HTTP endpoint changed","description":"Detect material public HTTP endpoint changes using bounded response metadata and deterministic hashing. ETag and Last-Modified are evidence; arbitrary body downloads are capped.","tags":["http"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"http.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","x-forest-next-capabilities":[{"capability":"web.site-changed-since","when":"when HTTP drift should be classified across page, structured, download, form and robots dimensions"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":"string","description":"Earlier result hash used to detect a material change."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"http.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."},"status":{"type":"integer","description":"Public status value used to scope this lookup."},"final_url":{"type":["string","null"],"description":"Public final url value used to scope this lookup."},"content_type":{"type":["string","null"],"description":"Public content type value used to scope this lookup."},"validators":{"type":"object","additionalProperties":true,"description":"Public validators value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","status","final_url","content_type","validators"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/http/health":{"post":{"operationId":"http.health","summary":"is this HTTP endpoint healthy","description":"Perform one bounded public HTTP health probe with status, redirects, content type and size basics. It uses central SSRF protection and does not duplicate full page scraping.","tags":["http","health"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"http.health","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"method":{"enum":["GET","HEAD"],"description":"HTTP method for the bounded public probe."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"http.health","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"reachable":{"type":"boolean","description":"Public reachable value used to scope this lookup."},"status":{"type":"integer","description":"Public status value used to scope this lookup."},"final_url":{"type":["string","null"],"description":"Public final url value used to scope this lookup."},"redirect_count":{"type":"integer","description":"Public redirect count value used to scope this lookup."},"content_type":{"type":["string","null"],"description":"Public content type value used to scope this lookup."},"content_length":{"type":["integer","null"],"description":"Public content length value used to scope this lookup."},"server_timing_if_present":{"type":["string","null"],"description":"Public server timing if present value used to scope this lookup."}},"required":["reachable","status","final_url","redirect_count","content_type","content_length","server_timing_if_present"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/http/latency":{"post":{"operationId":"http.latency","summary":"how fast does this endpoint respond","description":"Measure bounded sequential timing samples for one public HTTP endpoint. Samples are hard-capped at three and this is never a load-testing or port-scanning service.","tags":["http","latency"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"http.latency","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"samples":{"type":"integer","minimum":1,"maximum":3,"description":"Number of sequential timing samples to collect."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"http.latency","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"samples":{"type":"integer","description":"Number of sequential timing samples to collect."},"success_count":{"type":"integer","description":"Public success count value used to scope this lookup."},"connect_ms_if_available":{"type":["number","null"],"description":"Public connect ms if available value used to scope this lookup."},"ttfb_ms":{"type":["number","null"],"description":"Public ttfb ms value used to scope this lookup."},"total_ms":{"type":["number","null"],"description":"Public total ms value used to scope this lookup."},"min":{"type":["number","null"],"description":"Public min value used to scope this lookup."},"median":{"type":["number","null"],"description":"Public median value used to scope this lookup."},"max":{"type":["number","null"],"description":"Public max value used to scope this lookup."}},"required":["samples","success_count","connect_ms_if_available","ttfb_ms","total_ms","min","median","max"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/job/apply-route":{"post":{"operationId":"job.apply-route","summary":"where can I apply for this job","description":"Return the current public application route; do not submit application.","tags":["job","apply","route"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"job.apply-route","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"enum":["greenhouse","lever","ashby"],"description":"Public provider value used to scope this lookup."},"board":{"type":"string","maxLength":128,"description":"Public board value used to scope this lookup."},"job_id":{"type":"string","maxLength":256,"description":"Public job id value used to scope this lookup."},"url":{"type":"string","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":["string","null"],"maxLength":128,"description":"Earlier result hash used to detect a material change."}},"required":["provider","job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"job.apply-route","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"provider":{"type":"string","description":"Public provider value used to scope this lookup."},"provider_job_id":{"type":"string","description":"Public provider job id value used to scope this lookup."},"open":{"type":"boolean","description":"Public open value used to scope this lookup."},"apply_url":{"type":["string","null"],"description":"Public apply url value used to scope this lookup."},"canonical_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."}},"required":["provider","provider_job_id","open","apply_url","canonical_url"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/job/changed":{"post":{"operationId":"job.changed","summary":"has this job posting changed","description":"Cheap watchdog for closed/materially changed job state.","tags":["job"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"job.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"enum":["greenhouse","lever","ashby"],"description":"Public provider value used to scope this lookup."},"board":{"type":"string","maxLength":128,"description":"Public board value used to scope this lookup."},"job_id":{"type":"string","maxLength":256,"description":"Public job id value used to scope this lookup."},"url":{"type":"string","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":["string","null"],"maxLength":128,"description":"Earlier result hash used to detect a material change."}},"required":["provider","job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"job.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"provider":{"type":"string","description":"Public provider value used to scope this lookup."},"provider_job_id":{"type":"string","description":"Public provider job id value used to scope this lookup."},"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."}},"required":["provider","provider_job_id","changed","previous_hash","new_hash","changed_fields"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/job/compensation":{"post":{"operationId":"job.compensation","summary":"what salary is published for this job","description":"Normalize compensation explicitly published by the job source; never infer missing salary.","tags":["job","compensation","salary"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"job.compensation","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"enum":["greenhouse","lever","ashby"],"description":"Public provider value used to scope this lookup."},"board":{"type":"string","maxLength":128,"description":"Public board value used to scope this lookup."},"job_id":{"type":"string","maxLength":256,"description":"Public job id value used to scope this lookup."},"url":{"type":"string","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":["string","null"],"maxLength":128,"description":"Earlier result hash used to detect a material change."}},"required":["provider","job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"job.compensation","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"provider":{"type":"string","description":"Public provider value used to scope this lookup."},"provider_job_id":{"type":"string","description":"Public provider job id value used to scope this lookup."},"published":{"type":"boolean","description":"Public published value used to scope this lookup."},"currency":{"description":"Public currency value used to scope this lookup."},"interval":{"description":"Public interval value used to scope this lookup."},"min":{"description":"Public min value used to scope this lookup."},"max":{"description":"Public max value used to scope this lookup."},"summary":{"description":"Public summary value used to scope this lookup."},"equity":{"description":"Public equity value used to scope this lookup."},"source":{"description":"Public source value used to scope this lookup."}},"required":["provider","provider_job_id","published","currency","interval","min","max","summary","equity","source"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/job/form-schema":{"post":{"operationId":"job.form-schema","summary":"what fields are required for this job application","description":"Return structured application fields/questions where publicly exposed.","tags":["job","form"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"job.form-schema","x-forest-price-usd":"0.004","x-price-usd":"0.004","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"enum":["greenhouse","lever","ashby"],"description":"Public provider value used to scope this lookup."},"board":{"type":"string","maxLength":128,"description":"Public board value used to scope this lookup."},"job_id":{"type":"string","maxLength":256,"description":"Public job id value used to scope this lookup."},"url":{"type":"string","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":["string","null"],"maxLength":128,"description":"Earlier result hash used to detect a material change."}},"required":["provider","job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"job.form-schema","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"provider":{"type":"string","description":"Public provider value used to scope this lookup."},"provider_job_id":{"type":"string","description":"Public provider job id value used to scope this lookup."},"supported":{"type":"boolean","description":"Public supported value used to scope this lookup."},"fields":{"type":"array","description":"Public fields value used to scope this lookup."},"unsupported_reason":{"type":["string","null"],"description":"Public unsupported reason value used to scope this lookup."}},"required":["provider","provider_job_id","supported","fields","unsupported_reason"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/job/preflight":{"post":{"operationId":"job.preflight","summary":"is this job still open","description":"Normalize whether a public job is still published/open and its canonical apply route.","tags":["job","employment"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"job.preflight","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"provider":{"enum":["greenhouse","lever","ashby"],"description":"Public provider value used to scope this lookup."},"board":{"type":"string","maxLength":128,"description":"Public board value used to scope this lookup."},"job_id":{"type":"string","maxLength":256,"description":"Public job id value used to scope this lookup."},"url":{"type":"string","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":["string","null"],"maxLength":128,"description":"Earlier result hash used to detect a material change."}},"required":["provider","job_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"job.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"provider":{"type":"string","description":"Public provider value used to scope this lookup."},"provider_job_id":{"type":"string","description":"Public provider job id value used to scope this lookup."},"published":{"type":"boolean","description":"Public published value used to scope this lookup."},"open":{"type":"boolean","description":"Public open value used to scope this lookup."},"title":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"company":{"type":["string","null"],"description":"Public company value used to scope this lookup."},"location":{"type":["string","null"],"description":"Public location value used to scope this lookup."},"workplace_type":{"type":["string","null"],"description":"Public workplace type value used to scope this lookup."},"employment_type":{"type":["string","null"],"description":"Public employment type value used to scope this lookup."},"canonical_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."},"apply_url":{"type":["string","null"],"description":"Public apply url value used to scope this lookup."},"compensation":{"description":"Public compensation value used to scope this lookup."},"application_fields":{"description":"Public application fields value used to scope this lookup."},"published_at":{"description":"Public published at value used to scope this lookup."}},"required":["provider","provider_job_id","published","open","title","company","location","workplace_type","employment_type","canonical_url","apply_url","compensation","application_fields","published_at"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/marketplace/listing-changed":{"post":{"operationId":"marketplace.listing-changed","summary":"has this marketplace listing changed","description":"Detect material marketplace listing changes in active state, price, seller, condition or quantity with a deterministic hash. It does not place bids, purchases or infer hidden listing facts.","tags":["marketplace","listing"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"marketplace.listing-changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$","description":"Earlier result hash used to detect a material change."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"marketplace.listing-changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."},"active":{"type":["boolean","null"],"description":"Public active value used to scope this lookup."},"price":{"type":["number","null"],"description":"Public price value used to scope this lookup."},"seller":{"anyOf":[{"type":["string","null"]},{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}],"description":"Public seller value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","active","price","seller"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/marketplace/listing-state":{"post":{"operationId":"marketplace.listing-state","summary":"is this marketplace listing active","description":"Normalize public marketplace listing activity, offer, seller, condition and quantity hints. eBay credentials are optional configuration; no buying, bidding or seller mutation is supported.","tags":["marketplace","listing"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"marketplace.listing-state","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"marketplace.listing-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"active":{"type":["boolean","null"],"description":"Public active value used to scope this lookup."},"marketplace":{"type":["string","null"],"description":"Public marketplace value used to scope this lookup."},"listing_id":{"type":["string","null"],"description":"Public listing id value used to scope this lookup."},"title":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"price":{"type":["number","null"],"description":"Public price value used to scope this lookup."},"currency":{"type":["string","null"],"description":"Public currency value used to scope this lookup."},"condition":{"type":["string","null"],"description":"Public condition value used to scope this lookup."},"seller":{"anyOf":[{"type":["string","null"]},{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."}],"description":"Public seller value used to scope this lookup."},"quantity":{"type":["integer","null"],"description":"Requested item quantity to validate against provider limits."},"shipping":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public identifiers value used to scope this lookup."},{"type":"null"}],"description":"Public shipping value used to scope this lookup."},"canonical_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."}},"required":["active","marketplace","listing_id","title","price","currency","condition","seller","quantity","shipping","canonical_url"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/marketplace/seller-state":{"post":{"operationId":"marketplace.seller-state","summary":"who is selling this marketplace item","description":"Return seller identity and publicly published seller signals for a marketplace listing. Missing feedback or business fields remain null; no customer or seller account access is attempted.","tags":["marketplace","seller"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"marketplace.seller-state","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://","maxLength":2048,"description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"marketplace.seller-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"seller_name":{"type":["string","null"],"description":"Public seller name value used to scope this lookup."},"seller_id":{"type":["string","null"],"description":"Public seller id value used to scope this lookup."},"feedback_score":{"type":["number","null"],"description":"Public feedback score value used to scope this lookup."},"feedback_percentage":{"type":["number","null"],"description":"Public feedback percentage value used to scope this lookup."},"seller_url":{"type":["string","null"],"description":"Public seller url value used to scope this lookup."},"business_seller":{"type":["boolean","null"],"description":"Public business seller value used to scope this lookup."},"evidence":{"type":"array","description":"Public evidence value used to scope this lookup."}},"required":["seller_name","seller_id","feedback_score","feedback_percentage","seller_url","business_seller","evidence"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/mcp/discover":{"post":{"operationId":"mcp.discover","summary":"find a public MCP server","description":"Find public MCP server candidates and registry metadata.","tags":["mcp","agent","discovery","discover"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"mcp.discover","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":256,"description":"Buyer search phrase used to find relevant public resources."},"registry_url":{"type":"string","description":"Public registry url value used to scope this lookup."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of public results to return."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"mcp.discover","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"query":{"type":["string","null"],"description":"Buyer search phrase used to find relevant public resources."},"matches":{"type":"array","description":"Public matches value used to scope this lookup."}},"required":["query","matches"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/mcp/preflight":{"post":{"operationId":"mcp.preflight","summary":"does this MCP server respond","description":"Read-only MCP handshake/tools-list preflight; no destructive tool calls.","tags":["mcp","agent"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"mcp.preflight","x-forest-price-usd":"0.004","x-price-usd":"0.004","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"protocol_version":{"type":"string","maxLength":32,"description":"Public protocol version value used to scope this lookup."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"mcp.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"reachable":{"type":"boolean","description":"Public reachable value used to scope this lookup."},"protocol_version":{"type":["string","null"],"description":"Public protocol version value used to scope this lookup."},"negotiated_protocol_version":{"type":["string","null"],"description":"Public negotiated protocol version value used to scope this lookup."},"tool_count":{"type":"integer","description":"Public tool count value used to scope this lookup."},"tools":{"type":"array","description":"Public tools value used to scope this lookup."},"auth_required":{"type":"boolean","description":"Public auth required value used to scope this lookup."},"latency_ms":{"type":"integer","description":"Public latency ms value used to scope this lookup."}},"required":["url","reachable","protocol_version","negotiated_protocol_version","tool_count","tools","auth_required","latency_ms"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/openapi/preflight":{"post":{"operationId":"openapi.preflight","summary":"does this URL expose an OpenAPI spec","description":"Verify OpenAPI/Swagger document reachability, parseability, operations/auth/servers.","tags":["api","openapi","swagger"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"openapi.preflight","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"openapi.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"reachable":{"type":"boolean","description":"Public reachable value used to scope this lookup."},"parse_valid":{"type":"boolean","description":"Public parse valid value used to scope this lookup."},"version":{"type":["string","null"],"description":"Package version whose public metadata should be checked."},"operation_count":{"type":"integer","description":"Public operation count value used to scope this lookup."},"operations":{"type":"array","description":"Public operations value used to scope this lookup."},"auth_types":{"type":"array","description":"Public auth types value used to scope this lookup."},"servers":{"type":"array","description":"Public servers value used to scope this lookup."}},"required":["url","reachable","parse_valid","version","operation_count","operations","auth_types","servers"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/package/license":{"post":{"operationId":"package.license","summary":"what license does this package use","description":"Normalize declared package license metadata toward SPDX; no legal compatibility conclusion.","tags":["package","license","spdx"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"package.license","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ecosystem":{"enum":["npm","pypi"],"description":"Public ecosystem value used to scope this lookup."},"package":{"type":"string","minLength":1,"maxLength":214,"description":"Public package name to inspect."},"version":{"type":"string","minLength":1,"maxLength":128,"description":"Package version whose public metadata should be checked."}},"required":["ecosystem","package"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"package.license","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"ecosystem":{"type":"string","description":"Public ecosystem value used to scope this lookup."},"package":{"type":"string","description":"Public package name to inspect."},"version":{"type":["string","null"],"description":"Package version whose public metadata should be checked."},"exists":{"type":"boolean","description":"Public exists value used to scope this lookup."},"declared":{"type":["string","null"],"description":"Public declared value used to scope this lookup."},"normalized_spdx":{"type":["string","null"],"description":"Public normalized spdx value used to scope this lookup."},"confidence":{"type":"string","description":"Public confidence value used to scope this lookup."},"evidence":{"type":"array","description":"Public evidence value used to scope this lookup."}},"required":["ecosystem","package","version","exists","declared","normalized_spdx","confidence","evidence"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/package/preflight":{"post":{"operationId":"package.preflight","summary":"is this npm package version available","description":"Normalize npm or PyPI package reality: existence, requested-version existence, resolved/latest version, staleness, deprecation/yank state when available, license and runtime requirement. No dependency graph or vulnerability analysis. Public registries only; unsupported provider fields are null.","tags":["public-data","package"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"package.preflight","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ecosystem":{"enum":["npm","pypi"],"description":"Public ecosystem value used to scope this lookup."},"package":{"type":"string","minLength":1,"maxLength":214,"description":"Public package name to inspect."},"version":{"type":"string","minLength":1,"maxLength":128,"description":"Package version whose public metadata should be checked."}},"required":["ecosystem","package"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"package.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"ecosystem":{"enum":["npm","pypi"],"description":"Public ecosystem value used to scope this lookup."},"package":{"type":"string","description":"Public package name to inspect."},"exists":{"type":"boolean","description":"Public exists value used to scope this lookup."},"requested_version":{"type":["string","null"],"description":"Public requested version value used to scope this lookup."},"requested_version_exists":{"type":["boolean","null"],"description":"Public requested version exists value used to scope this lookup."},"resolved_version":{"type":["string","null"],"description":"Public requested version value used to scope this lookup."},"latest_version":{"type":["string","null"],"description":"Public requested version value used to scope this lookup."},"outdated":{"type":["boolean","null"],"description":"Public requested version exists value used to scope this lookup."},"deprecated":{"type":["boolean","null"],"description":"Public requested version exists value used to scope this lookup."},"yanked":{"type":["boolean","null"],"description":"Public requested version exists value used to scope this lookup."},"license":{"type":["string","null"],"description":"Public requested version value used to scope this lookup."},"requires_runtime":{"type":["string","null"],"description":"Public requested version value used to scope this lookup."},"project_url":{"type":["string","null"],"description":"Public requested version value used to scope this lookup."},"registry_url":{"type":["string","null"],"description":"Public requested version value used to scope this lookup."}},"required":["ecosystem","package","exists","requested_version","requested_version_exists","resolved_version","latest_version","outdated","deprecated","yanked","license","requires_runtime","project_url","registry_url"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/package/security":{"post":{"operationId":"package.security","summary":"does this package version have vulnerabilities","description":"Known vulnerabilities for package+version; normalized evidence, not a safety verdict.","tags":["package","security","osv"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"package.security","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ecosystem":{"enum":["npm","pypi"],"description":"Public ecosystem value used to scope this lookup."},"package":{"type":"string","minLength":1,"maxLength":214,"description":"Public package name to inspect."},"version":{"type":"string","minLength":1,"maxLength":128,"description":"Package version whose public metadata should be checked."}},"required":["ecosystem","package","version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"package.security","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"ecosystem":{"type":"string","description":"Public ecosystem value used to scope this lookup."},"package":{"type":"string","description":"Public package name to inspect."},"version":{"type":"string","description":"Package version whose public metadata should be checked."},"vulnerabilities":{"type":"array","description":"Public vulnerabilities value used to scope this lookup."},"count":{"type":"integer","description":"Public count value used to scope this lookup."},"evidence":{"type":"array","description":"Public evidence value used to scope this lookup."}},"required":["ecosystem","package","version","vulnerabilities","count","evidence"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/page/downloads":{"post":{"operationId":"web.page-downloads","summary":"find downloadable files on this page","description":"Extract PDF/CSV/XLS/XLSX/ZIP/JSON/XML links from static public HTML by suffix or download filename. Resolve relative/base links and deduplicate. Limits: 500 links, 8s, 5 redirects, 2 MiB. No JavaScript or file downloads; existence, MIME, size and file safety are unverified. Empty results are valid.","tags":["public-data","web","page","downloads"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"web.page-downloads","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Absolute public HTTP(S) URL on port 80/443. No credentials. Private/reserved DNS/IPs and HTTPS downgrades rejected."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"source_url":{"type":"string","description":"Public source url value used to scope this lookup."},"count":{"type":"integer","minimum":0,"maximum":500,"description":"Public count value used to scope this lookup."},"truncated":{"type":"boolean","description":"Public truncated value used to scope this lookup."},"rendered_javascript":{"const":false,"description":"Public rendered javascript value used to scope this lookup."},"downloads":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"url":{"type":"string","description":"Public source url value used to scope this lookup."},"format":{"enum":["pdf","csv","xls","xlsx","zip","json","xml"],"description":"Public format value used to scope this lookup."},"text":{"type":"string","maxLength":300,"description":"Public text value used to scope this lookup."},"filename":{"type":["string","null"],"maxLength":300,"description":"Public filename value used to scope this lookup."},"verification":{"const":"link_only","description":"Public verification value used to scope this lookup."}},"required":["url","format","text","filename","verification"],"additionalProperties":false},"description":"Public downloads value used to scope this lookup."}},"required":["source_url","count","truncated","rendered_javascript","downloads"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/page/forms":{"post":{"operationId":"web.page-forms","summary":"what fields does this web form require","description":"Extract bounded static HTML form structure without submitting anything. Forest returns field names/types/labels/constraints and submit-control structure, but never current values, textarea contents, hidden tokens, passwords, cookies or authentication material.","tags":["web","forms","page"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"web.page-forms","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"web.page-forms","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"source_url":{"type":"string","description":"Public source url value used to scope this lookup."},"form_count":{"type":"integer","minimum":0,"description":"Public form count value used to scope this lookup."},"forms":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"description":"Public index value used to scope this lookup."},"id":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"name":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"method":{"enum":["GET","POST","OTHER"],"description":"HTTP method for the bounded public probe."},"action_url":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"same_origin_action":{"type":["boolean","null"],"description":"Public same origin action value used to scope this lookup."},"enctype":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"autocomplete":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"field_count":{"type":"integer","minimum":0,"description":"Public field count value used to scope this lookup."},"fields":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"tag":{"enum":["input","select","textarea"],"description":"Mutable image tag whose current state should be resolved."},"type":{"type":"string","description":"DNS record type to query."},"name":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"label":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"required":{"type":"boolean","description":"Public required value used to scope this lookup."},"disabled":{"type":"boolean","description":"Public disabled value used to scope this lookup."},"readonly":{"type":"boolean","description":"Public readonly value used to scope this lookup."},"multiple":{"type":"boolean","description":"Public multiple value used to scope this lookup."},"checked":{"type":["boolean","null"],"description":"Public same origin action value used to scope this lookup."},"autocomplete":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"inputmode":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"min":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"max":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"minlength":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"maxlength":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"pattern":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"accept":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"options":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"label":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"selected":{"type":"boolean","description":"Public selected value used to scope this lookup."},"disabled":{"type":"boolean","description":"Public disabled value used to scope this lookup."}},"required":["label","selected","disabled"],"additionalProperties":false},"description":"Named product options used to resolve one public variant."},"option_count":{"type":"integer","minimum":0,"description":"Public option count value used to scope this lookup."},"options_truncated":{"type":"boolean","description":"Public options truncated value used to scope this lookup."}},"required":["tag","type","name","label","required","disabled","readonly","multiple","checked","autocomplete","inputmode","min","max","minlength","maxlength","pattern","accept","options","option_count","options_truncated"],"additionalProperties":false},"description":"Public fields value used to scope this lookup."},"fields_truncated":{"type":"boolean","description":"Public fields truncated value used to scope this lookup."},"submits":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"tag":{"enum":["input","button"],"description":"Mutable image tag whose current state should be resolved."},"type":{"enum":["submit","image"],"description":"DNS record type to query."},"name":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"label":{"type":["string","null"],"description":"Public id value used to scope this lookup."},"disabled":{"type":"boolean","description":"Public disabled value used to scope this lookup."}},"required":["tag","type","name","label","disabled"],"additionalProperties":false},"description":"Public submits value used to scope this lookup."},"submits_truncated":{"type":"boolean","description":"Public submits truncated value used to scope this lookup."}},"required":["index","id","name","method","action_url","same_origin_action","enctype","autocomplete","field_count","fields","fields_truncated","submits","submits_truncated"],"additionalProperties":false},"description":"Public forms value used to scope this lookup."},"returned_field_count":{"type":"integer","minimum":0,"maximum":500,"description":"Public returned field count value used to scope this lookup."},"truncated":{"type":"boolean","description":"Public truncated value used to scope this lookup."},"rendered_javascript":{"const":false,"description":"Public rendered javascript value used to scope this lookup."}},"required":["source_url","form_count","forms","returned_field_count","truncated","rendered_javascript"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/page/structured":{"post":{"operationId":"web.page-structured","summary":"extract structured data from this web page","description":"Extract bounded generic metadata and normalized JSON-LD entities from one static public HTML page. Forest returns only compact fields and key/type summaries, never arbitrary raw JSON-LD; JavaScript rendering and domain-specific business interpretation are excluded.","tags":["web","structured-data","json-ld","extraction","page"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"web.page-structured","x-forest-price-usd":"0.003","x-price-usd":"0.003","x-forest-next-capabilities":[{"capability":"web.page-structured-changed","when":"when the normalized structured page state should be monitored by hash"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"web.page-structured","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"source_url":{"type":"string","description":"Public source url value used to scope this lookup."},"title":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"description":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"language":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"canonical_url":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"robots":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"open_graph":{"type":"object","properties":{"title":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"description":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"type":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"url":{"type":["string","null"],"description":"Public title value used to scope this lookup."}},"required":["title","description","type","url"],"additionalProperties":false,"description":"Public open graph value used to scope this lookup."},"jsonld":{"type":"object","properties":{"blocks_seen":{"type":"integer","minimum":0,"description":"Public blocks seen value used to scope this lookup."},"blocks_parsed":{"type":"integer","minimum":0,"description":"Public blocks parsed value used to scope this lookup."},"malformed_blocks":{"type":"integer","minimum":0,"description":"Public malformed blocks value used to scope this lookup."},"entity_count":{"type":"integer","minimum":0,"maximum":100,"description":"Public entity count value used to scope this lookup."},"type_counts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"DNS record type to query."},"count":{"type":"integer","minimum":1,"description":"Public count value used to scope this lookup."}},"required":["type","count"],"additionalProperties":false},"description":"Public type counts value used to scope this lookup."},"entities":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"types":{"type":"array","maxItems":8,"items":{"type":"string"},"description":"Public types value used to scope this lookup."},"id":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"url":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"name":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"description":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"date_published":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"date_modified":{"type":["string","null"],"description":"Public title value used to scope this lookup."},"keys":{"type":"array","maxItems":50,"items":{"type":"string"},"description":"Public keys value used to scope this lookup."}},"required":["types","id","url","name","description","date_published","date_modified","keys"],"additionalProperties":false},"description":"Public entities value used to scope this lookup."}},"required":["blocks_seen","blocks_parsed","malformed_blocks","entity_count","type_counts","entities"],"additionalProperties":false,"description":"Public jsonld value used to scope this lookup."},"truncated":{"type":"boolean","description":"Public truncated value used to scope this lookup."},"rendered_javascript":{"const":false,"description":"Public rendered javascript value used to scope this lookup."}},"required":["source_url","title","description","language","canonical_url","robots","open_graph","jsonld","truncated","rendered_javascript"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/page/structured-changed":{"post":{"operationId":"web.page-structured-changed","summary":"has the structured data on this page changed","description":"Detect meaningful changes in normalized static page metadata and JSON-LD with a deterministic semantic hash. Transport noise and malformed JSON-LD counts are excluded; callers can fetch full details with web.page-structured only when the state changes.","tags":["web","structured-data","change-detection","json-ld","page"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"web.page-structured-changed","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"web.page-structured-changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","items":{"type":"string"},"description":"Public changed fields value used to scope this lookup."},"source_url":{"type":"string","description":"Public source url value used to scope this lookup."},"title":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"canonical_url":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"entity_count":{"type":"integer","minimum":0,"maximum":100,"description":"Public entity count value used to scope this lookup."},"type_counts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"DNS record type to query."},"count":{"type":"integer","minimum":1,"description":"Public count value used to scope this lookup."}},"required":["type","count"],"additionalProperties":false},"description":"Public type counts value used to scope this lookup."},"truncated":{"type":"boolean","description":"Public truncated value used to scope this lookup."},"rendered_javascript":{"const":false,"description":"Public rendered javascript value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","source_url","title","canonical_url","entity_count","type_counts","truncated","rendered_javascript"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/release/asset-resolve":{"post":{"operationId":"release.asset-resolve","summary":"find windows x64 release binary","description":"Resolve a public GitHub release into the most plausible downloadable asset for a normalized OS/architecture target, excluding source/signature/checksum files and linking checksum companions when present. Returns ambiguity instead of silently choosing tied candidates. No private repositories or customer authentication.","tags":["public-data","release","asset","resolve"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"release.asset-resolve","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","minLength":3,"maxLength":300,"description":"Public owner/name repository to inspect."},"os":{"enum":["windows","linux","macos","freebsd","any"],"description":"Public os value used to scope this lookup."},"arch":{"enum":["x86_64","x86","arm64","armv7","any"],"description":"Public arch value used to scope this lookup."},"release":{"type":"string","minLength":1,"maxLength":128,"description":"Release identifier used to resolve a public asset."},"allow_prerelease":{"type":"boolean","description":"Public allow prerelease value used to scope this lookup."}},"required":["repository","os","arch"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"release.asset-resolve","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"repository":{"type":"string","description":"Public owner/name repository to inspect."},"release":{"type":"object","properties":{"tag":{"type":"string","description":"Mutable image tag whose current state should be resolved."},"name":{"type":["string","null"],"description":"Public DNS hostname to resolve."},"prerelease":{"type":"boolean","description":"Public prerelease value used to scope this lookup."},"published_at":{"type":["string","null"],"description":"Public DNS hostname to resolve."}},"required":["tag","name","prerelease","published_at"],"additionalProperties":false,"description":"Release identifier used to resolve a public asset."},"target":{"type":"object","properties":{"os":{"enum":["windows","linux","macos","freebsd","any"],"description":"Public os value used to scope this lookup."},"arch":{"enum":["x86_64","x86","arm64","armv7","any"],"description":"Public arch value used to scope this lookup."}},"required":["os","arch"],"additionalProperties":false,"description":"Operating system and architecture target for asset selection."},"selected_asset":{"type":["object","null"],"properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"download_url":{"type":"string","description":"Public download url value used to scope this lookup."},"content_type":{"type":["string","null"],"description":"Public DNS hostname to resolve."},"size_bytes":{"type":["integer","null"],"minimum":0,"description":"Public size bytes value used to scope this lookup."},"digest":{"type":["string","null"],"description":"Public DNS hostname to resolve."}},"required":["name","download_url","content_type","size_bytes","digest"],"additionalProperties":false,"description":"Public selected asset value used to scope this lookup."},"checksum_asset":{"type":["object","null"],"properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"download_url":{"type":"string","description":"Public download url value used to scope this lookup."}},"required":["name","download_url"],"additionalProperties":false,"description":"Public checksum asset value used to scope this lookup."},"match":{"type":"object","properties":{"confidence":{"type":"number","minimum":0,"maximum":1,"description":"Public confidence value used to scope this lookup."},"reasons":{"type":"array","items":{"type":"string"},"description":"Public reasons value used to scope this lookup."}},"required":["confidence","reasons"],"additionalProperties":false,"description":"Public match value used to scope this lookup."},"alternatives":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"download_url":{"type":"string","description":"Public download url value used to scope this lookup."}},"required":["name","download_url"],"additionalProperties":false},"description":"Public alternatives value used to scope this lookup."}},"required":["repository","release","target","selected_asset","checksum_asset","match","alternatives"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/release/checksum":{"post":{"operationId":"release.checksum","summary":"find the checksum for this release file","description":"Find checksum/signature companion assets for a release asset.","tags":["release","checksum","github"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"release.checksum","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","description":"Public owner/name repository to inspect."},"release":{"type":"string","description":"Release identifier used to resolve a public asset."},"asset":{"type":"string","description":"Public release asset name to inspect."},"allow_prerelease":{"type":"boolean","description":"Public allow prerelease value used to scope this lookup."}},"required":["repository"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"release.checksum","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"repository":{"type":"string","description":"Public owner/name repository to inspect."},"tag":{"type":["string","null"],"description":"Mutable image tag whose current state should be resolved."},"asset":{"type":["string","null"],"description":"Public release asset name to inspect."},"companions":{"type":"array","description":"Public companions value used to scope this lookup."}},"required":["repository","tag","asset","companions"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/release/preflight":{"post":{"operationId":"release.preflight","summary":"does this repository have a usable release","description":"Check whether a repository has a usable latest/tagged release before deployment/download.","tags":["release","github"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"release.preflight","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","description":"Public owner/name repository to inspect."},"release":{"type":"string","description":"Release identifier used to resolve a public asset."},"allow_prerelease":{"type":"boolean","description":"Public allow prerelease value used to scope this lookup."}},"required":["repository"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"release.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"repository":{"type":"string","description":"Public owner/name repository to inspect."},"exists":{"type":"boolean","description":"Public exists value used to scope this lookup."},"release":{"type":"object","description":"Release identifier used to resolve a public asset."}},"required":["repository","exists","release"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/repo/actions-state":{"post":{"operationId":"repo.actions-state","summary":"is the repository build passing","description":"Normalize the latest public GitHub Actions workflow/run state. Reads only; dispatch, rerun, cancellation, private repositories and customer OAuth are unsupported.","tags":["repo","actions"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"repo.actions-state","x-forest-price-usd":"0.003","x-price-usd":"0.003","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","maxLength":200,"description":"Public owner/name repository to inspect."},"workflow":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["repository"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"repo.actions-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"workflow_exists":{"type":"boolean","description":"Public workflow exists value used to scope this lookup."},"workflow_state":{"type":["string","null"],"description":"Public workflow state value used to scope this lookup."},"latest_run":{"type":["integer","null"],"description":"Public latest run value used to scope this lookup."},"status":{"type":["string","null"],"description":"Public status value used to scope this lookup."},"conclusion":{"type":["string","null"],"description":"Public conclusion value used to scope this lookup."},"branch":{"type":["string","null"],"description":"Repository branch whose current state should be checked."},"head_sha":{"type":["string","null"],"description":"Public head sha value used to scope this lookup."},"started_at":{"type":["string","null"],"description":"Public started at value used to scope this lookup."},"updated_at":{"type":["string","null"],"description":"Public updated at value used to scope this lookup."}},"required":["workflow_exists","workflow_state","latest_run","status","conclusion","branch","head_sha","started_at","updated_at"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/repo/branch-state":{"post":{"operationId":"repo.branch-state","summary":"does this branch exist","description":"Resolve whether a public GitHub branch exists and return its current head commit without cloning. Branch protection is null when the public API does not expose it.","tags":["repo","branch"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"repo.branch-state","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","maxLength":200,"description":"Public owner/name repository to inspect."},"branch":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["repository","branch"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"repo.branch-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"exists":{"type":"boolean","description":"Public exists value used to scope this lookup."},"branch":{"type":["string","null"],"description":"Repository branch whose current state should be checked."},"protected_if_publicly_exposed":{"type":["boolean","null"],"description":"Public protected if publicly exposed value used to scope this lookup."},"head_sha":{"type":["string","null"],"description":"Public head sha value used to scope this lookup."},"head_commit_url":{"type":["string","null"],"description":"Public head commit url value used to scope this lookup."}},"required":["exists","branch","protected_if_publicly_exposed","head_sha","head_commit_url"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/repo/changed":{"post":{"operationId":"repo.changed","summary":"has this repository changed","description":"Cheaply detect material public repository state changes with a deterministic hash of existence, branch and archive state. Timestamps and unrelated metadata do not trigger a change.","tags":["repo"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"repo.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","maxLength":200,"description":"Public owner/name repository to inspect."},"previous_hash":{"type":"string","description":"Earlier result hash used to detect a material change."}},"required":["repository"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"repo.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."},"current_head_sha":{"type":["string","null"],"description":"Public current head sha value used to scope this lookup."},"default_branch":{"type":["string","null"],"description":"Public default branch value used to scope this lookup."},"archived":{"type":["boolean","null"],"description":"Public archived value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","current_head_sha","default_branch","archived"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/repo/commit-state":{"post":{"operationId":"repo.commit-state","summary":"what commit does this ref resolve to","description":"Resolve a public GitHub ref to commit metadata without fetching a diff. Verification is reported as published by GitHub and is not independently re-signed by Forest.","tags":["repo","commit"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"repo.commit-state","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","maxLength":200,"description":"Public owner/name repository to inspect."},"ref":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["repository","ref"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"repo.commit-state","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"resolved_sha":{"type":["string","null"],"description":"Public resolved sha value used to scope this lookup."},"authored_at":{"type":["string","null"],"description":"Public authored at value used to scope this lookup."},"committed_at":{"type":["string","null"],"description":"Public committed at value used to scope this lookup."},"message_summary":{"type":["string","null"],"description":"Public message summary value used to scope this lookup."},"verification":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public validators value used to scope this lookup."},{"type":"null"}],"description":"Public verification value used to scope this lookup."},"parents":{"type":"array","description":"Public parents value used to scope this lookup."},"html_url":{"type":["string","null"],"description":"Public html url value used to scope this lookup."}},"required":["resolved_sha","authored_at","committed_at","message_summary","verification","parents","html_url"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/repo/file-preflight":{"post":{"operationId":"repo.file-preflight","summary":"does this file exist in the repository","description":"Check lightweight metadata for a path in a public GitHub repository at an optional ref. It does not clone or download large file contents.","tags":["repo","file"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"repo.file-preflight","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","maxLength":200,"description":"Public owner/name repository to inspect."},"path":{"type":"string","minLength":1,"maxLength":1024,"description":"Repository file path whose public metadata should be checked."},"ref":{"type":"string","minLength":1,"maxLength":256,"description":"Repository branch whose current state should be checked."}},"required":["repository","path"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"repo.file-preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"exists":{"type":"boolean","description":"Public exists value used to scope this lookup."},"type":{"type":["string","null"],"description":"DNS record type to query."},"size":{"type":["integer","null"],"description":"Public size value used to scope this lookup."},"sha":{"type":["string","null"],"description":"Public sha value used to scope this lookup."},"download_url":{"type":["string","null"],"description":"Public download url value used to scope this lookup."},"html_url":{"type":["string","null"],"description":"Public html url value used to scope this lookup."}},"required":["exists","type","size","sha","download_url","html_url"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/repo/preflight":{"post":{"operationId":"repo.preflight","summary":"does this public repository exist","description":"Resolve the current public GitHub repository state without cloning or customer OAuth. Archived, fork, branch and license fields reflect only public API facts; private repositories are unsupported.","tags":["repo"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"repo.preflight","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"repository":{"type":"string","pattern":"^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$","maxLength":200,"description":"Public owner/name repository to inspect."}},"required":["repository"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"repo.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"repository":{"type":"string","description":"Public owner/name repository to inspect."},"exists":{"type":"boolean","description":"Public exists value used to scope this lookup."},"archived":{"type":["boolean","null"],"description":"Public archived value used to scope this lookup."},"fork":{"type":["boolean","null"],"description":"Public fork value used to scope this lookup."},"default_branch":{"type":["string","null"],"description":"Public default branch value used to scope this lookup."},"visibility":{"type":["string","null"],"description":"Public visibility value used to scope this lookup."},"language":{"type":["string","null"],"description":"Public language value used to scope this lookup."},"license":{"type":["string","null"],"description":"Public license value used to scope this lookup."},"pushed_at":{"type":["string","null"],"description":"Public pushed at value used to scope this lookup."},"canonical_url":{"type":["string","null"],"description":"Public canonical url value used to scope this lookup."}},"required":["repository","exists","archived","fork","default_branch","visibility","language","license","pushed_at","canonical_url"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/robots/context":{"post":{"operationId":"robots.context","summary":"can this agent path be crawled according to robots txt","description":"Fetch and interpret one bounded public robots.txt for a target URL and user-agent token. Forest reports applicable rules, sitemap hints and a deterministic allowed/disallowed/unknown protocol observation; this is not authorization, legal advice or an anti-bot bypass.","tags":["web","robots","crawl-preflight","policy","context"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"robots.context","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"user_agent":{"type":"string","minLength":1,"maxLength":128,"description":"Public user agent value used to scope this lookup."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"robots.context","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"target_url":{"type":"string","description":"Public target url value used to scope this lookup."},"robots_url":{"type":"string","description":"Public robots url value used to scope this lookup."},"status":{"type":["integer","null"],"description":"Public status value used to scope this lookup."},"robots_state":{"enum":["available","unavailable","temporarily_unavailable"],"description":"Public robots state value used to scope this lookup."},"user_agent":{"type":"string","description":"Public user agent value used to scope this lookup."},"matching_agents":{"type":"array","items":{"type":"string"},"description":"Public matching agents value used to scope this lookup."},"decision":{"enum":["allowed","disallowed","unknown"],"description":"Public decision value used to scope this lookup."},"matched_rule":{"anyOf":[{"type":"object","properties":{"directive":{"enum":["allow","disallow"],"description":"Public directive value used to scope this lookup."},"pattern":{"type":"string","description":"Public pattern value used to scope this lookup."},"specificity":{"type":"integer","minimum":0,"description":"Public specificity value used to scope this lookup."}},"required":["directive","pattern","specificity"],"additionalProperties":false},{"type":"null"}],"description":"Public matched rule value used to scope this lookup."},"rules":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"directive":{"enum":["allow","disallow"],"description":"Public directive value used to scope this lookup."},"pattern":{"type":"string","description":"Public pattern value used to scope this lookup."}},"required":["directive","pattern"],"additionalProperties":false},"description":"Public rules value used to scope this lookup."},"crawl_delay":{"type":["number","null"],"minimum":0,"description":"Public crawl delay value used to scope this lookup."},"sitemaps":{"type":"array","maxItems":50,"items":{"type":"string"},"description":"Public sitemaps value used to scope this lookup."},"truncated":{"type":"boolean","description":"Public truncated value used to scope this lookup."},"rendered_javascript":{"const":false,"description":"Public rendered javascript value used to scope this lookup."}},"required":["target_url","robots_url","status","robots_state","user_agent","matching_agents","decision","matched_rule","rules","crawl_delay","sitemaps","truncated","rendered_javascript"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/service/changed":{"post":{"operationId":"service.changed","summary":"has the service status changed","description":"Cheap watchdog: material service state changed since prior canonical hash?","tags":["service"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"service.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status_url":{"type":"string","description":"Public status url value used to scope this lookup."},"previous_hash":{"type":["string","null"],"maxLength":128,"description":"Earlier result hash used to detect a material change."}},"required":["status_url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"service.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"status_url":{"type":"string","description":"Public status url value used to scope this lookup."},"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."}},"required":["status_url","changed","previous_hash","new_hash","changed_fields"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/service/component-status":{"post":{"operationId":"service.component-status","summary":"is this service component operational","description":"Resolve the live state of a named service component.","tags":["service","component","status"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"service.component-status","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status_url":{"type":"string","description":"Public status url value used to scope this lookup."},"component":{"type":"string","minLength":1,"maxLength":256,"description":"Public component value used to scope this lookup."}},"required":["status_url","component"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"service.component-status","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"component":{"type":"string","description":"Public component value used to scope this lookup."},"status":{"type":"string","description":"Public status value used to scope this lookup."},"found":{"type":"boolean","description":"Public found value used to scope this lookup."},"matches":{"type":"array","description":"Public matches value used to scope this lookup."}},"required":["component","status","found","matches"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/service/incidents":{"post":{"operationId":"service.incidents","summary":"is this service having incidents","description":"Return active service incidents in normalized form.","tags":["service","incidents","status"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"service.incidents","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status_url":{"type":"string","description":"Public status url value used to scope this lookup."}},"required":["status_url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"service.incidents","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"status_url":{"type":"string","description":"Public status url value used to scope this lookup."},"incidents":{"type":"array","description":"Public incidents value used to scope this lookup."},"count":{"type":"integer","description":"Public count value used to scope this lookup."}},"required":["status_url","incidents","count"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/service/status":{"post":{"operationId":"service.status","summary":"is this API down","description":"Normalize a public Atlassian Statuspage into operational, maintenance, degraded, partial_outage, major_outage or unknown state, with components, active incidents and scheduled maintenance. V1 accepts an explicit status-page URL; it does not discover arbitrary providers or infer hidden service health.","tags":["public-data","service","status"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"service.status","x-forest-price-usd":"0.002","x-price-usd":"0.002","x-forest-next-capabilities":[{"capability":"service.component-status","when":"when one named component needs a focused state check"},{"capability":"service.incidents","when":"when active incident detail is the next required evidence"},{"capability":"service.changed","when":"when the current service state should be compared with a prior hash"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"status_url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public status-page URL. V1 expects an Atlassian Statuspage-compatible /api/v2/summary.json endpoint."}},"required":["status_url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"service.status","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"status":{"enum":["operational","maintenance","degraded","partial_outage","major_outage","unknown"],"description":"Public status value used to scope this lookup."},"indicator":{"type":"string","description":"Public indicator value used to scope this lookup."},"message":{"type":["string","null"],"description":"Public message value used to scope this lookup."},"components":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"status":{"enum":["operational","maintenance","degraded","partial_outage","major_outage","unknown"],"description":"Public status value used to scope this lookup."}},"required":["name","status"],"additionalProperties":false},"description":"Public components value used to scope this lookup."},"active_incidents":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"status":{"enum":["investigating","identified","monitoring","resolved","unknown"],"description":"Public status value used to scope this lookup."},"impact":{"type":"string","description":"Public impact value used to scope this lookup."},"updated_at":{"type":["string","null"],"description":"Public message value used to scope this lookup."}},"required":["name","status","impact","updated_at"],"additionalProperties":false},"description":"Public active incidents value used to scope this lookup."},"scheduled_maintenance":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Public DNS hostname to resolve."},"status":{"type":"string","description":"Public status value used to scope this lookup."},"scheduled_for":{"type":["string","null"],"description":"Public message value used to scope this lookup."},"scheduled_until":{"type":["string","null"],"description":"Public message value used to scope this lookup."}},"required":["name","status","scheduled_for","scheduled_until"],"additionalProperties":false},"description":"Public scheduled maintenance value used to scope this lookup."}},"required":["status","indicator","message","components","active_incidents","scheduled_maintenance"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/site/changed-since":{"post":{"operationId":"web.site-changed-since","summary":"has this site surface changed since my last observation","description":"Detect bounded changes across one static page surface using one HTML fetch plus at most one robots.txt fetch. Forest hashes HTTP identity, page metadata, normalized JSON-LD, downloadable links, form schema and robots context without storing snapshots, rendering JavaScript or submitting anything.","tags":["web","change-detection","monitoring","robots","structured-data"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.004"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"web.site-changed-since","x-forest-price-usd":"0.004","x-price-usd":"0.004","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"previous_hash":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"previous_dimensions":{"type":"object","properties":{"http":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"page":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"structured":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"downloads":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"forms":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"robots":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."}},"required":["http","page","structured","downloads","forms","robots"],"additionalProperties":false,"description":"Public previous dimensions value used to scope this lookup."},"user_agent":{"type":"string","minLength":1,"maxLength":128,"description":"Public user agent value used to scope this lookup."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"web.site-changed-since","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"changed_dimensions":{"type":"array","items":{"enum":["http","page","structured","downloads","forms","robots"]},"description":"Public changed dimensions value used to scope this lookup."},"classification_complete":{"type":"boolean","description":"Public classification complete value used to scope this lookup."},"dimension_hashes":{"type":"object","properties":{"http":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"page":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"structured":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"downloads":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"forms":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."},"robots":{"type":"string","pattern":"^sha256:[a-fA-F0-9]{64}$","description":"Earlier result hash used to detect a material change."}},"required":["http","page","structured","downloads","forms","robots"],"additionalProperties":false,"description":"Public previous dimensions value used to scope this lookup."},"source_url":{"type":"string","description":"Public source url value used to scope this lookup."},"http":{"type":"object","properties":{"status":{"type":"integer","minimum":200,"maximum":299,"description":"Public status value used to scope this lookup."},"content_type":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"cache":{"type":"object","properties":{"etag":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"last_modified":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"cache_control":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."}},"required":["etag","last_modified","cache_control"],"additionalProperties":false,"description":"Public cache value used to scope this lookup."}},"required":["status","content_type","cache"],"additionalProperties":false,"description":"Public http value used to scope this lookup."},"page":{"type":"object","properties":{"title":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"description":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"language":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"canonical_url":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."}},"required":["title","description","language","canonical_url"],"additionalProperties":false,"description":"Public page value used to scope this lookup."},"structured":{"type":"object","properties":{"entity_count":{"type":"integer","minimum":0,"maximum":100,"description":"Public entity count value used to scope this lookup."},"type_counts":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"DNS record type to query."},"count":{"type":"integer","minimum":1,"description":"Public count value used to scope this lookup."}},"required":["type","count"],"additionalProperties":false},"description":"Public type counts value used to scope this lookup."}},"required":["entity_count","type_counts"],"additionalProperties":false,"description":"Public structured value used to scope this lookup."},"downloads":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":500,"description":"Public count value used to scope this lookup."},"format_counts":{"type":"array","items":{"type":"object","properties":{"format":{"type":"string","description":"Public format value used to scope this lookup."},"count":{"type":"integer","minimum":1,"description":"Public count value used to scope this lookup."}},"required":["format","count"],"additionalProperties":false},"description":"Public format counts value used to scope this lookup."}},"required":["count","format_counts"],"additionalProperties":false,"description":"Public downloads value used to scope this lookup."},"forms":{"type":"object","properties":{"form_count":{"type":"integer","minimum":0,"description":"Public form count value used to scope this lookup."},"field_count":{"type":"integer","minimum":0,"maximum":500,"description":"Public field count value used to scope this lookup."},"method_counts":{"type":"array","items":{"type":"object","properties":{"method":{"enum":["GET","POST","OTHER"],"description":"HTTP method for the bounded public probe."},"count":{"type":"integer","minimum":1,"description":"Public count value used to scope this lookup."}},"required":["method","count"],"additionalProperties":false},"description":"Public method counts value used to scope this lookup."}},"required":["form_count","field_count","method_counts"],"additionalProperties":false,"description":"Public forms value used to scope this lookup."},"robots":{"type":"object","properties":{"status":{"type":["integer","null"],"description":"Public status value used to scope this lookup."},"state":{"enum":["available","unavailable","temporarily_unavailable"],"description":"Public state value used to scope this lookup."},"decision":{"enum":["allowed","disallowed","unknown"],"description":"Public decision value used to scope this lookup."}},"required":["status","state","decision"],"additionalProperties":false,"description":"Public robots value used to scope this lookup."},"provider_request_count":{"type":"integer","minimum":1,"maximum":2,"description":"Public provider request count value used to scope this lookup."},"provider_request_budget":{"const":2,"description":"Public provider request budget value used to scope this lookup."},"truncated":{"type":"boolean","description":"Public truncated value used to scope this lookup."},"rendered_javascript":{"const":false,"description":"Public rendered javascript value used to scope this lookup."},"scope":{"const":"bounded_static_site_surface_plus_robots_only","description":"Public scope value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_dimensions","classification_complete","dimension_hashes","source_url","http","page","structured","downloads","forms","robots","provider_request_count","provider_request_budget","truncated","rendered_javascript","scope"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/tls/changed":{"post":{"operationId":"tls.changed","summary":"has this TLS certificate changed","description":"Detect material public certificate changes in fingerprint, issuer, SANs or validity window using a deterministic hash. Handshake timing noise is ignored.","tags":["tls"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"tls.changed","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","pattern":"^[a-z0-9.-]+$","maxLength":253,"description":"Public DNS hostname to resolve."},"port":{"const":443,"description":"TLS port to probe; only the public TLS endpoint is supported."},"previous_hash":{"type":"string","description":"Earlier result hash used to detect a material change."}},"required":["host"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"tls.changed","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"changed":{"type":["boolean","null"],"description":"Public changed value used to scope this lookup."},"previous_hash":{"type":["string","null"],"description":"Earlier result hash used to detect a material change."},"new_hash":{"type":"string","description":"Public new hash value used to scope this lookup."},"changed_fields":{"type":"array","description":"Public changed fields value used to scope this lookup."},"certificate_fingerprint":{"type":["string","null"],"description":"Public certificate fingerprint value used to scope this lookup."},"not_after":{"type":["string","null"],"description":"Public not after value used to scope this lookup."}},"required":["changed","previous_hash","new_hash","changed_fields","certificate_fingerprint","not_after"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/tls/expiry":{"post":{"operationId":"tls.expiry","summary":"when does this TLS certificate expire","description":"Return only the public certificate validity window and remaining lifetime for TLS port 443. It does not scan ciphers, vulnerabilities or private hosts.","tags":["tls","expiry"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"tls.expiry","x-forest-price-usd":"0.001","x-price-usd":"0.001","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","pattern":"^[a-z0-9.-]+$","maxLength":253,"description":"Public DNS hostname to resolve."},"port":{"const":443,"description":"TLS port to probe; only the public TLS endpoint is supported."}},"required":["host"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"tls.expiry","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"reachable":{"type":"boolean","description":"Public reachable value used to scope this lookup."},"not_before":{"type":["string","null"],"description":"Public not before value used to scope this lookup."},"not_after":{"type":["string","null"],"description":"Public not after value used to scope this lookup."},"days_remaining":{"type":["integer","null"],"description":"Public days remaining value used to scope this lookup."},"expired":{"type":["boolean","null"],"description":"Public expired value used to scope this lookup."},"hostname_match":{"type":"boolean","description":"Public hostname match value used to scope this lookup."}},"required":["reachable","not_before","not_after","days_remaining","expired","hostname_match"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/tls/preflight":{"post":{"operationId":"tls.preflight","summary":"is this HTTPS certificate valid","description":"Inspect one public TLS endpoint and return certificate identity and validity-window facts. This is a bounded preflight, not a vulnerability scanner or security guarantee.","tags":["tls"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"tls.preflight","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"host":{"type":"string","pattern":"^[a-z0-9.-]+$","maxLength":253,"description":"Public DNS hostname to resolve."},"port":{"const":443,"description":"TLS port to probe; only the public TLS endpoint is supported."}},"required":["host"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"tls.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"reachable":{"type":"boolean","description":"Public reachable value used to scope this lookup."},"tls_version":{"type":["string","null"],"description":"Public tls version value used to scope this lookup."},"certificate_valid_now":{"type":"boolean","description":"Public certificate valid now value used to scope this lookup."},"subject":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public validators value used to scope this lookup."},{"type":"null"}],"description":"Public subject value used to scope this lookup."},"issuer":{"anyOf":[{"type":"object","additionalProperties":true,"description":"Public validators value used to scope this lookup."},{"type":"null"}],"description":"Public issuer value used to scope this lookup."},"sans":{"type":"array","description":"Public sans value used to scope this lookup."},"not_before":{"type":["string","null"],"description":"Public not before value used to scope this lookup."},"not_after":{"type":["string","null"],"description":"Public not after value used to scope this lookup."},"days_remaining":{"type":["integer","null"],"description":"Public days remaining value used to scope this lookup."}},"required":["reachable","tls_version","certificate_valid_now","subject","issuer","sans","not_before","not_after","days_remaining"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/url/preflight":{"post":{"operationId":"web.url-preflight","summary":"is this URL reachable","description":"Check whether a public URL responds now, then return origin status, final URL, response headers, cache validators and up to 5 redirects. Uses HEAD; GET only on 405/501. Limits: 8s, 2 MiB. Origin 4xx/5xx are observations; no JavaScript, login or availability guarantee.","tags":["public-data","web","url"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"web.url-preflight","x-forest-price-usd":"0.001","x-price-usd":"0.001","x-forest-next-capabilities":[{"capability":"web.page-structured","when":"when structured page metadata or JSON-LD is needed"},{"capability":"web.page-downloads","when":"when downloadable files should be discovered"},{"capability":"robots.context","when":"when crawl policy context is needed before another fetch"},{"capability":"web.page-forms","when":"when static public form structure should be inspected"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^https?://","description":"Absolute public HTTP(S) URL on port 80/443. No credentials. Private/reserved DNS/IPs and HTTPS downgrades rejected."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"integer","minimum":0,"description":"Public status value used to scope this lookup."},"final_url":{"type":"string","description":"Public final url value used to scope this lookup."},"redirect_chain":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"url":{"type":"string","description":"Public final url value used to scope this lookup."},"status":{"type":"integer","minimum":0,"description":"Public status value used to scope this lookup."},"location":{"type":"string","description":"Public final url value used to scope this lookup."}},"required":["url","status","location"],"additionalProperties":false},"description":"Public redirect chain value used to scope this lookup."},"method":{"enum":["HEAD","GET"],"description":"HTTP method for the bounded public probe."},"head_status":{"type":"integer","minimum":0,"description":"Public status value used to scope this lookup."},"head_redirect_chain":{"type":"array","maxItems":5,"items":{"type":"object","properties":{"url":{"type":"string","description":"Public final url value used to scope this lookup."},"status":{"type":"integer","minimum":0,"description":"Public status value used to scope this lookup."},"location":{"type":"string","description":"Public final url value used to scope this lookup."}},"required":["url","status","location"],"additionalProperties":false},"description":"Public redirect chain value used to scope this lookup."},"used_get_fallback":{"type":"boolean","description":"Public used get fallback value used to scope this lookup."},"content_type":{"type":["string","null"],"description":"Public content type value used to scope this lookup."},"content_length":{"type":["integer","null"],"minimum":0,"description":"Public content length value used to scope this lookup."},"cache":{"type":"object","properties":{"etag":{"type":["string","null"],"description":"Public content type value used to scope this lookup."},"last_modified":{"type":["string","null"],"description":"Public content type value used to scope this lookup."},"cache_control":{"type":["string","null"],"description":"Public content type value used to scope this lookup."},"expires":{"type":["string","null"],"description":"Public content type value used to scope this lookup."}},"required":["etag","last_modified","cache_control","expires"],"additionalProperties":false,"description":"Public cache value used to scope this lookup."},"body_sha256":{"type":["string","null"],"pattern":"^[a-f0-9]{64}$","description":"Public body sha256 value used to scope this lookup."}},"required":["status","final_url","redirect_chain","method","head_status","head_redirect_chain","used_get_fallback","content_type","content_length","cache","body_sha256"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/x402/discover":{"post":{"operationId":"x402.discover","summary":"find x402 paid resources","description":"Search machine-payable x402 resources and normalize discovery metadata.","tags":["x402","bazaar","discovery","discover"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"x402.discover","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string","maxLength":256,"description":"Buyer search phrase used to find relevant public resources."},"discovery_url":{"type":"string","description":"Public discovery endpoint to query."},"limit":{"type":"integer","minimum":1,"maximum":20,"description":"Maximum number of public results to return."}},"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"x402.discover","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"query":{"type":["string","null"],"description":"Buyer search phrase used to find relevant public resources."},"resources":{"type":"array","description":"Public resources value used to scope this lookup."}},"required":["query","resources"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}},"/x402/preflight":{"post":{"operationId":"x402.preflight","summary":"does this endpoint require x402 payment","description":"Read-only probe of x402 PaymentRequired requirements; does not pay.","tags":["x402","payment"],"security":[{"x402":[]}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"x-forest-capability-id":"x402.preflight","x-forest-price-usd":"0.002","x-price-usd":"0.002","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."}},"required":["url"],"additionalProperties":false}}}},"responses":{"200":{"description":"Successful Forest capability result.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true,"description":"Public ok value used to scope this lookup."},"capability":{"const":"x402.preflight","description":"Public capability value used to scope this lookup."},"version":{"const":"1","description":"Package version whose public metadata should be checked."},"data":{"type":"object","properties":{"url":{"type":"string","description":"Public HTTP(S) URL to inspect, resolve, or compare."},"reachable":{"type":"boolean","description":"Public reachable value used to scope this lookup."},"status":{"type":"integer","description":"Public status value used to scope this lookup."},"payment_required":{"type":"boolean","description":"Public payment required value used to scope this lookup."},"x402_version":{"type":["string","null"],"description":"Public x402 version value used to scope this lookup."},"resource":{"type":["object","string","null"],"description":"Public resource value used to scope this lookup."},"accepted_options":{"type":["array","object"],"description":"Public accepted options value used to scope this lookup."},"paid":{"const":false,"description":"Public paid value used to scope this lookup."}},"required":["url","reachable","status","payment_required","x402_version","resource","accepted_options","paid"],"additionalProperties":false,"description":"Public data value used to scope this lookup."},"meta":{"type":"object","properties":{"provider":{"type":["string","null"],"description":"Public provider value used to scope this lookup."},"checked_at":{"type":"string","description":"Public checked at value used to scope this lookup."},"cache":{"enum":["hit","miss","bypass"],"description":"Public cache value used to scope this lookup."},"duration_ms":{"type":"integer","minimum":0,"description":"Public duration ms value used to scope this lookup."}},"required":["provider","checked_at","cache","duration_ms"],"additionalProperties":false,"description":"Public meta value used to scope this lookup."}},"required":["ok","capability","version","data","meta"],"additionalProperties":false}}}},"400":{"description":"Invalid input."},"402":{"description":"x402 payment required. Read PAYMENT-REQUIRED and retry with a valid payment signature.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 payment challenge generated by the live payment middleware.","schema":{"type":"string"}}}},"429":{"description":"Request rate or concurrency limit exceeded."},"503":{"description":"Capability or upstream provider temporarily unavailable."}}}}},"x-forest-x402-discovery":"https://http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run/.well-known/x402"}