# Forest Factory > Small deterministic paid tools for software agents. Discovery is free; execution uses x402 on Base. - Catalog: https://forestfactory.dev/catalog.json - Discover: https://forestfactory.dev/discover/ - Agent metadata: https://forestfactory.dev/agents.json - OpenAPI: https://http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run/openapi.json - Canonical paid API: https://http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run ## Capabilities - [Api Discover](https://forestfactory.dev/capabilities/api.discover/): Find API docs, developer portal, candidate base URLs and auth docs. ($0.004/call) - [Api Readiness](https://forestfactory.dev/capabilities/api.readiness/): 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. ($0.006/call) - [Automation Preflight](https://forestfactory.dev/capabilities/automation.preflight/): 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. ($0.003/call) - [Commerce Availability](https://forestfactory.dev/capabilities/commerce.availability/): 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. ($0.002/call) - [Commerce Buyability](https://forestfactory.dev/capabilities/commerce.buyability/): 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. ($0.003/call) - [Commerce Canonical-product](https://forestfactory.dev/capabilities/commerce.canonical-product/): 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. ($0.002/call) - [Commerce Cart-preflight](https://forestfactory.dev/capabilities/commerce.cart-preflight/): Preflight an item into a fresh isolated commerce session without touching a customer cart. Sessions are ephemeral and payment/order creation is never attempted. ($0.004/call) - [Commerce Changed](https://forestfactory.dev/capabilities/commerce.changed/): Cheaply detect material public product changes in price, availability, selected variant or seller using a deterministic hash. Timestamps, images and analytics noise are excluded. ($0.001/call) - [Commerce Checkout-preflight](https://forestfactory.dev/capabilities/commerce.checkout-preflight/): Check whether an isolated cart can reach checkout and expose blockers without payment. It never logs in, creates an order or finalizes checkout. ($0.005/call) - [Commerce Delivery-options](https://forestfactory.dev/capabilities/commerce.delivery-options/): Report public delivery options for an isolated ephemeral cart and destination when the provider exposes them. No customer cart, payment or order is touched. ($0.006/call) - [Commerce Price](https://forestfactory.dev/capabilities/commerce.price/): 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. ($0.002/call) - [Commerce Product-identifiers](https://forestfactory.dev/capabilities/commerce.product-identifiers/): Extract public SKU, GTIN, UPC, EAN, ISBN, MPN and provider identifiers from a product source. Missing identifiers stay null and are never guessed. ($0.002/call) - [Commerce Product-state](https://forestfactory.dev/capabilities/commerce.product-state/): 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. ($0.003/call) - [Commerce Purchase-preflight](https://forestfactory.dev/capabilities/commerce.purchase-preflight/): 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. ($0.006/call) - [Commerce Quantity-preflight](https://forestfactory.dev/capabilities/commerce.quantity-preflight/): Check a requested quantity against public variant constraints and known availability. Unknown stock remains unknown; this capability never reserves or purchases inventory. ($0.003/call) - [Commerce Variant-resolve](https://forestfactory.dev/capabilities/commerce.variant-resolve/): 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. ($0.003/call) - [Container Changed](https://forestfactory.dev/capabilities/container.changed/): Watch an OCI tag for digest and platform changes with a deterministic hash. Registry timestamps and unrelated annotations are ignored; no layers are pulled. ($0.001/call) - [Container Digest](https://forestfactory.dev/capabilities/container.digest/): Resolve a mutable OCI tag to an immutable content digest using bounded Distribution manifest metadata. It does not assert signature or vulnerability status. ($0.002/call) - [Container Platforms](https://forestfactory.dev/capabilities/container.platforms/): Return deterministic OS/architecture variants from an OCI image index or manifest list. It reads bounded manifest metadata only and never downloads image layers. ($0.003/call) - [Container Referrers](https://forestfactory.dev/capabilities/container.referrers/): 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. ($0.003/call) - [Container Size](https://forestfactory.dev/capabilities/container.size/): 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. ($0.003/call) - [Container Tag-state](https://forestfactory.dev/capabilities/container.tag-state/): 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. ($0.002/call) - [Deploy Readiness](https://forestfactory.dev/capabilities/deploy.readiness/): 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. ($0.006/call) - [Dns Changed](https://forestfactory.dev/capabilities/dns.changed/): 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. ($0.001/call) - [Dns Consensus](https://forestfactory.dev/capabilities/dns.consensus/): 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. ($0.003/call) - [Dns Lookup](https://forestfactory.dev/capabilities/dns.lookup/): 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. ($0.001/call) - [Dns Propagation](https://forestfactory.dev/capabilities/dns.propagation/): 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. ($0.003/call) - [Docs Discover](https://forestfactory.dev/capabilities/docs.discover/): 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. ($0.004/call) - [Domain Mail-preflight](https://forestfactory.dev/capabilities/domain.mail-preflight/): MX/SPF/DMARC preflight; not mailbox verification. ($0.002/call) - [Domain Preflight](https://forestfactory.dev/capabilities/domain.preflight/): 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. ($0.003/call) - [Domain Registration-state](https://forestfactory.dev/capabilities/domain.registration-state/): Registration/registrar/expiry/status without unrelated domain checks. ($0.002/call) - [Entity Lei-resolve](https://forestfactory.dev/capabilities/entity.lei-resolve/): 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. ($0.001/call) - [Http Changed](https://forestfactory.dev/capabilities/http.changed/): Detect material public HTTP endpoint changes using bounded response metadata and deterministic hashing. ETag and Last-Modified are evidence; arbitrary body downloads are capped. ($0.001/call) - [Http Health](https://forestfactory.dev/capabilities/http.health/): 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. ($0.002/call) - [Http Latency](https://forestfactory.dev/capabilities/http.latency/): 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. ($0.002/call) - [Job Apply-route](https://forestfactory.dev/capabilities/job.apply-route/): Return the current public application route; do not submit application. ($0.002/call) - [Job Changed](https://forestfactory.dev/capabilities/job.changed/): Cheap watchdog for closed/materially changed job state. ($0.001/call) - [Job Compensation](https://forestfactory.dev/capabilities/job.compensation/): Normalize compensation explicitly published by the job source; never infer missing salary. ($0.003/call) - [Job Form-schema](https://forestfactory.dev/capabilities/job.form-schema/): Return structured application fields/questions where publicly exposed. ($0.004/call) - [Job Preflight](https://forestfactory.dev/capabilities/job.preflight/): Normalize whether a public job is still published/open and its canonical apply route. ($0.003/call) - [Marketplace Listing-changed](https://forestfactory.dev/capabilities/marketplace.listing-changed/): 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. ($0.001/call) - [Marketplace Listing-state](https://forestfactory.dev/capabilities/marketplace.listing-state/): Normalize public marketplace listing activity, offer, seller, condition and quantity hints. eBay credentials are optional configuration; no buying, bidding or seller mutation is supported. ($0.003/call) - [Marketplace Seller-state](https://forestfactory.dev/capabilities/marketplace.seller-state/): 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. ($0.003/call) - [Mcp Discover](https://forestfactory.dev/capabilities/mcp.discover/): Find public MCP server candidates and registry metadata. ($0.003/call) - [Mcp Preflight](https://forestfactory.dev/capabilities/mcp.preflight/): Read-only MCP handshake/tools-list preflight; no destructive tool calls. ($0.004/call) - [Openapi Preflight](https://forestfactory.dev/capabilities/openapi.preflight/): Verify OpenAPI/Swagger document reachability, parseability, operations/auth/servers. ($0.003/call) - [Package License](https://forestfactory.dev/capabilities/package.license/): Normalize declared package license metadata toward SPDX; no legal compatibility conclusion. ($0.002/call) - [Package Preflight](https://forestfactory.dev/capabilities/package.preflight/): 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. ($0.002/call) - [Package Security](https://forestfactory.dev/capabilities/package.security/): Known vulnerabilities for package+version; normalized evidence, not a safety verdict. ($0.003/call) - [Release Asset-resolve](https://forestfactory.dev/capabilities/release.asset-resolve/): 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. ($0.003/call) - [Release Checksum](https://forestfactory.dev/capabilities/release.checksum/): Find checksum/signature companion assets for a release asset. ($0.002/call) - [Release Preflight](https://forestfactory.dev/capabilities/release.preflight/): Check whether a repository has a usable latest/tagged release before deployment/download. ($0.002/call) - [Repo Actions-state](https://forestfactory.dev/capabilities/repo.actions-state/): Normalize the latest public GitHub Actions workflow/run state. Reads only; dispatch, rerun, cancellation, private repositories and customer OAuth are unsupported. ($0.003/call) - [Repo Branch-state](https://forestfactory.dev/capabilities/repo.branch-state/): 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. ($0.002/call) - [Repo Changed](https://forestfactory.dev/capabilities/repo.changed/): 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. ($0.001/call) - [Repo Commit-state](https://forestfactory.dev/capabilities/repo.commit-state/): 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. ($0.002/call) - [Repo File-preflight](https://forestfactory.dev/capabilities/repo.file-preflight/): Check lightweight metadata for a path in a public GitHub repository at an optional ref. It does not clone or download large file contents. ($0.002/call) - [Repo Preflight](https://forestfactory.dev/capabilities/repo.preflight/): 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. ($0.002/call) - [Robots Context](https://forestfactory.dev/capabilities/robots.context/): 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. ($0.001/call) - [Service Changed](https://forestfactory.dev/capabilities/service.changed/): Cheap watchdog: material service state changed since prior canonical hash? ($0.001/call) - [Service Component-status](https://forestfactory.dev/capabilities/service.component-status/): Resolve the live state of a named service component. ($0.002/call) - [Service Incidents](https://forestfactory.dev/capabilities/service.incidents/): Return active service incidents in normalized form. ($0.002/call) - [Service Status](https://forestfactory.dev/capabilities/service.status/): 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. ($0.002/call) - [Tls Changed](https://forestfactory.dev/capabilities/tls.changed/): Detect material public certificate changes in fingerprint, issuer, SANs or validity window using a deterministic hash. Handshake timing noise is ignored. ($0.001/call) - [Tls Expiry](https://forestfactory.dev/capabilities/tls.expiry/): Return only the public certificate validity window and remaining lifetime for TLS port 443. It does not scan ciphers, vulnerabilities or private hosts. ($0.001/call) - [Tls Preflight](https://forestfactory.dev/capabilities/tls.preflight/): 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. ($0.002/call) - [Web Page-downloads](https://forestfactory.dev/capabilities/web.page-downloads/): 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. 0.003 Base Sepolia test USDC per success; invalid inputs/errors are not settled. ($0.003/call) - [Web Page-forms](https://forestfactory.dev/capabilities/web.page-forms/): 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. ($0.002/call) - [Web Page-structured](https://forestfactory.dev/capabilities/web.page-structured/): 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. ($0.003/call) - [Web Page-structured-changed](https://forestfactory.dev/capabilities/web.page-structured-changed/): 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. ($0.002/call) - [Web Site-changed-since](https://forestfactory.dev/capabilities/web.site-changed-since/): 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. ($0.004/call) - [Web Url-preflight](https://forestfactory.dev/capabilities/web.url-preflight/): 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. ($0.001/call) - [X402 Discover](https://forestfactory.dev/capabilities/x402.discover/): Search machine-payable x402 resources and normalize discovery metadata. ($0.002/call) - [X402 Preflight](https://forestfactory.dev/capabilities/x402.preflight/): Read-only probe of x402 PaymentRequired requirements; does not pay. ($0.002/call)