Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/santosautomation-com:santosautomation-com-quick-intelligence-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Santos Website Intelligence Quick Intelligence API
version: 2.18.0
description: 'AI Website Intelligence for determining whether public websites can be discovered, understood, trusted, and used by agents. Twelve paid capabilities use USDC on Base mainnet (eip155:8453) via x402 v2 with no account or traditional API key. QUICK INTELLIGENCE (GET /api/audit, $0.015, synchronous): lightweight single-page fetch-and-parse audit. AGENT READINESS (GET /api/agent-readiness, $0.075, synchronous): bounded passive discovery and applicability-aware assessment of agent-facing interfaces. DEEP WEBSITE INTELLIGENCE (POST /v1/audits, $0.225, asynchronous): real Chromium via Playwright, Lighthouse, rendered axe-core, browser evidence, screenshots, and passive security checks. The other eight paid capabilities — SAFE FETCH (GET /v1/fetch, $0.002), CONTENT EXTRACTION (POST /v1/extract, $0.005), FEED PARSER (GET /v1/feed, $0.003), LINK MAP (GET /v1/links, $0.003), SUMMARIZER (POST /v1/summarize, $0.033), SCREENSHOT & PDF RENDER (GET /v1/screenshot, $0.01), STRUCTURED EXTRACTION (POST /v1/extract/structured, $0.08), and BATCH QUICK INTELLIGENCE (POST /api/audit/batch, $0.50 flat for up to 50 URLs) — are documented per-path below. Quick and Agent Readiness payments settle only on a successful response; Deep payment purchases a bounded compute reservation and settles when the job is accepted.'
contact:
name: Santos Automation
email: info@santosautomation.com
url: https://www.santosautomation.com
servers:
- url: https://api.santosautomation.com
tags:
- name: Quick Intelligence
paths:
/api/audit:
get:
operationId: auditWebsite
tags:
- Quick Intelligence
summary: Run a Quick Intelligence Audit ($0.015 USDC via x402)
description: 'Requires x402 v2 payment. An unpaid request returns HTTP 402 with machine-readable terms in the base64 `PAYMENT-REQUIRED` response header (`accepts[0]`: $0.015 USDC as amount "15000", network eip155:8453, scheme `exact`), including an x402 Bazaar discovery extension with input/output JSON Schemas. Sign an EIP-3009 transferWithAuthorization for the quoted amount and retry with the `PAYMENT-SIGNATURE` request header. Any x402 v2 client (e.g. @x402/fetch) automates this. Payment settles only after a successful (2xx) response — failed audits cost nothing. Rejected payments and audit failures return structured errors.'
parameters:
- name: url
in: query
required: true
schema:
type: string
format: uri
description: Publicly reachable HTTP or HTTPS website URL. Bare domains are accepted (https:// is assumed). Localhost, private-network, and cloud-metadata addresses are rejected.
example: https://example.com
- name: public
in: query
required: false
schema:
type: string
enum:
- '1'
- 'true'
- 'yes'
- 'on'
- '0'
- 'false'
description: 'Opt in to the public leaderboard: the signed report replaces this domain''s listing at https://www.santosautomation.com/reports/{domain}. Off by default. The outcome is reported in the X-Santos-Public-Listing response header (not-requested | listed; url=… | failed); the signed body is unchanged. A published Agent Readiness report no longer unlocks free remediation.'
responses:
'200':
description: Audit complete; payment settled. The PAYMENT-RESPONSE header carries a base64 on-chain receipt (transaction hash, network, payer).
headers:
PAYMENT-RESPONSE:
schema:
type: string
description: 'Base64-encoded JSON settlement receipt: { success, transaction, network, payer }.'
content:
application/json:
schema:
type: object
required:
- tier
- url
- fetched_at
- http_status
- timing_ms
- overall_score
- scores
- checks
- issues
properties:
schema_version:
type: string
enum:
- 2.1.0
tier:
type: string
enum:
- paid
url:
type: string
format: uri
description: The final URL audited, after redirects.
fetched_at:
type: string
format: date-time
http_status:
type: integer
description: HTTP status returned by the audited site.
timing_ms:
type: object
properties:
ttfb:
type: integer
total:
type: integer
description: Time-to-first-byte and total fetch time in milliseconds.
overall_score:
type: integer
minimum: 0
maximum: 100
website_intelligence_score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
website_intelligence:
$ref: '#/components/schemas/WebsiteIntelligence'
scores:
type: object
required:
- performance
- seo
- accessibility
- security
properties:
performance:
type: integer
minimum: 0
maximum: 100
seo:
type: integer
minimum: 0
maximum: 100
accessibility:
type: integer
minimum: 0
maximum: 100
security:
type: integer
minimum: 0
maximum: 100
checks:
type: object
description: Per-category check results. Each entry has pass, detail, and (on failure) fix.
additionalProperties:
type: array
items:
type: object
required:
- pass
- detail
properties:
pass:
type: boolean
detail:
type: string
fix:
type: string
issues:
type: array
items:
type: string
description: Plain-English remediation instructions for every failed check.
agent_readiness:
$ref: '#/components/schemas/AgentReadinessResult'
audited_by:
type: string
'400':
description: Invalid or blocked target URL.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable explanation.
code:
type: string
description: Stable machine-readable error code.
enum:
- INVALID_URL
- UNSUPPORTED_SCHEME
- PRIVATE_ADDRESS_BLOCKED
- RATE_LIMITED
- FREE_TIER_RETIRED
- AUDIT_TIMEOUT
- TARGET_UNREACHABLE
- AUDIT_FAILED
- INVALID_EXTRACTION_SCHEMA
- STRUCTURED_OUTPUT_INVALID
'402':
description: Payment required, invalid, or failed verification. Full terms are in the base64 PAYMENT-REQUIRED response header (x402Version 2, accepts[], extensions.bazaar); the JSON body is a short agent-readable hint.
headers:
PAYMENT-REQUIRED:
schema:
type: string
description: 'Base64-encoded JSON: { x402Version: 2, resource, accepts: [{ scheme, network, amount, asset, payTo, maxTimeoutSeconds }], extensions }. amount "15000" = $0.015 USDC.'
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
enum:
- PAYMENT_REQUIRED
hint:
type: string
'502':
description: Target site unreachable.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable explanation.
code:
type: string
description: Stable machine-readable error code.
enum:
- INVALID_URL
- UNSUPPORTED_SCHEME
- PRIVATE_ADDRESS_BLOCKED
- RATE_LIMITED
- FREE_TIER_RETIRED
- AUDIT_TIMEOUT
- TARGET_UNREACHABLE
- AUDIT_FAILED
- INVALID_EXTRACTION_SCHEMA
- STRUCTURED_OUTPUT_INVALID
'504':
description: Target site timed out (15s limit).
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable explanation.
code:
type: string
description: Stable machine-readable error code.
enum:
- INVALID_URL
- UNSUPPORTED_SCHEME
- PRIVATE_ADDRESS_BLOCKED
- RATE_LIMITED
- FREE_TIER_RETIRED
- AUDIT_TIMEOUT
- TARGET_UNREACHABLE
- AUDIT_FAILED
- INVALID_EXTRACTION_SCHEMA
- STRUCTURED_OUTPUT_INVALID
/api/audit/batch:
post:
operationId: auditWebsiteBatch
tags:
- Quick Intelligence
summary: Batch Quick Intelligence Audits ($0.50 USDC flat via x402, up to 50 URLs)
description: Requires x402 v2 payment (base64 PAYMENT-REQUIRED challenge header; retry with PAYMENT-SIGNATURE). Audits up to 50 public URLs for one flat payment — the same report shape as GET /api/audit per URL, with a Website Intelligence score. Duplicates are removed; at most 8 targets are fetched concurrently. Per-URL failures are isolated and returned as error entries; payment settles only when at least one audit succeeds — a batch where every URL fails returns 502 and is never charged. Synchronous; typical batches finish in seconds, worst-case is a few minutes.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- urls
properties:
urls:
type: array
minItems: 1
maxItems: 50
items:
type: string
format: uri
description: Public HTTP or HTTPS URLs to audit.
responses:
'200':
description: Batch complete; payment settled. The PAYMENT-RESPONSE header carries a base64 on-chain receipt.
content:
application/json:
schema:
type: object
properties:
tier:
type: string
enum:
- paid
batch_size:
type: integer
succeeded:
type: integer
failed:
type: integer
results:
type: array
items:
type: object
properties:
url:
type: string
ok:
type: boolean
report:
type: object
required:
- tier
- url
- fetched_at
- http_status
- timing_ms
- overall_score
- scores
- checks
- issues
properties:
schema_version:
type: string
enum:
- 2.1.0
tier:
type: string
enum:
- paid
url:
type: string
format: uri
description: The final URL audited, after redirects.
fetched_at:
type: string
format: date-time
http_status:
type: integer
description: HTTP status returned by the audited site.
timing_ms:
type: object
properties:
ttfb:
type: integer
total:
type: integer
description: Time-to-first-byte and total fetch time in milliseconds.
overall_score:
type: integer
minimum: 0
maximum: 100
website_intelligence_score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
website_intelligence:
$ref: '#/components/schemas/WebsiteIntelligence'
scores:
type: object
required:
- performance
- seo
- accessibility
- security
properties:
performance:
type: integer
minimum: 0
maximum: 100
seo:
type: integer
minimum: 0
maximum: 100
accessibility:
type: integer
minimum: 0
maximum: 100
security:
type: integer
minimum: 0
maximum: 100
checks:
type: object
description: Per-category check results. Each entry has pass, detail, and (on failure) fix.
additionalProperties:
type: array
items:
type: object
required:
- pass
- detail
properties:
pass:
type: boolean
detail:
type: string
fix:
type: string
issues:
type: array
items:
type: string
description: Plain-English remediation instructions for every failed check.
agent_readiness:
$ref: '#/components/schemas/AgentReadinessResult'
audited_by:
type: string
error:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable explanation.
code:
type: string
description: Stable machine-readable error code.
enum:
- INVALID_URL
- UNSUPPORTED_SCHEME
- PRIVATE_ADDRESS_BLOCKED
- RATE_LIMITED
- FREE_TIER_RETIRED
- AUDIT_TIMEOUT
- TARGET_UNREACHABLE
- AUDIT_FAILED
- INVALID_EXTRACTION_SCHEMA
- STRUCTURED_OUTPUT_INVALID
'400':
description: Malformed body, empty urls array, or more than 50 URLs.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable explanation.
code:
type: string
description: Stable machine-readable error code.
enum:
- INVALID_URL
- UNSUPPORTED_SCHEME
- PRIVATE_ADDRESS_BLOCKED
- RATE_LIMITED
- FREE_TIER_RETIRED
- AUDIT_TIMEOUT
- TARGET_UNREACHABLE
- AUDIT_FAILED
- INVALID_EXTRACTION_SCHEMA
- STRUCTURED_OUTPUT_INVALID
'402':
description: Payment required. PAYMENT-REQUIRED contains x402 v2 terms for $0.50 USDC on eip155:8453.
'502':
description: Every URL in the batch failed; no charge settled.
content:
application/json:
schema:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable explanation.
code:
type: string
description: Stable machine-readable error code.
enum:
- INVALID_URL
- UNSUPPORTED_SCHEME
- PRIVATE_ADDRESS_BLOCKED
- RATE_LIMITED
- FREE_TIER_RETIRED
- AUDIT_TIMEOUT
- TARGET_UNREACHABLE
- AUDIT_FAILED
- INVALID_EXTRACTION_SCHEMA
- STRUCTURED_OUTPUT_INVALID
components:
schemas:
AgentReadinessResult:
$schema: https://json-schema.org/draft/2020-12/schema
$id: https://api.santosautomation.com/schemas/agent-readiness-result-1.0.0.json
title: AgentReadinessResult
type: object
required:
- schema_version
- target
- profile
- readiness_level
- score
- grade
- confidence
- tested_coverage_percent
- applicability
- subscores
- interfaces
- findings
- recommended_actions
- limitations
properties:
schema_version:
type: string
const: 1.0.0
website_intelligence_score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
website_intelligence:
type: object
description: Additive AI Website Intelligence presentation with four dimensions, coverage, confidence, and prioritized fixes.
properties:
schema_version:
type: string
const: 1.0.0
score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
dimensions:
type: object
properties:
discoverable:
type:
- integer
- 'null'
minimum: 0
maximum: 100
understandable:
type:
- integer
- 'null'
minimum: 0
maximum: 100
callable:
type:
- integer
- 'null'
minimum: 0
maximum: 100
trustworthy:
type:
- integer
- 'null'
minimum: 0
maximum: 100
target:
type: object
required:
- requested_url
- canonical_origin
- final_url
properties:
requested_url:
type: string
canonical_origin:
type: string
format: uri
final_url:
type: string
format: uri
additionalProperties: false
profile:
type: string
enum:
- general_website
- documentation_site
- api_provider
- mcp_provider
- agent_commerce_provider
readiness_level:
type: object
required:
- level
- name
properties:
level:
type: integer
minimum: 0
maximum: 4
name:
type: string
additionalProperties: false
score:
type: integer
minimum: 0
maximum: 100
grade:
type: string
enum:
- A
- B
- C
- D
- F
confidence:
type: number
minimum: 0
maximum: 1
tested_coverage_percent:
type: integer
minimum: 0
maximum: 100
applicability:
type: object
additionalProperties:
type: string
enum:
- tested
- not_applicable
- unknown
subscores:
type: object
additionalProperties:
type: integer
minimum: 0
maximum: 100
interfaces:
type: object
findings:
type: array
items:
type: object
required:
- id
- category
- severity
- confidence
- status
- title
- recommendation
properties:
id:
type: string
category:
type: string
severity:
type: string
enum:
- info
- low
- moderate
- high
confidence:
type: string
enum:
- low
- medium
- high
status:
type: string
enum:
- pass
- fail
- unknown
- not_applicable
title:
type: string
evidence:
type: object
recommendation:
type: string
recommended_actions:
type: array
items:
type: object
limitations:
type: array
items:
type: string
fetch_budget:
type: object
WebsiteIntelligence:
type: object
description: Additive presentation-layer synthesis. Historical score fields retain their established semantics.
required:
- schema_version
- score
- dimensions
- applicability
- coverage
- scoring_note
properties:
schema_version:
type: string
const: 1.0.0
score:
type:
- integer
- 'null'
minimum: 0
maximum: 100
dimensions:
type: object
required:
- discoverable
- understandable
- callable
- trustworthy
properties:
discoverable:
type:
- integer
- 'null'
minimum: 0
maximum: 100
understandable:
type:
- integer
- 'null'
minimum: 0
maximum: 100
callable:
type:
- integer
- 'null'
minimum: 0
maximum: 100
trustworthy:
type:
- integer
- 'null'
minimum: 0
maximum: 100
applicability:
type: object
properties:
callable:
type: string
enum:
- tested
- not_applicable
- unknown
description: unknown when the Agent Readiness module failed.
incomplete:
type: object
description: Present when a required module failed; score and dimensions are then null rather than computed from partial evidence.
properties:
missing_modules:
type: array
items:
type: string
reason:
type: string
coverage:
type: object
properties:
tests_available:
type: integer
minimum: 0
tests_executed:
type: integer
minimum: 0
tests_not_applicable:
type: integer
minimum: 0
tests_skipped:
type: integer
minimum: 0
tested_percent:
type: integer
minimum: 0
maximum: 100
confidence:
type:
- number
- 'null'
minimum: 0
maximum: 1
priority_fixes:
type: array
items:
type: object
scoring_note:
type: string