Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Growaify Autonomous Agent Commerce Agentready API
version: 2.3.0
description: 'Autonomous agent commerce API. Everything under /x402 is sold for USDC on Base over x402: unpaid requests answer HTTP 402 and the deliverable ships in the paid response. Everything else is free to read.'
servers:
- url: https://growaify.com
description: Production Engine
tags:
- name: Agentready
paths:
/api/v1/agentready/scan:
post:
summary: Scan a website for AI-agent readiness
description: 'Runs 26 tests against a public website and answers one question per test: can an AI agent find it, understand the offer, reach the systems, trust the transaction, get to checkout, and pay. Returns a weighted score (discovery 20, understanding 20, access 15, trust 15, commerce 15, payment 15), the issues in plain language with a severity each, and the evidence for every test. A test that could not be measured is reported as `unmeasured` and is excluded from the score rather than counted against the site. Publicly reachable addresses only; private, loopback and link-local targets are refused. Rate limited to 6 scans per 10 minutes per address.'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- url
properties:
url:
type: string
example: https://example.com/
responses:
'200':
description: url, scanned_at, score {overall, band, categories, tests_total, tests_unmeasured}, issues {counts, items}, tests[] with id, category, question, weight, status (ok|partial|missing|unmeasured), severity, finding (written for the site owner), technical (the evidence), fix; fix_summary {files, count, note}; took_ms.
'400':
description: the address is missing, or not publicly reachable
'429':
description: more than 6 scans in 10 minutes from this address
tags:
- Agentready
operationId: postApiV1AgentreadyScan
x-operation-id-source: derived
/api/v1/agentready/summary:
get:
summary: How many websites have been scanned, and how many are ready
description: 'The published north-star figure: businesses scanned and businesses scoring 75 or above. Counts only - hosts are stored as salted hashes, because a client''s address is not ours to publish. `ready_share` is null until at least one site has been scored rather than 0, which on no evidence would read as nobody is ready.'
responses:
'200':
description: scanned, scanned_with_a_score, ready_75_or_above, ready_share, ready_threshold, generated_at, note.
tags:
- Agentready
operationId: getApiV1AgentreadySummary
x-operation-id-source: derived
/api/v1/agentready/fix:
post:
summary: The fix plan for a scanned site, and what the score becomes
description: 'Reads the site, classifies every failing test by who can carry it out (`automatic` = a file we generate, `assisted` = a generated snippet plus one edit, `manual` = a developer''s job), generates the files from the client''s own content, and runs the same 26 tests again with those files served in place of what the site returns today. The after-score is labelled `simulated` and is a simulation until the client''s own re-scan confirms it. File contents are not returned here: one small sample only. Rate limited to 3 per 10 minutes.'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- url
properties:
url:
type: string
example: https://example.com/
responses:
'200':
description: url, before, after, before_band, after_band, simulated, what_this_is, moved[], still_failing[], actions[] with test_id, question, severity, kind, kind_meaning, we_generate, what; counts {automatic, assisted, manual}; files[] names, file_count, sample_file {name, content}, products_read, on_sale, price_usd, note.
'400':
description: the address is missing or not publicly reachable
'429':
description: more than 3 fix plans in 10 minutes
tags:
- Agentready
operationId: postApiV1AgentreadyFix
x-operation-id-source: derived
/api/v1/agentready/buy-link:
get:
summary: The purchase URL for the fix, or an honest refusal
description: 'Returns a checkout link only while the product is on sale. While it is not, it returns on_sale false with the reason and the SKU, because a button that sends a buyer to a checkout that cannot deliver is the failure this project audits for. Query: url (the site the fix is for).'
responses:
'200':
description: on_sale, url (null while off sale), sku, reason (only while off sale).
'400':
description: the address is missing or not publicly reachable
tags:
- Agentready
operationId: getApiV1AgentreadyBuyLink
x-operation-id-source: derived
x-discovery:
x402: https://growaify.com/.well-known/x402
catalogue: https://growaify.com/api/v1/x402/resources
micro: https://growaify.com/api/v1/x402/micro
mcp: https://growaify.com/mcp
agentCard: https://growaify.com/.well-known/agent-card.json
llms: https://growaify.com/llms.txt
erc8004: https://growaify.com/.well-known/agent-registration.json
did: did:web:growaify.com
attestations: https://growaify.com/api/v1/attest/summary
agentTest: https://growaify.com/api/v1/agent-test/register
funnel: https://growaify.com/api/v1/x402/funnel
cohorts: https://growaify.com/api/v1/live/cohorts
research: https://growaify.com/api/v1/research/agent-commerce.json