Card snapshot
quanticdata.io
·
2026-10-09 18:23:35 UTC
·
5c1fc19c0fbd9dd23180202eaebe467a4c546deceb6039fba653ad0147db003a
This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.
{
"name": "QuanticData Data API",
"description": "QuanticData Data API as an A2A agent: scrape any URL, search the web (SERP), map and crawl sites, run ready-made collectors and build datasets \u2014 through a residential, ISP and mobile proxy network. Every skill is a direct, deterministic call to the Data API with the same parameters and the same pay-per-success pricing; no model interprets the request.",
"supportedInterfaces": [
{
"url": "https://api.quanticdata.io/a2a",
"protocolBinding": "JSONRPC",
"protocolVersion": "1.0"
}
],
"provider": {
"organization": "QuanticData",
"url": "https://quanticdata.io"
},
"version": "1.0.0",
"documentationUrl": "https://quanticdata.io/docs/",
"capabilities": {
"streaming": false,
"pushNotifications": false,
"extendedAgentCard": true
},
"securitySchemes": {
"apiKey": {
"httpAuthSecurityScheme": {
"scheme": "bearer",
"bearerFormat": "QuanticData API key (qd_live_\u2026 from https://app.quanticdata.io/api-keys)",
"description": "Authorization: Bearer qd_live_<64 hex>. The same key, rate limits and pay-per-success billing as the REST Data API: an A2A call costs what the underlying endpoint costs."
}
},
"oauth2": {
"oauth2SecurityScheme": {
"flows": {
"authorizationCode": {
"authorizationUrl": "https://app.quanticdata.io/oauth/authorize",
"tokenUrl": "https://app.quanticdata.io/api/v1/oauth/token",
"refreshUrl": "https://app.quanticdata.io/api/v1/oauth/token",
"scopes": {
"mcp": "Call the hosted MCP server on behalf of the account"
},
"pkceRequired": true
}
},
"oauth2MetadataUrl": "https://app.quanticdata.io/.well-known/oauth-authorization-server",
"description": "OAuth 2.1 authorization server of the account (RFC 8414 metadata above, dynamic client registration, PKCE). Its access tokens are accepted today by the MCP endpoint (https://api.quanticdata.io/mcp) only \u2014 the A2A endpoint requires the API key scheme. Listed for discovery; not a requirement of this agent."
}
}
},
"securityRequirements": [
{
"schemes": {
"apiKey": {
"list": []
}
}
}
],
"defaultInputModes": [
"application/json",
"text/plain"
],
"defaultOutputModes": [
"application/json",
"text/plain"
],
"skills": [
{
"id": "scrape_url",
"name": "Scrape a URL",
"description": "Fetch one page through the proxy network and return it as markdown, html or text, optionally with a structured extraction schema (CSS selectors), a screenshot or browser actions. Same parameters as POST /v1/scrape (url, format, engine, render, country, extract, actions, screenshot \u2026). Completes in the same call.",
"tags": [
"scrape",
"extract",
"markdown",
"proxy",
"web"
],
"examples": [
"{\"skill\":\"scrape_url\",\"input\":{\"url\":\"https://example.com/pricing\",\"format\":\"markdown\",\"country\":\"us\"}}",
"{\"skill\":\"scrape_url\",\"input\":{\"url\":\"https://example.com/pricing\",\"extract\":{\"title\":\"h1\",\"price\":\".price\"}}}"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "web_search",
"name": "Web search (SERP)",
"description": "Structured search results from Google, Bing or DuckDuckGo: organic results, shopping, images, news, places, maps, jobs, autocomplete and the other verticals. Same parameters as POST /v1/serp (query, engine, search_type, country, lang, num, page, device, location \u2026). Completes in the same call.",
"tags": [
"search",
"serp",
"google",
"bing",
"duckduckgo"
],
"examples": [
"{\"skill\":\"web_search\",\"input\":{\"query\":\"best espresso machines 2026\",\"country\":\"us\",\"num\":10}}",
"{\"skill\":\"web_search\",\"input\":{\"query\":\"pizzeria napoli\",\"search_type\":\"places\",\"country\":\"it\",\"lang\":\"it\"}}"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "map_site",
"name": "Map a site",
"description": "Discover the URLs of a site from its sitemaps and homepage links, with per-section counts. Same parameters as POST /v1/map (url, limit, search, includeSubdomains, sitemapOnly, group_by, country). Completes in the same call.",
"tags": [
"map",
"sitemap",
"urls",
"discovery"
],
"examples": [
"{\"skill\":\"map_site\",\"input\":{\"url\":\"https://example.com\",\"limit\":100,\"search\":\"blog\"}}"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "crawl_site",
"name": "Crawl a site",
"description": "Crawl up to 500 pages from a seed URL and return each page as markdown, html or text. Same parameters as POST /v1/crawl (url, limit, depth, format, contentMode, render, include, exclude, country). Asynchronous: the task stays TASK_STATE_WORKING while the job runs; poll it with GetTask, the crawled pages arrive as an artifact when it is TASK_STATE_COMPLETED. CancelTask stops the job.",
"tags": [
"crawl",
"spider",
"markdown",
"async"
],
"examples": [
"{\"skill\":\"crawl_site\",\"input\":{\"url\":\"https://docs.example.com\",\"limit\":50,\"depth\":3,\"include\":[\"/guides/*\"]}}"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "run_collector",
"name": "Run a collector",
"description": "Run one of the ready-made collectors (Amazon, Google Maps, app stores, job boards, \u2026) with its semantic input and get typed rows back. Input: {\"slug\": \"<collector slug>\", ...collector input} \u2014 same body as POST /v1/scraper/collectors/{slug}/run; the catalog with each collector's input_schema is GET /v1/scraper/collectors. Short runs complete in the same call; long runs return a TASK_STATE_WORKING task to poll with GetTask. Collector runs cannot be canceled.",
"tags": [
"collector",
"dataset",
"rows",
"e-commerce",
"maps",
"jobs"
],
"examples": [
"{\"skill\":\"run_collector\",\"input\":{\"slug\":\"amazon_search\",\"keyword\":\"espresso machine\",\"country\":\"us\",\"max_results\":20}}",
"{\"skill\":\"run_collector\",\"input\":{\"slug\":\"google_maps_places\",\"query\":\"dentist\",\"location\":\"Milan, Italy\",\"async\":true}}"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json",
"text/plain"
]
},
{
"id": "build_dataset",
"name": "Build a dataset",
"description": "Build a dataset from a natural-language prompt: the pipeline searches, maps and scrapes the sources and returns validated rows with the requested columns. Same parameters as POST /v1/scraper/datasets (prompt, columns, country, sources, limits, webhook, refresh, refreshUrls). Asynchronous: poll the task with GetTask; the rows and download links arrive as an artifact at TASK_STATE_COMPLETED. CancelTask stops the job.",
"tags": [
"dataset",
"pipeline",
"rows",
"async"
],
"examples": [
"{\"skill\":\"build_dataset\",\"input\":{\"prompt\":\"Italian B2B SaaS companies with pricing pages\",\"columns\":[\"name\",\"website\",\"pricing_url\"],\"country\":\"it\",\"limits\":{\"max_rows\":100}}}"
],
"inputModes": [
"application/json",
"text/plain"
],
"outputModes": [
"application/json",
"text/plain"
]
}
]
}