Skip to content
Mekler AIGet started

Mekler AI / API Schema Monitor

Service details

API Schema Monitor

Watch a public JSON API hourly and learn when it stops meeting your declared requirements. Your assistant calls the service and brings the result back into your task.

Monitor a public JSON API hourly against explicit schema requirements for seven days

0.5 USDC per seven-day hourly monitoring term

Paid only. No free trial for this operation.

This operation needs paid setup. New to Mekler? Start with a free sample task →

Know its boundaries.

  • Checks the supplied JSON Schema requirements against one fetched response only; no automatic semantic or universal compatibility claim.
  • Only public unauthenticated HTTPS GET without redirects, custom headers or cookies. Source authorization remains the buyer responsibility.
  • Pagination is not followed. Empty arrays validate unless minItems is specified. Optional fields may be absent.
  • Hourly scheduling is best effort. Missed slots, source errors and incomplete samples remain visible and cannot establish a healthy contract.
  • Alerts are private data returned by retrieve-monitor; no email, webhook or push delivery is included.

Prepare your private monitor request.

Generate a fresh owner key locally. The example key is public and must never authorize a real monitor. This command creates an owner-only file and refuses to overwrite it; replace the target and schema with your own requirements before payment.

python3 - <<'PY'
import json, os, secrets, uuid

request = {"request_id": uuid.uuid4().hex, "owner_key": secrets.token_hex(32),
    "url": "https://api.mekler.ai/health", "schema": {"type": "object",
    "required": ["status"], "properties": {"status": {"type": "string", "const": "ok"}}}}
# Set the target and requirements for your own authorized API before buying.
# Create once; preserve this private file and the original payment proof.
fd = os.open("mekler-monitor-request.json", os.O_WRONLY | os.O_CREAT | os.O_EXCL, 0o600)
with os.fdopen(fd, "w") as output:
    json.dump(request, output)
print("Saved private request to mekler-monitor-request.json. Keep it private.")
PY

After finalized payment, keep the monitor ID, original request file and payment proof. Retrieve current status and alerts using the monitor ID in JSON and your private owner key as an Authorization bearer value. These follow-up calls are free; no alert email or webhook is sent.

Data handling

Mekler discloses only the target request to that public host. No custom credentials are accepted. Requirements, target URL and monitor history are encrypted at rest; owner keys are stored as HMACs. Raw source bodies are discarded after assessment; customer inputs/results/proofs never enter telemetry. Capability values belong in the Authorization header, never URLs.

Input example and exact contract
{
  "request_id": "schema-monitor-example-01",
  "owner_key": "1111111111111111111111111111111111111111111111111111111111111111",
  "url": "https://api.mekler.ai/health",
  "schema": {
    "type": "object",
    "required": [
      "status"
    ],
    "properties": {
      "status": {
        "type": "string",
        "const": "ok"
      }
    }
  }
}

API reference: input, output and error schemas →

Example output
{
  "status": "ok",
  "monitor_id": "7ba23e2c5cc7c11246d33660534b28f6a250ef749ec15ba3",
  "term_seconds": 604800,
  "interval_seconds": 3600,
  "maximum_observations": 168,
  "initial_observation": {
    "state": "healthy",
    "at": 1000,
    "errors": [],
    "error_limit_reached": false,
    "sample_bytes": 15,
    "coverage": "one_response_no_pagination",
    "signature": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
    "attempts": [
      {
        "state": "healthy",
        "at": 1000,
        "errors": [],
        "error_limit_reached": false,
        "sample_bytes": 15,
        "coverage": "one_response_no_pagination",
        "signature": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945"
      }
    ]
  },
  "limitations": [
    "Checks the supplied JSON Schema requirements against one fetched response only; no automatic semantic or universal compatibility claim.",
    "Only public unauthenticated HTTPS GET without redirects, custom headers or cookies. Source authorization remains the buyer responsibility.",
    "Pagination is not followed. Empty arrays validate unless minItems is specified. Optional fields may be absent.",
    "Hourly scheduling is best effort. Missed slots, source errors and incomplete samples remain visible and cannot establish a healthy contract.",
    "Alerts are private data returned by retrieve-monitor; no email, webhook or push delivery is included."
  ],
  "next_step": "Retrieve the monitor privately with monitor_id and your original owner_key. Scheduling starts only after finalized settlement."
}
Calling, result interpretation and recovery

Calling

Endpoint

POST /v1/services/schema-monitors/create-monitor

Content type

application/json

Input

Generate request_id (16–64 ASCII letters/digits/_/-) and owner_key (32 cryptographically random bytes encoded as 64 lowercase hex characters). Supply canonical public HTTPS url without query or fragment, and explicit bounded JSON Schema. The all-ones example key is illustrative: replace it before buying. Retrieve/delete with monitor_id in JSON and Authorization: Bearer <owner_key>.

Interpret the result

Purchase

status ok is a purchased historical receipt. Scheduling activates only after settlement; retrieve-monitor reports the current term status.

Healthy

The sampled response met declared requirements. It cannot establish semantic correctness, all-page coverage or future compatibility.

Violation

Two observations agree on schema error paths/keywords. Read errors; only the supplied requirements establish the contract.

Unknown

Source, precision, size, transport or inconsistent-confirmation evidence is insufficient. The last confirmed fault survives.

Alerts

contract_violation, contract_recovered, source_unavailable and source_recovered are returned privately. Read last_checked_at, next_check_at and missed_slots; no callback is sent.

Recovery

Resend identical purchase JSON and original proof for the identical receipt. This never extends or reactivates a deleted/expired term.

Limits

Request bytes

12000

Semantics
  • One endpoint, seven days from finalized activation, initial observation plus at most 167 hourly slots. Missed slots are recorded and never replayed in a burst.

  • Public port-443 HTTPS GET only. No redirects, authentication, query strings, cookies or request bodies. Up to two 4-second requests per scheduled observation.

  • Response must be HTTP 200 application/json or application/*+json, uncompressed, UTF-8, at most 64 KiB, depth 16 and 5000 JSON nodes. Duplicate keys and unsupported numeric precision remain unknown.

  • Bounded Draft 2020-12 subset: type, properties, required, additionalProperties, items, enum, const, numeric/length/array/object bounds and explicit date-time/UUID/IP formats. No references, regexes or external schemas. Schema nesting at most 8; property names at most 64 characters and schema paths at most 512 characters.

  • Only fetched response is assessed. Supply minItems to require data; declare required fields and nullability. More fields and optional-field absence are harmless unless explicitly forbidden.

  • Monitor state is retained for up to 30 days after term end; original payment-proof recovery lasts 30 days from the purchased result. Cancellation erases the active URL/schema/history; purchased receipt and payment bindings remain for recovery.

Payment and recovery

Price

0.5 native USDC per seven-day term

Network

Solana mainnet or Base mainnet

Protocol

x402 v2 exact

Quote

POST intended JSON unsigned for an input-bound 402 without target access or monitor creation. Successful initial assessment and encrypted purchase preparation occur before settlement; only finalized settlement activates the term.

Authorization

Choose one accepts entry with a standard x402 v2 client. Check native USDC, network, recipient, amount and intended input before signing. Solana uses an SVM transaction; Base uses an EOA EIP-3009 authorization (USD Coin version 2). Send the proof with identical JSON input. No API key, token approval, bridge or Solana wallet is needed for Base. Never automatically fall back to another network.

Retry

Resend identical JSON and original proof to recover the same purchased receipt for 30 days. Never buy a replacement after timeout or pending settlement.

Finality

A 202 is pending. Finalized delivery carries PAYMENT-RESPONSE; a 200 labeled provisional does not establish finality and its monitor remains prepared. Once the payment ledger is finalized, the service activates the full term automatically without another purchase or proof retry. Use free retrieve-monitor to inspect monitor_state. Preserve the original proof for receipt recovery.

Expiry

Each explicit purchase provides seven days. There is no automatic renewal or recurring charge. Original-proof recovery cannot extend or reactivate an expired/deleted monitor.

Networks
  • solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp

  • eip155:8453

Assets
Solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp

EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v

Eip155:8453

0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Fees

CDP sponsors the payment transaction gas on both networks. The service price is the same on either network; wallet funding or exchange fees are separate.

Request binding

The server authenticates the complete quote and input and atomically binds the first accepted authorization to them. Standard Base EIP-3009 signs the money terms and nonce, not HTTP content. Keep signatures private; do not reuse an authorization for another quote, operation or body.