ARC · DEVELOPERS · MCP TOOLS · READ THE DATA

ask_arc

Ask ARC

Read the public ARC Index for a brand, a store or product URL, or a category: can agents buy, the score, both buy lanes and evidence, including agent_rails.checkout_webmcp (Shopify-only status, nullable detected, tool names, reason; buyer approval required).

NO LOGIN

What it does

Read the public ARC Index with no login. Given a brand, a product or store URL, or a category (running shoes, leggings, footwear), return whether agents can reach checkout, the score, rivals Grok named when a real read exists, evidence receipts, and both buy lanes. buy.agent_catalog is a live HTTP check. buy.browser is the browser cart. agents_can_buy is true when the catalog returned a checkout link or a browser shopper added the product to the cart (ARC stops before payment; it is not a completed purchase). The catalog check does not change the score and is not a browser session or any third-party agent product; browser cart results come from ARC browser shoppers A–E. Does not start a scan and does not spend a model call. A Grok fact check is a real model call via API, not the consumer Grok app. Rivals are omitted when that read does not exist. grok_read.status is pending when the answer was cut off and is waiting for a re-check. That is not a fact Grok didn't know.

Limits: 120 Index reads per network per UTC day and 30 a minute. Free; does not start a scan.

Arguments

NameTypeRequiredDescription
urlstringnoBrand, store, or product URL already on the ARC Index.
brandstringnoBrand name, e.g. Allbirds.
categorystringnoIndex category or shopper words, e.g. footwear, running shoes, leggings.
qstringnoFree-text brand, product, or category query.
Full input JSON Schema
INPUT SCHEMA
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Brand, store, or product URL already on the ARC Index."
    },
    "brand": {
      "type": "string",
      "description": "Brand name, e.g. Allbirds."
    },
    "category": {
      "type": "string",
      "description": "Index category or shopper words, e.g. footwear, running shoes, leggings."
    },
    "q": {
      "type": "string",
      "description": "Free-text brand, product, or category query."
    }
  }
}

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 · 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":"ask_arc","arguments":{"brand":"Allbirds"}}}'
JAVASCRIPT
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": "ask_arc",
      "arguments": {
        "brand": "Allbirds"
      }
    }
  }),
});
const { result } = await res.json();
const data = JSON.parse(result.content[0].text); // result.isError is true on errors
console.log(data);
PYTHON
import json, requests

res = requests.post("https://www.arcreport.ai/api/ask", json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "ask_arc",
        "arguments": {
            "brand": "Allbirds"
        }
    }
}, timeout=30)
result = res.json()["result"]
print(json.loads(result["content"][0]["text"]))

REST equivalent

GET /api/ask. Documented in openapi.json.

CURL · GET
curl -s 'https://www.arcreport.ai/api/ask?brand=Allbirds'