ARC · DEVELOPERS · MCP TOOLS · CHECK A STORE
validate_ucp_profile
Validate a UCP profile
Validate a store's /.well-known/ucp (by host or pasted JSON) against the published UCP 2026-08-25 schema and spec rules. Errors, warnings and spec links.
What it does
Validate a Universal Commerce Protocol (UCP) business profile against the published UCP JSON Schema (current release) and spec rules: authority binding, https endpoints, orphaned extensions and, for a URL, hosting headers (no redirects, Cache-Control public max-age>=60). Pass url (store host, homepage or profile URL; /.well-known/ucp is added for a homepage) or profile (the JSON). Returns errors, warnings and info, each with a path and the spec section. Free, no login, no model call. Validation is not certification. JSON: GET /api/ucp/validate?url=
Limits: 300 validations per network per day.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | no | Store host, homepage or profile URL, e.g. allbirds.com |
| profile | any JSON | no | The profile JSON (object or string) to validate without fetching. |
Full input JSON Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Store host, homepage or profile URL, e.g. allbirds.com"
},
"profile": {
"description": "The profile JSON (object or string) to validate without fetching."
}
}
}Call it
From Claude, Cursor, ChatGPT or VS Code, connect the server (config) and ask in plain words; the client picks the tool. Or call it directly with JSON-RPC:
curl -s https://www.arcreport.ai/api/ask \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"validate_ucp_profile","arguments":{"url":"allbirds.com"}}}'const res = await fetch("https://www.arcreport.ai/api/ask", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "validate_ucp_profile",
"arguments": {
"url": "allbirds.com"
}
}
}),
});
const { result } = await res.json();
const data = JSON.parse(result.content[0].text); // result.isError is true on errors
console.log(data);import json, requests
res = requests.post("https://www.arcreport.ai/api/ask", json={
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "validate_ucp_profile",
"arguments": {
"url": "allbirds.com"
}
}
}, timeout=30)
result = res.json()["result"]
print(json.loads(result["content"][0]["text"]))REST equivalent
GET /api/ucp/validate. POST {"profile": {...}} to validate JSON without fetching. Documented in openapi.json.
curl -s 'https://www.arcreport.ai/api/ucp/validate?url=allbirds.com'