XGuard
PUBLIC SOURCES → USABLE OUTPUT

Structured product offer comparison

Extract and normalize Schema.org offers from up to three supplied product pages; group matching identifiers and currencies with source evidence.

Try extraction free

No account. No API key. 0.006000 USDC per execution.

ONE REQUEST TO START
curl https://api.xguardgate.com/v1/execute \
  -H 'content-type: application/json' \
  -d '{"intent":"Extract product offers","urls":["https://www.adafruit.com/product/50"]}'

The demo runs the real parser on labelled sample HTML.

What comes back

Validated offer fields and comparable groups; missing identifiers and unsupported pages are explicitly reported.

When to use it

Compare machine-readable offers across supplied merchant pages without writing multiple fetchers, parsers and matching rules.

Limits

Latency: measured figures are not yet available; source timeouts are bounded. No SLA.

Machine contract

Input and output schemas · OpenAPI: xguardExecute · MCP: xguard_execute · A2A skill: product-offers

Input schema
{
  "type": "object",
  "properties": {
    "intent": {
      "oneOf": [
        {
          "type": "string",
          "maxLength": 3000
        },
        {
          "type": "object"
        }
      ]
    },
    "capability": {
      "type": "string",
      "enum": [
        "extract-preview",
        "web-extraction",
        "product-offers",
        "feed-digest"
      ]
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "urls": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "type": "string",
        "format": "uri"
      }
    },
    "sources": {
      "type": "array",
      "maxItems": 3,
      "items": {
        "oneOf": [
          {
            "type": "string",
            "format": "uri",
            "pattern": "^https://"
          },
          {
            "type": "object",
            "required": [
              "url"
            ],
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "fallbacks": {
                "type": "array",
                "maxItems": 1,
                "items": {
                  "type": "string",
                  "format": "uri"
                }
              }
            },
            "additionalProperties": false
          }
        ]
      }
    },
    "action": {
      "type": "string"
    },
    "desired_action": {
      "type": "string"
    },
    "html": {
      "type": "string",
      "maxLength": 12288
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "max_age_seconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 60,
      "default": 0
    },
    "query": {
      "type": "string",
      "maxLength": 200
    },
    "testnet": {
      "type": "boolean",
      "default": false
    },
    "input": {
      "type": "object"
    },
    "arguments": {
      "type": "object"
    },
    "name": {
      "type": "string"
    },
    "tool": {
      "type": "string"
    },
    "operation": {
      "type": "object",
      "description": "Resolved read-only OpenAPI operation with URL, method and desired action; no remote spec fetching."
    },
    "http": {
      "type": "object"
    },
    "command": {
      "type": "string"
    },
    "task": {
      "type": "object"
    }
  },
  "additionalProperties": false,
  "description": "Use intent:'demo' for a free result. Paid outcomes accept supported English/Arabic intents with public sources. Unknown jobs return repair guidance; this is not a general-purpose language model.",
  "examples": [
    {
      "intent": "Extract product offers",
      "urls": [
        "https://www.adafruit.com/product/50"
      ]
    }
  ]
}
Output schema
{
  "type": "object",
  "required": [
    "ok",
    "intent",
    "capability",
    "result",
    "verification",
    "cost",
    "receipt"
  ],
  "properties": {
    "ok": {
      "const": true
    },
    "intent": {
      "type": "object"
    },
    "capability": {
      "type": "string"
    },
    "result": {
      "type": "object"
    },
    "verification": {
      "type": "object"
    },
    "cost": {
      "type": "object"
    },
    "receipt": {
      "type": [
        "object",
        "null"
      ]
    }
  }
}

Less work between intent and result.

01 / DESCRIBE

Tell us the outcome.

Send pages, product URLs or feeds. For a technology digest, the source set is already provided.

02 / AUTHORIZE

See the exact price.

A paid request returns a signed 402. Your funded x402 client authorizes that request and retries it automatically.

03 / USE

Get a consistent answer.

Receive normalized records, coverage, source digests and a signed receipt. Identical paid retries recover the stored outcome.

A signed source digest records what was observed. It does not prove that an article is true, a merchant price is current at checkout, or multiple pages are independent sources.

Bring your agent.

REST: POST /v1/execute · MCP: xguard_execute · A2A skills · Short agent instructions

JavaScript and Python examples
// JavaScript: free first result
const response = await fetch('https://api.xguardgate.com/v1/execute', {
  method: 'POST', headers: {'content-type': 'application/json'},
  body: JSON.stringify({intent: 'demo'})
});
console.log(await response.json());

# Python: free first result
import requests
print(requests.post('https://api.xguardgate.com/v1/execute', json={'intent': 'demo'}).json())

Cursor · VS Code · Claude Code · Codex configuration

Installing an MCP server does not supply a funded wallet. Advanced scoped vendor actions and operator credits remain at operator pricing.