{"uid":"cap_d5FcZLOuboQ3I0_BwwlDb","slug":"forest-infra-http-change-detection-6c1b0a41","name":"Forest Infra – HTTP Change Detection","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. Base mainnet USDC","url":"https://http--forest-gas-station-mainnet--lcjl27p8lmjs.code.run/http/changed?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"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."}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.001","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.001/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.001","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_Dl2eudXXbIdpwtLG4aHDZ","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.001","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Detects material changes to a public HTTP endpoint by comparing bounded response metadata (ETag, Last-Modified, content hash) against a previous hash, without downloading arbitrary response bodies.","exampleAgentPrompt":"Check if https://api.example.com/status has changed since the last time I looked — the previous hash was abc123def456, and I only want lightweight metadata, not the full body.","exampleUseCases":[{"title":"Poll API for silent updates","prompt":"I need to know if https://api.openai.com/v1/models has changed since yesterday — use the hash 9f3a1c7b2e to compare and tell me if anything in the metadata is different."},{"title":"Monitor docs page for changes","prompt":"Check whether https://docs.stripe.com/api has been updated since my last snapshot — previous hash was d4e5f6a7b8 — and let me know if ETag or Last-Modified indicates a change."},{"title":"Validate content freshness for a cached resource","prompt":"I'm caching https://cdn.example.com/config.json and the hash from my last check was 1a2b3c4d5e — can you tell me if the resource has changed so I know whether to re-fetch it?"}],"resultDescription":"Returns whether the resource has materially changed relative to the previous hash, the new computed hash based on bounded response metadata (ETag, Last-Modified, status code, content-type, content-length), and the raw header values used as evidence — without downloading the full response body.","failureModes":["URL is unreachable or returns a non-2xx status, resulting in an error or inconclusive change signal","Target server does not expose ETag or Last-Modified, reducing detection reliability to content-length/status heuristics","URL pattern does not match ^https?:// or exceeds 2048 characters, causing validation rejection","Previous hash is malformed or from a different endpoint, producing a spurious change detection","Redirects that alter the final URL may cause hash mismatches unrelated to content changes"],"whenToPreferThis":"Choose this endpoint when you need lightweight, deterministic change detection for a public HTTP resource without the cost or bandwidth of downloading the full body. It is ideal for polling scenarios, cache-freshness checks, and monitoring pipelines where ETag and Last-Modified headers are sufficient evidence. Prefer it over full-body scraping when you only care whether something changed, not what changed.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-02T00:46:19.699Z","isFirstParty":false,"canonicalSlug":"forest-infra-http-change-detection-6c1b0a41"}