{"x402Version":2,"kind":"resource-server","name":"Forest Factory","description":"Public x402 resource server exposing bounded paid capabilities for autonomous agents.","resources":[{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/api/discover","method":"POST","description":"Find API docs, developer portal, candidate base URLs and auth docs."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/api/readiness","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/automation/preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/availability","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/buyability","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/canonical-product","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/cart-preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/changed","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/checkout-preflight","method":"POST","description":"Check whether an isolated cart can reach checkout and expose blockers without payment. It never logs in, creates an order or finalizes checkout."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/delivery-options","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/price","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/product-identifiers","method":"POST","description":"Extract public SKU, GTIN, UPC, EAN, ISBN, MPN and provider identifiers from a product source. Missing identifiers stay null and are never guessed."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/product-state","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/purchase-preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/quantity-preflight","method":"POST","description":"Check a requested quantity against public variant constraints and known availability. Unknown stock remains unknown; this capability never reserves or purchases inventory."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/commerce/variant-resolve","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/container/changed","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/container/digest","method":"POST","description":"Resolve a mutable OCI tag to an immutable content digest using bounded Distribution manifest metadata. It does not assert signature or vulnerability status."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/container/platforms","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/container/referrers","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/container/size","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/container/tag-state","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/deploy/readiness","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/dns/changed","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/dns/consensus","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/dns/lookup","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/dns/propagation","method":"POST","description":"Check a DNS change against a fixed bounded public DoH resolver set, optionally comparing each resolver with an expected answer set. Complete means only that all configured resolvers match; Forest never claims worldwide propagation."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/docs/discover","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/domain/mail-preflight","method":"POST","description":"MX/SPF/DMARC preflight; not mailbox verification."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/domain/preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/domain/registration-state","method":"POST","description":"Registration/registrar/expiry/status without unrelated domain checks."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/entity/lei-resolve","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/http/changed","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/http/health","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/http/latency","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/job/apply-route","method":"POST","description":"Return the current public application route; do not submit application."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/job/changed","method":"POST","description":"Cheap watchdog for closed/materially changed job state."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/job/compensation","method":"POST","description":"Normalize compensation explicitly published by the job source; never infer missing salary."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/job/form-schema","method":"POST","description":"Return structured application fields/questions where publicly exposed."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/job/preflight","method":"POST","description":"Normalize whether a public job is still published/open and its canonical apply route."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/marketplace/listing-changed","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/marketplace/listing-state","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/marketplace/seller-state","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/mcp/discover","method":"POST","description":"Find public MCP server candidates and registry metadata."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/mcp/preflight","method":"POST","description":"Read-only MCP handshake/tools-list preflight; no destructive tool calls."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/openapi/preflight","method":"POST","description":"Verify OpenAPI/Swagger document reachability, parseability, operations/auth/servers."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/package/license","method":"POST","description":"Normalize declared package license metadata toward SPDX; no legal compatibility conclusion."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/package/preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/package/security","method":"POST","description":"Known vulnerabilities for package+version; normalized evidence, not a safety verdict."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/page/downloads","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/page/forms","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/page/structured","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/page/structured-changed","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/release/asset-resolve","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/release/checksum","method":"POST","description":"Find checksum/signature companion assets for a release asset."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/release/preflight","method":"POST","description":"Check whether a repository has a usable latest/tagged release before deployment/download."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/repo/actions-state","method":"POST","description":"Normalize the latest public GitHub Actions workflow/run state. Reads only; dispatch, rerun, cancellation, private repositories and customer OAuth are unsupported."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/repo/branch-state","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/repo/changed","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/repo/commit-state","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/repo/file-preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/repo/preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/robots/context","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/service/changed","method":"POST","description":"Cheap watchdog: material service state changed since prior canonical hash?"},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/service/component-status","method":"POST","description":"Resolve the live state of a named service component."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/service/incidents","method":"POST","description":"Return active service incidents in normalized form."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/service/status","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/site/changed-since","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/tls/changed","method":"POST","description":"Detect material public certificate changes in fingerprint, issuer, SANs or validity window using a deterministic hash. Handshake timing noise is ignored."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/tls/expiry","method":"POST","description":"Return only the public certificate validity window and remaining lifetime for TLS port 443. It does not scan ciphers, vulnerabilities or private hosts."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/tls/preflight","method":"POST","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."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/url/preflight","method":"POST","description":"Inspect a public URL with HEAD; GET only on 405/501. Return origin status, final URL, headers, cache validators and up to 5 redirects. Limits: 8s, 2 MiB. Origin 4xx/5xx are observations; length is unverified and SHA256 covers only complete GET bodies. No JavaScript, login or availability guarantee."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/x402/discover","method":"POST","description":"Search machine-payable x402 resources and normalize discovery metadata."},{"url":"https://http--forest-gas-station--lcjl27p8lmjs.code.run/x402/preflight","method":"POST","description":"Read-only probe of x402 PaymentRequired requirements; does not pay."}],"attestation":{"type":"none"}}