Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "fresh402_extract"
⟨24 unchanged words⟩ no watch or prior registration is needed. Optional feed_mode:entries projects bounded RSS2/Atom IDs, declared links, timestamps, content fingerprints and indexed source evidence; omit for original XML-as-text behavior. No feed crawling or background subscription. Optional CSS scope, noise exclusions and exact JSON Pointer ⟨216 unchanged words⟩
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"allOf":[{"not":{"anyOf":[{"required":["selector"]},{"required":["ignore_selectors"]},{"required":["ignore_json_paths"]},{"required":["json_pointer"]},{"required":["json_pointers"]}],"required":["feed_mode"]}}],"description":"Extract a required public URL without ⟨15 unchanged words⟩ the two include flags control supplementary HTML data. Opt-in feed_mode:'entries' projects bounded RSS2/Atom; omit to preserve original extraction. Unknown fields are rejected.","examples":[{" ⟨13 unchanged words⟩ ["json_pointer","json_pointers"]},"properties":{"feed_mode":{"const":"entries","description":"Optional RSS2/Atom projection: 'entries'. Omit for unchanged XML-as-text extraction and existing hashes. Accepts XML/+xml/text/plain with an RSS2 root or namespaced Atom feed; no RSS1/RDF, HTML repair, DTD or external entity/content fetching. Cannot combine with CSS/JSON selection or exclusions. Limits:262144 UTF-8 source bytes,4096 XML elements,depth32,100 entries,16384 characters/field,131072 projected bytes; excess fails explicitly. Returns feed identity, inert declared links, entry IDs/timestamps/content fingerprints and indexed source evidence. Identical duplicate entries deduplicate; conflicting IDs fail422. Feed text/hash cover the canonical projection; max_chars clips text and omits structured feed when clipped. Existing registration/watch semantics remain unchanged.","type":"string"},"ignore_json_paths":{"description":"Optional array of ⟨590 unchanged words⟩
Added "fresh402_contract_watch", "fresh402_token_facts" and "fresh402_wallet_watch" (5 tools before, 8 now)
Observe code, standard proxy slots, common getters, explicitly selected storage/ABI and bounded selected events at one finalized Base address; optionally compare an owned prior snapshot. Selected single-provider evidence only; unknown controls remain unknown. Commercial input binds to the original x402/MPP/prepaid request and REQUIRED random32-byte private recovery token for x402/MPP. REST sends X-Fresh402-Recovery-Token; MCP sends params._meta['fresh402/recovery-token']. Persist the secret with the original proof/input before authorizing. No client request_id; recovery reuses the original re…
Read contract-reported token identity, metadata, supply and limited control facts at one pinned finalized Base block. No safety score, honeypot/trading simulation, verified-source claim or inferred absence of privileges. Missing or deceptive getter evidence remains unknown/not_assessed. Commercial input binds to the original x402/MPP/prepaid request and REQUIRED random32-byte private recovery token for x402/MPP. REST sends X-Fresh402-Recovery-Token; MCP sends params._meta['fresh402/recovery-token']. Persist the secret with the original proof/input before authorizing. No client request_id; rec…
Read ETH balance snapshots and selected ERC-20-shaped Transfer events for one wallet in a completed bounded finalized page. Save the owned cursor and use a new paid operation for the next page. Not full native/internal/NFT/transaction history; provider-reported logs cannot prove completeness. Commercial input binds to the original x402/MPP/prepaid request and REQUIRED random32-byte private recovery token for x402/MPP. REST sends X-Fresh402-Recovery-Token; MCP sends params._meta['fresh402/recovery-token']. Persist the secret with the original proof/input before authorizing. No client request_i…
Changed the definition of "fresh402_check", "fresh402_extract", "fresh402_openapi_contract_diff" and 2 more
Check whether public HTML, JSON or text changed; optional html_attributes on a new URL watch detects same-text link and selected attribute changes without altering older watches; use for on-demand freshness checks and a compact ⟨221 unchanged words⟩
⟨58 unchanged words⟩ ":["watch_id"]}],"properties":{"html_attributes":{"description":"Optional HTML-only watch rule: up to4 of href,title,alt,aria-label; default[] retains existing text-only normalization. Distinct names are sorted; nonempty rules create a separate version1 watch/baseline. Records bounded meaningful attributes within the saved selector or filtered page, including same-text link destination changes. Cannot be supplied with watch_id, even[]. Unsafe hrefs are hashed, never fetched. Limits:200 elements,2048 characters/value,32768 evidence bytes; excess fails, never clips silently.","items":{"description":"One explicitly observed HTML attribute: href (a/area only),title,alt or aria-label. No class/style/event attributes; links are inert evidence and never fetched.","enum":["alt","aria-label","href","title"],"type":"string"},"maxItems":4,"type":"array"},"
Changed the definition of "fresh402_check" and "fresh402_extract"
⟨50 unchanged words⟩ main","url":"https://example.com/docs"}],"oneOf":[{"required":["url"]},{"required":["watch_id"]}],"properties":{"ignore_json_paths":{"description":"Optional ⟨489 unchanged words⟩
⟨26 unchanged words⟩ or prior registration is needed. Optional CSS scope, noise exclusions andnoiseexactexclusions;JSON Pointer selection via json_pointer (JSON only; missing fields return 422). Omit json_pointer to retain full-document extraction.
Changed the definition of "fresh402_check", "fresh402_extract" and "fresh402_register"
⟨426 unchanged words⟩ with no credentials/private targets, e.g. 'https://example.com/docs'. Fresh402's own service URLs, including its discovery /openapi.json, cannot be targets; choose an external public document. With url, optional content rules identify the watch; ⟨90 unchanged words⟩
⟨396 unchanged words⟩ embedded credentials, private/local targets or authenticated pages. Fresh402's own service URLs, including its discovery /openapi.json, cannot be targets; choose an external public document. HTML, JSON and plain text are supported; JavaScript ⟨20 unchanged words⟩
Changed the definition of "fresh402_check", "fresh402_extract", "fresh402_openapi_contract_diff" and 1 more
⟨115 unchanged words⟩ "fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. When root mpp_payments.enabled is true, native MPP EVM charge is another option at the same USDC price: use an authorized Base EIP-712 signer and official mppx client, org.paymentauth/credential metadata and a persisted private recovery token. MPP receipt: org.paymentauth/receipt; see docs/MPP.md. Never combine MPP, prepaid and x402. Discover packages at /v2/prepaid/plans; see ⟨5 unchanged words⟩ bounded early credits and recovery. No JavaScript execution. Optional Circle Gateway x402 is available only when root circle_gateway.enabled is true. Use the GatewayWalletBatched quote, a funded Base Gateway EOA and a persisted private recovery token. Pending batches return 409; replay the original proof/input/token after 60 seconds. Results require Gateway confirmed/completed evidence; never mix providers. No Circle prepaid funding. See docs/CIRCLE_GATEWAY.md.
Changed the definition of "fresh402_check", "fresh402_extract", "fresh402_openapi_contract_diff" and 1 more
⟨93 unchanged words⟩ a payment challenge, not a paid result.Prepaid creditsAlternatively useseparateprepaid credits through RESTendpoints.or this MCP tool: X-Fresh402-API-Key in HTTP, with params._meta["fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. Never combine prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery. No JavaScript execution.
Changed the definition of "fresh402_check", "fresh402_extract", "fresh402_openapi_contract_diff" and 2 more
CheckawhetherpersistentpublicwatchHTML, JSON orURLtext changed; use forchangeson-demand freshness checks and a compact deterministic text diff,withnotnoisebackgroundfilteringmonitoring. Supply exactly one of url or watch_id. A URL-based paid Check can create a watch; an ID reuses its saved URL/rules
Certificate recorded, valid to 2026-12-27
Authorization not required
Added "fresh402_openapi_contract_diff" (4 tools before, 5 now)
Compare a registered public JSON OpenAPI 3.0/3.1 contract against its baseline or previous snapshot. Deterministic structural compatibility evidence; no remote references or LLM.
Changed the definition of "fresh402_smart_diff"
⟨20 unchanged words⟩ ,"type":"string"},"watch_id":{"description":"Required ID returned by free fresh402_register or POST /v1/register. Example IDs are illustrative; replace them with a returned watch ID before paying.","pattern":"^w_[a-f0-9]{32}$","type ⟨5 unchanged words⟩
Unknown → Live
First tool surface recorded: 4 tools (server version 2.0.0)
https://fresh402.kirilllabs.workers.dev/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 15 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨35 unchanged words⟩ exclusions and exact JSON Pointer selection via json_pointer, or an ordered projection of up to8 fields via json_pointers (mutually exclusive; JSONonly;only,missinganyfieldsmissingreturnfield422returns422). One fetch/JSON parse with aggregate work/output limits. Omit json_pointer to retain full-document extraction. max_chars defaults ⟨179 unchanged words⟩
⟨47 unchanged words⟩ main","url":"https://example.com/docs"}],"not":{"required":["json_pointer","json_pointers"]},"properties":{"ignore_json_paths":{"description":"Optional ⟨313 unchanged words⟩ [01])*)?$","type":"string"},"json_pointers":{"description":"Optional ordered1-8 unique exact JSON Pointers; mutually exclusive with json_pointer, JSON only. One fetch and JSON parse; exclusions run first. Any missing/excluded field fails the whole operation with422; null is a valid value. Returns data:[{pointer,value},...] and canonical aggregate text/hash. max_chars clips the aggregate; clipped data is omitted. Combined projection limited to200000 UTF-8 bytes and20000 nodes. Example:['/product/price','/product/stock'].","items":{"description":"One exact RFC6901 pointer: up to256 characters/64 segments; '' selects root, '/' the empty key, '~0'/'~1' escape '~'/'/'. Example:'/product/price'; '*' is literal.","maxLength":256,"pattern":"^(?:\\/(?:[^~]|~[01])*)?$","type":"string"},"maxItems":8,"minItems":1,"type":"array","uniqueItems":true},"max_chars":{"default":20000,"description" ⟨159 unchanged words⟩
Detectstructuralbounded directional compatibilitychangesevidence in a public JSONOpenAPI 3.0/3.1OpenAPI3.0/3.1 contract:pathspaths/methods,methodsrequired fields,parameterssupported scalar type/enum/null domains,requestandrequirementseffective authentication alternatives/scopes. Request acceptance and responseschemas.guarantees have opposite compatibility directions. Complex schema composition, custom dialects, ambiguous visibility and unexpanded references remain review/unknown; no general satisfiability or compatibility proof. Use for API contract review; Smart Diff is ⟨213 unchanged words⟩
⟨29 unchanged words⟩ for Check. Required url plus optional CSS/JSON exclusions and opt-in html_attributes identify the watch; changing rules creates a different ⟨71 unchanged words⟩
⟨63 unchanged words⟩ ":"https://example.com/docs"}],"properties":{"html_attributes":{"description":"Optional HTML-only watch rule: up to4 of href,title,alt,aria-label; default[] retains existing text-only normalization. Distinct names are sorted; nonempty rules create a separate version1 watch/baseline. Records bounded meaningful attributes within the saved selector or filtered page, including same-text link destination changes. Cannot be supplied with watch_id, even[]. Unsafe hrefs are hashed, never fetched. Limits:200 elements,2048 characters/value,32768 evidence bytes; excess fails, never clips silently.","items":{"description":"One explicitly observed HTML attribute: href (a/area only),title,alt or aria-label. No class/style/event attributes; links are inert evidence and never fetched.","enum":["alt","aria-label","href","title"],"type":"string"},"maxItems":4,"type":"array"},"ignore_json_paths":{"description":"Optional array of up ⟨258 unchanged words⟩
⟨50 unchanged words⟩ it when the same-watch snapshot is retained. Uptoto200200content changes;legacyexplicit json_array_keys match unique typed item identities and report moves separately, with pure reorder unchanged and source hashes still order-sensitive. Saved html_attributes rules compare selected links/attributes independently of visible text. Omit new options for existing index/text behavior. Legacy HTML may have text-only fidelity. No LLM, ⟨166 unchanged words⟩
⟨112 unchanged words⟩ ,"baseline"],"type":"string"},"json_array_keys":{"description":"Optional1-4 explicit nonoverlapping JSON array identity rules, JSON only. Omit for existing index comparison. Matches unique typed scalar keys, reports moves separately from content changes; pure reorder is changed:false while source hashes remain order-sensitive. At most2000 combined array items/20000 comparison work units, no fallback for ambiguity. Rules affect this comparison only, not the watch/hash; persist identical input for payment recovery. Example:[{path:'/items',key:'/id'}].","items":{"additionalProperties":false,"description":"Explicit JSON array identity rule. Both paths must resolve; missing/duplicate/invalid identities fail422 without index fallback. Source snapshot ordering/hash is retained.","properties":{"key":{"description":"Nonempty exact RFC6901 pointer within each object item, up to256 characters/64 segments; e.g.'/id' or '/product/sku'. Every key must exist and be a unique nonempty string<=256 characters or safe integer; number1 differs from string'1'.","maxLength":256,"minLength":1,"pattern":"^(?:\\/(?:[^~]|~[01])*)?$","type":"string"},"path":{"description":"Exact RFC6901 pointer to an array on both compared JSON documents, up to256 characters/64 segments. Empty string selects a root array. Example:'/items'; no wildcards or automatic ID guessing.","maxLength":256,"pattern":"^(?:\\/(?:[^~]|~[01])*)?$","type":"string"}},"required":["path","key"],"type":"object"},"maxItems":4,"minItems":1,"type":"array"},"previous_hash":{"description":"Optional explicit reference hash ⟨119 unchanged words⟩
⟨280 unchanged words⟩ linked data.","type":"boolean"},"json_pointer":{"description":"Optional exact RFC 6901 JSON Pointer, at most 256 characters, e.g. '/product/price' or '/items/0/name'. JSON documents only; '~0' means '~' and '~1' means '/'. Empty string selects the whole document. Omit to extract the entire normalized document. Selection runs after ignore_json_paths; a missing or excluded target returns 422. Array indices are zero-based canonical integers; '*' is a literal key, not a wildcard. Returned text/data/hash cover the selected value; max_chars and data_omitted still apply.","maxLength":256,"pattern":"^(?:\\/(?:[^~]|~[01])*)?$","type":"string"},"max_chars":{"default":20000,"description":"Optional ⟨158 unchanged words⟩
⟨279 unchanged words⟩ embedded credentials, private/local targets or authenticated pages. Fresh402's own service URLs, including its discovery /openapi.json, cannot be targets; choose an external public document. HTML, JSON and plain text are supported; JavaScript ⟨20 unchanged words⟩
⟨99 unchanged words⟩ "fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. When root mpp_payments.enabled is true, native MPP EVM charge is another option at the same USDC price: use an authorized Base EIP-712 signer and official mppx client, org.paymentauth/credential metadata and a persisted private recovery token. MPP receipt: org.paymentauth/receipt; see docs/MPP.md. Never combine MPP, prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery. Optional Circle Gateway x402 is available only when root circle_gateway.enabled is true. Use the GatewayWalletBatched quote, a funded Base Gateway EOA and a persisted private recovery token. Pending batches return 409; replay the original proof/input/token after 60 seconds. Results require Gateway confirmed/completed evidence; never mix providers. No Circle prepaid funding. See docs/CIRCLE_GATEWAY.md.
⟨121 unchanged words⟩ "fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. When root mpp_payments.enabled is true, native MPP EVM charge is another option at the same USDC price: use an authorized Base EIP-712 signer and official mppx client, org.paymentauth/credential metadata and a persisted private recovery token. MPP receipt: org.paymentauth/receipt; see docs/MPP.md. Never combine MPP, prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery. Optional Circle Gateway x402 is available only when root circle_gateway.enabled is true. Use the GatewayWalletBatched quote, a funded Base Gateway EOA and a persisted private recovery token. Pending batches return 409; replay the original proof/input/token after 60 seconds. Results require Gateway confirmed/completed evidence; never mix providers. No Circle prepaid funding. See docs/CIRCLE_GATEWAY.md.
⟨116 unchanged words⟩ "fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. When root mpp_payments.enabled is true, native MPP EVM charge is another option at the same USDC price: use an authorized Base EIP-712 signer and official mppx client, org.paymentauth/credential metadata and a persisted private recovery token. MPP receipt: org.paymentauth/receipt; see docs/MPP.md. Never combine MPP, prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery. Optional Circle Gateway x402 is available only when root circle_gateway.enabled is true. Use the GatewayWalletBatched quote, a funded Base Gateway EOA and a persisted private recovery token. Pending batches return 409; replay the original proof/input/token after 60 seconds. Results require Gateway confirmed/completed evidence; never mix providers. No Circle prepaid funding. See docs/CIRCLE_GATEWAY.md.
⟨76 unchanged words⟩ An ordinary MCP client receives a payment challenge.Prepaid creditsAlternatively useseparateprepaid credits through RESTendpoints.or this MCP tool: X-Fresh402-API-Key in HTTP, with params._meta["fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. Never combine prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery.
⟨99 unchanged words⟩ native-USDC payer, otherwise returns a payment challenge.Prepaid creditsAlternatively useseparateprepaid credits through RESTendpoints.or this MCP tool: X-Fresh402-API-Key in HTTP, with params._meta["fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. Never combine prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery.
⟨94 unchanged words⟩ native-USDC payer, otherwise returns a payment challenge.Prepaid creditsAlternatively useseparateprepaid credits through RESTendpoints.or this MCP tool: X-Fresh402-API-Key in HTTP, with params._meta["fresh402/prepaid"] containing idempotency_key, tariff_version and max_credits. Never combine prepaid and x402. Discover packages at /v2/prepaid/plans; see docs/AGENT_PREPAID.md for browserless wallet enrollment, bounded early credits and recovery.
{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"Paid Check input: exactly one of url or watch_id is required. Content rules are allowed only on the url path; watch_id always reuses saved rules. Optional previous_hash overrides the reference hash; max_age_seconds controls cache reuse and include_diff controls text-diff output.","examples":[{"include_diff":true,"max_age_seconds":0,"selector":"main","url":"https://example.com/docs"}],"properties":{"ignore_json_paths":{"description":"Optional JSON-only exclusions, up to 20 paths of 1-256 characters starting with '/'; '~0'/'~1' escapes and '*' segments are supported. Example: ['/updated_at']. Accepted only with url; default []. With watch_id, omit entirely (including []): saved paths are reused.","items":{"description":"JSON Pointer-style path, 1-256 characters, starting with '/'. Decode '~0' as '~' and '~1' as '/'; '*' matches all object keys or array elements. Example: '/items/*/updated_at'.","maxLength":256,"minLength":1,"pattern":" ⟨5 unchanged words⟩ ,"type":"array"},"ignore_selectors":{"description":"Optional HTML-only exclusion array, up to 20 supported CSS selectors of 1-256 characters each, e.g. ['.timestamp']. Accepted only with url; default []. With watch_id, omit the field entirely (including []): saved exclusions are reused.","items":{"description":"HTML element(s) to remove before normalization: a supported CSS selector, 1-256 characters, e.g. '.timestamp' or 'nav'.","maxLength":256,"minLength":1,"type":" ⟨3 unchanged words⟩ ,"type":"array"},"include_diff":{"description":"Optional boolean; runtime default: true. Request a compact deterministic text diff when content changed and compatible prior text is retained. False omits the diff; true cannot recover unavailable old content and does not enable Smart Diff's structural analysis.","type":"boolean"},"max_age_seconds":{"description":"Optional integer cache age in seconds, 0-86400; runtime default: 0. A positive value permits reuse of a sufficiently recent watch result without fetching. Zero contacts the source (conditional HTTP may return 304). Cached Checks still require payment; this does not schedule background polling.","maximum":86400,"minimum":0,"type":"integer"},"previous_hash":{"description":"Optional previous Fresh402 content hash: exactly 64 hexadecimal characters, case-insensitive. Overrides comparison with the watch's current stored hash. Omit to use that stored hash; a new URL watch without a prior hash returns changed:null. Hash comparison does not require retained old text, but a text diff does; a hash cannot reconstruct missing content.","pattern":"^[a-fA-F0-9]{64}$","type":"string"},"selector":{"description":"Optional HTML CSS scope, 1-256 characters, e.g. 'main'; accepted only with url. Omit for the page after built-in noise removal. No match returns 422; not supported for JSON/plain text. With watch_id, omit this field: the saved selector is reused.","maxLength":256,"minLength":1,"type":"string"},"url":{"description":"Supply exactly one of url or watch_id. URL must be absolute public HTTPS on port 443, at most 4096 characters, with no credentials/private targets, e.g. 'https://example.com/docs'. With url, optional content rules identify the watch; an existing watch is reused or a new one is created by this paid Check. Separate registration is not required. No JavaScript rendering.","format":"uri","maxLength":4096,"type":"string"},"watch_id":{"description":"Supply exactly one of watch_id or url. An existing ID returned by fresh402_register (free), POST /v1/register, or a URL-based Check: 'w_' followed by 32 lowercase hexadecimal characters. Reuses that watch's stored URL and rules. When supplied, omit selector, ignore_selectors and ignore_json_paths entirely, even empty arrays. Do not invent an ID.","pattern":"^w_[a-f0-9]{32}$"," ⟨4 unchanged words⟩
Extractmainreadable text, metadata, headings, public links and embedded JSON-LD fromaone publicURLHTTPSwithoutdocument.executingUseJavaScript.to read static HTML, JSONandor plain text; no watch or prior registration is needed. Optional CSSscoping.scope$0.01andUSDC.noise exclusions; max_chars defaults to 20000 and limits returned text, not fetch size. Does not render JavaScript, crawl links or compare versions. $0.010 USDC per call on Base mainnet (eip155:8453), requiring an x402-capable MCP payment client and funded native-USDC payer. An ordinary MCP client receives a payment challenge. Prepaid credits use separate REST endpoints.
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Extract a required public URL without creating or requiring a watch. Optional content rules scope/remove noise; max_chars limits returned text and the two include flags control supplementary HTML data. Unknown fields are rejected.","examples":[{"include_links":true,"include_structured_data":false,"max_chars":20000,"selector":"main","url":"https://example.com/docs"}],"properties":{"ignore_json_paths":{"description":"Optional array of up to 20 JSON Pointer-style paths to remove before JSON normalization and hashing. Each must start with '/' and be 1-256 characters; supports '*' segments. Default: [] (no exclusions). JSON only. Example: ['/updated_at', '/items/*/request_id'].","items":{"description":"JSON Pointer-style path, 1-256 characters, starting with '/'. Decode '~0' as '~' and '~1' as '/'; '*' matches all object keys or array elements. Example: '/items/*/updated_at'.","maxLength":256,"minLength":1,"pattern":" ⟨5 unchanged words⟩ ,"type":"array"},"ignore_selectors":{"description":"Optional array of up to 20 CSS selectors (each 1-256 characters) to remove from HTML in addition to built-in noise filtering. Default: no extra exclusions ([]). HTML only; use ignore_json_paths for JSON. Example: ['.timestamp', '.ad'].","items":{"description":"HTML element(s) to remove before normalization: a supported CSS selector, 1-256 characters, e.g. '.timestamp' or 'nav'.","maxLength":256,"minLength":1,"type":" ⟨4 unchanged words⟩ array"},"include_links":{"default":true,"description":"Optional boolean, default true. Include bounded public links extracted from HTML. False returns an empty links array without changing normalized text or its hash. Does not crawl linked pages; JSON/plain text do not provide HTML links.","type":"boolean"},"include_structured_data":{"default":true,"description":"Optional boolean, default true. Include embedded JSON-LD extracted from HTML in structured_data. False returns an empty structured_data array. This does not control the parsed data field for a JSON document, and does not fetch external linked data.","
CompareDetectastructuralregisteredcompatibility changes in a public JSON OpenAPI 3.0/3.1 contract:againstpaths,itsmethods,baselineparameters, request requirements and response schemas. Use for API contract review; Smart Diff is for general documents. First register the contract URL with free fresh402_register, without selectors or ignore rules, then reuse watch_id. compare_to accepts previoussnapshot.(default)Deterministicorstructuralbaseline;compatibilityanevidence;availablenosame-watchremoteprevious_hashreferencesoverrides it. Limits include 256000 decoded document bytes, 100 paths and 500 operations. No YAML, external reference fetching, API-operation execution, LLM orLLM.complete compatibility guarantee. $0.020 USDC per call on Base mainnet (eip155:8453); requires an x402-capable MCP payment client and funded native-USDC payer, otherwise returns a payment challenge. Prepaid credits use separate REST endpoints.
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Compare a registered, unfiltered public JSON OpenAPI 3.0/3.1 contract; watch_id is required, compare_to defaults to previous, and optional previous_hash overrides it. Bounded structural analysis, not a complete compatibility proof; no YAML, external reference fetching or execution of described API operations. Unknown fields are rejected.","properties":{"compare_to":{"default":"previous","description":"Optional mode: 'previous' (default) compares with the latest saved OpenAPI Contract Diff snapshot; 'baseline' uses its fixed saved baseline. Before contract history exists, the current registered watch state seeds the initial baseline. previous_hash overrides the mode. 'hash' appears only in results, not as an accepted input mode.","enum":["previous","baseline"],"type":"string"},"previous_hash":{"description":"Optional 64-character hexadecimal reference hash, case-insensitive. Prefer a hash returned by OpenAPI Contract Diff for this same watch, matching a retained contract snapshot or fixed baseline. The current registered core hash is also accepted as a fallback: without a matching contract snapshot, the fixed baseline (or registered state if no baseline exists) is used. Overrides compare_to; unavailable hashes return 404. Omit to use the selected mode.","pattern":"^[a-fA-F0-9]{64}$","type":"string"},"watch_id":{"description":"Required existing watch ID: 'w_' plus 32 lowercase hexadecimal characters. Obtain it with free fresh402_register or POST /v1/register using the public JSON OpenAPI 3.0/3.1 URL and no selector or ignore rules. Reuses the saved URL; do not pass url here. YAML, non-OpenAPI documents and scoped/filtered watches are unsupported. Illustrative IDs must be replaced.","pattern":"^w_[a-f0-9]{32}$"," ⟨6 unchanged words⟩
Create or retrieve a free persistentbaseline.baselineExistingforregistrationspublic HTTPS HTML, JSON or plain text. Use before Smart Diff or OpenAPI Contract Diff, or to obtain a reusable watch_id/hash for Check. Required url plus optional CSS/JSON exclusions identify the watch; changing rules creates a different watch. Repeating the same registration returns existing state without fetching or refreshing it. Reuse the actual returned watch_id; neverrefetchinvent an ID. Registration is free ($0), subject to quotas, and requires no x402 payment client; subsequent comparison tools are paid. Check also accepts url directly and can create its watch during thetarget.paid call. No JavaScriptexecution.execution or background monitoring. For OpenAPI comparisons register the JSON contract without any content rules.
{"$schema":"https://json-schema.org/draft/2020-12/schema","description":"Register a free baseline using a required URL and optional content rules. The canonical URL plus rules identify the watch; changing rules creates a different watch. Repeating the same registration returns its existing watch_id/hash without fetching or refreshing it. Quotas apply. Reuse the returned watch_id in Check, Smart Diff or OpenAPI Contract Diff.","examples":[{"ignore_selectors":[".timestamp"],"selector":"main","url":"https://example.com/docs"}],"properties":{"ignore_json_paths":{"description":"Optional array of up to 20 JSON Pointer-style paths to remove before JSON normalization and hashing. Each must start with '/' and be 1-256 characters; supports '*' segments. Default: [] (no exclusions). JSON only. Example: ['/updated_at', '/items/*/request_id'].","items":{"description":"JSON Pointer-style path, 1-256 characters, starting with '/'. Decode '~0' as '~' and '~1' as '/'; '*' matches all object keys or array elements. Example: '/items/*/updated_at'.","maxLength":256,"minLength":1,"pattern":" ⟨5 unchanged words⟩ ,"type":"array"},"ignore_selectors":{"description":"Optional array of up to 20 CSS selectors (each 1-256 characters) to remove from HTML in addition to built-in noise filtering. Default: no extra exclusions ([]). HTML only; use ignore_json_paths for JSON. Example: ['.timestamp', '.ad'].","items":{"description":"HTML element(s) to remove before normalization: a supported CSS selector, 1-256 characters, e.g. '.timestamp' or 'nav'.","maxLength":256,"minLength":1,"type":" ⟨3 unchanged words⟩ ,"type":"array"},"selector":{"description":"Optional HTML scope: a supported CSS selector, 1-256 characters, e.g. 'main' or 'article .content'. Only matching text is normalized; no match returns 422. Omit to normalize the page after built-in noise removal. Not supported for JSON or plain text.","maxLength":256,"minLength":1,"type":"string"},"url":{"description":"Required absolute public HTTPS document URL, at most 4096 characters, e.g. 'https://example.com/docs'. Only port 443; no embedded credentials, private/local targets or authenticated pages. HTML, JSON and plain text are supported; JavaScript is not executed. DNS, redirect and size limits also apply.","format":"uri","maxLength":4096,"type ⟨5 unchanged words⟩
Compare a watch with itsExplainpreviousstructuredSmartchangesDiffinsnapshotaorregisteredfixedpublicbaseline.document: JSON Pointer changes, HTML block changes andexplaineddeterministic significancerules;hints.deterministicUse instead of Check when a changed/unchanged flag or short text diff is insufficient. First obtain watch_id with free fresh402_register; saved URL/rules are reused. compare_to is previous (default) or baseline; previous_hash overrides it when the same-watch snapshot is retained. Up to 200 changes; legacy HTML may have text-only fidelity. No LLM,noJavaScriptLLM.rendering or complete API compatibility guarantee. $0.015USDC.USDC per call on Base mainnet (eip155:8453); requires an x402-capable MCP payment client and funded native-USDC payer, otherwise returns a payment challenge. Prepaid credits use separate REST endpoints.
{"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"description":"Compare a required existing watch against previous or baseline (default previous), or use previous_hash to override the mode. Fetches the current source using saved rules; no cache-age option. Truncated or incompatible legacy baselines can return 409; legacy HTML may have text-only fidelity. Unknown fields are rejected.","properties":{"compare_to":{"default":"previous","description":"Optional comparison mode: 'previous' (default) uses the latest Smart Diff snapshot, falling back to the current registered watch state on the first call. 'baseline' uses the fixed Smart Diff baseline, initially seeded from the earliest retained compatible watch snapshot. previous_hash overrides either mode. 'hash' is a result label, not an accepted input value.","enum":["previous","baseline"],"type":"string"},"previous_hash":{"description":"Optional explicit reference hash: 64 hexadecimal characters, case-insensitive, from this same watch's retained Smart Diff snapshot, fixed baseline or retained registration/Check snapshot. Overrides compare_to. Unknown or pruned hashes return 404; recent snapshot history is limited to 20 per store, with the fixed Smart Diff baseline retained separately. Omit for the selected mode.","pattern":"^[a-fA-F0-9]{64}$","type":"string"},"watch_id":{"description":"Required existing watch ID: 'w_' plus 32 lowercase hexadecimal characters, returned by free fresh402_register or POST/v1/register./v1/registerExample(aIDsURL-basedareCheck