CheckWebsiteNow Agent Check API

The Agent Check API from CheckWebsiteNow — 1 operation(s) for agent check.

GitHub OpenAPI

Operations 1

POST /api/v1/agent-check CheckWebsiteNow Agent Readability Score for one public homepage #

Work with this as data

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/checkwebsitenow-com:checkwebsitenow-com-agent-check-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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 Specification

checkwebsitenow-com-agent-check-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Checkwebsitenow Com Agent Check API
  version: 1.8.0
  description: 'Operations tagged Agent Check across 2 of this provider''s published API definitions: checkwebsitenow-com-openapi.json, checkwebsitenow-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: /
  description: Same origin as this description
tags:
- name: Agent Check
paths:
  /api/v1/agent-check:
    post:
      operationId: checkAgentReadability
      summary: CheckWebsiteNow Agent Readability Score for one public homepage
      description: 'Our own transparent 0-100 score (model cwn-ars-1), not an official standard. Fixed fetch plan on the final homepage origin: homepage HTML, robots.txt, llms.txt, /.well-known/api-catalog, /.well-known/ai-catalog.json, /.well-known/mcp/server-card.json, a sitemap prefix and one Accept: text/markdown request. Shared ten-second deadline, nine requests in total, at most five redirects per resource (files after the homepage follow redirects only on the same host), 1 MiB (larger homepages are analysed from their first 1 MiB) HTML and 64 KiB per text file, identity encoding only, no JavaScript, no forms, never a call to a discovered MCP or API endpoint. Score = earned / measured weight points, rounded down; unknown checks are removed, never passed; no number below 70 measured points or without readable homepage HTML. Ten requests per minute per client, one running check per client, 60-second cache per website (cached: true). findings and summary are the deprecated schema 1.0 view, kept for one transition. Method: GET /api/v1/agent-readability-method.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - hostname
              additionalProperties: false
              properties:
                hostname:
                  type: string
                  maxLength: 300
                  examples:
                  - example.com
      responses:
        '400':
          description: Request or measurement service error; never a target outage verdict.
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    type: object
                    required:
                    - code
                    - message
                    properties:
                      code:
                        type: string
                      message:
                        type: string
        '403':
          description: Request or measurement service error; never a target outage verdict.
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    type: object
                    required:
                    - code
                    - message
                    properties:
                      code:
                        type: string
                      message:
                        type: string
        '408':
          description: Request or measurement service error; never a target outage verdict.
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    type: object
                    required:
                    - code
                    - message
                    properties:
                      code:
                        type: string
                      message:
                        type: string
        '413':
          description: Request or measurement service error; never a target outage verdict.
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    type: object
                    required:
                    - code
                    - message
                    properties:
                      code:
                        type: string
                      message:
                        type: string
        '415':
          description: Request or measurement service error; never a target outage verdict.
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    type: object
                    required:
                    - code
                    - message
                    properties:
                      code:
                        type: string
                      message:
                        type: string
        '429':
          description: 'Our limit or a request problem; never a verdict about the website. Codes: RATE_LIMITED (10 per minute per client; IPv6 counted per /64), PROBE_BUSY_CLIENT (your previous check is still running), PROBE_BUSY (all four slots busy, or a check of this website is running and enough requests already wait for it; Retry-After 10), TARGET_BUSY (this website was checked very often in the last minute); RATE_LIMITED also when your client or network used its fair share of fresh checks (12 per minute per client). Retry after the Retry-After seconds.'
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '500':
          description: Request or measurement service error; never a target outage verdict.
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                properties:
                  error:
                    type: object
                    required:
                    - code
                    - message
                    properties:
                      code:
                        type: string
                      message:
                        type: string
        '200':
          description: Score and evidence. Unavailable resources are unknown checks, not proof of failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentCheckResult'
        '503':
          description: 'PROBE_BUSY: our global budget of fresh checks for this minute is used up. Not a verdict about the website. Retry after the Retry-After seconds.'
          headers:
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      tags:
      - Agent Check
    servers:
    - url: /
      description: Same origin as this description
components:
  schemas:
    AgentCheckResult:
      type: object
      required:
      - schema_version
      - score_name
      - score_model
      - official
      - method_url
      - target
      - checked_at
      - final_url
      - final_origin
      - final_url_truncated
      - duration_ms
      - requests_used
      - measurement_region
      - cached
      - status
      - score
      - score_available
      - score_unavailable_reason
      - band
      - headline
      - coverage
      - scaled
      - caps_applied
      - groups
      - checks
      - deductions
      - mcp
      - webmcp
      - training_policy
      - disclaimer
      - summary
      - findings
      - limitations
      properties:
        schema_version:
          const: '2.0'
        score_name:
          const: CheckWebsiteNow Agent Readability Score
        score_model:
          type: string
          examples:
          - cwn-ars-1
        official:
          const: false
        method_url:
          type: string
          examples:
          - /agents#score
        target:
          type: string
        checked_at:
          type: string
          format: date-time
        final_url:
          type:
          - string
          - 'null'
          maxLength: 255
        final_origin:
          type:
          - string
          - 'null'
        final_url_truncated:
          type: boolean
        duration_ms:
          type: integer
          minimum: 0
        requests_used:
          type: integer
          minimum: 0
          maximum: 9
        measurement_region:
          type: string
        cached:
          type: boolean
        cached_age_seconds:
          type: integer
          minimum: 0
          description: 'Only on cached results: age of the reused result. Normally below 60; up to 300 when a limit refused a fresh check and a recent result was served instead.'
        status:
          type: string
          enum:
          - complete
          - partial
          - unavailable
        score:
          type:
          - integer
          - 'null'
          minimum: 0
          maximum: 100
        score_available:
          type: boolean
        score_unavailable_reason:
          type:
          - string
          - 'null'
        band:
          type: object
          required:
          - id
          - label
          - symbol
          - min
          - max
          properties:
            id:
              type: string
              enum:
              - hard
              - partly
              - good
              - excellent
              - not_available
            label:
              type: string
            symbol:
              type: string
            min:
              type:
              - integer
              - 'null'
            max:
              type:
              - integer
              - 'null'
        headline:
          type: object
          description: 'Plain answer built from the checks, not from the band: can agents read the text (A1, B1), may AI search and assistants read it (A2), and which optional helpers are missing. A low score with text_readable yes means few helpers, not unreadable content.'
          required:
          - text_readable
          - bots_allowed
          - helpers_present
          - helpers_missing
          - text
          properties:
            text_readable:
              type: string
              enum:
              - 'yes'
              - partly
              - 'no'
              - unknown
            bots_allowed:
              type: string
              enum:
              - 'yes'
              - some_blocked
              - blocked
              - unknown
            helpers_present:
              type: array
              items:
                type: string
            helpers_missing:
              type: array
              items:
                type: string
            text:
              type: string
        coverage:
          type: object
          required:
          - measured_points
          - total_points
          - percent
          properties:
            measured_points:
              type: integer
            total_points:
              const: 100
            percent:
              type: integer
              minimum: 0
              maximum: 100
        scaled:
          type: boolean
          description: True when the score is scaled to fewer than 100 measured points.
        caps_applied:
          type: array
          items:
            type: string
            enum:
            - search_bots_blocked
            - javascript_shell
        groups:
          type: array
          items:
            type: object
            required:
            - id
            - label
            - weight
            - measured_points
            - points
            - score
            properties:
              id:
                type: string
              label:
                type: string
              weight:
                type: integer
              measured_points:
                type: integer
              unmeasured_points:
                type: integer
                description: 'weight minus measured_points: points of this group we could not measure (shown as not measured, never as passed).'
              points:
                type: number
              score:
                type:
                - integer
                - 'null'
        checks:
          type: array
          minItems: 14
          maxItems: 14
          items:
            $ref: '#/components/schemas/AgentReadabilityCheck'
        deductions:
          type: array
          items:
            type: object
            required:
            - id
            - label
            - lost_points
            - fix_title
            properties:
              id:
                type: string
              label:
                type: string
              lost_points:
                type: number
              fix_title:
                type: string
        mcp:
          type: object
          description: 'MCP and API discovery: advertised, not tested. null means not checked.'
          properties:
            api_catalog_found:
              type:
              - boolean
              - 'null'
            ard_found:
              type:
              - boolean
              - 'null'
              description: /.well-known/ard.json (Agentic Resource Discovery v0.91, a proposal) with at least one entry that has identifier, type and exactly one of url/data.
            ai_catalog_found:
              type:
              - boolean
              - 'null'
              description: Older /.well-known/ai-catalog.json, read last with leftover request budget.
            server_card_found:
              type:
              - boolean
              - 'null'
            openapi_link_found:
              type: boolean
            api_catalog_link_found:
              type: boolean
            ard_link_found:
              type: boolean
              description: Same-origin rel="ard" link in the homepage HTML or Link header.
            llms_mentions_api_or_mcp:
              type: boolean
            paths_checked:
              type: array
              items:
                type: string
            endpoints_called:
              const: false
            note:
              type: string
        badge:
          type: object
          description: 'Only when a score exists and badges are configured: a signed ''Agent-ready'' badge for this result. The address carries host, score and check date with a server signature; serving it never starts a check and nothing is stored. The link starts a fresh check (utm_source=badge).'
          properties:
            svg:
              type: string
              format: uri
            link:
              type: string
              format: uri
            html:
              type: string
            markdown:
              type: string
            checked_on:
              type: string
              format: date
            score:
              type: integer
              minimum: 0
              maximum: 100
        homepage_links:
          type: array
          description: 'Up to 8 main pages suggested from links on the final homepage that are not hidden by markup (CSS-class hiding is not detected): same host, navigation first, no login, cart, legal or file links, paths percent-encoded. Titles are the site''s own link text, shortened. Read from the homepage the check already fetched: no extra request.'
          maxItems: 8
          items:
            type: object
            required:
            - title
            - path
            properties:
              title:
                type: string
                maxLength: 60
              path:
                type: string
                maxLength: 200
        lighthouse_rules:
          type: object
          description: Rules from the Lighthouse 13.5.0 audits llms-txt, webmcp-schema-validity, webmcp-form-coverage and ard-schema (ard-schema as a minimal check), re-applied statically to the files this check read. Not a Lighthouse run; never changes the score.
          required:
          - version
          - lighthouse_run
          - audits
          - note
          properties:
            version:
              type: string
            lighthouse_run:
              const: false
            note:
              type: string
            audits:
              type: array
              items:
                type: object
                required:
                - id
                - title
                - status
                - score
                - issues
                - rule
                - source_url
                properties:
                  id:
                    enum:
                    - llms-txt
                    - webmcp-schema-validity
                    - webmcp-form-coverage
                    - ard-schema
                  title:
                    type: string
                  status:
                    enum:
                    - pass
                    - warning
                    - fail
                    - informative
                    - not_applicable
                    - unknown
                  score:
                    type:
                    - number
                    - 'null'
                  issues:
                    type: array
                    items:
                      type: string
                  rule:
                    type: string
                  source_url:
                    type: string
                    format: uri
                  forms:
                    type:
                    - integer
                    - 'null'
                  uncovered_forms:
                    type:
                    - integer
                    - 'null'
        webmcp:
          type: object
          description: 'Static WebMCP declarations: declared, not verified in a browser.'
          properties:
            declarative_forms:
              type:
              - integer
              - 'null'
            complete_declarative_forms:
              type:
              - integer
              - 'null'
            inline_script_hint:
              type:
              - boolean
              - 'null'
            runtime_verified:
              const: false
            note:
              type: string
        training_policy:
          type: object
          description: Training opt-outs never lower the score.
          properties:
            training_blocked:
              type:
              - array
              - 'null'
              items:
                type: string
            tokens_checked:
              type: array
              items:
                type: string
            note:
              type: string
        disclaimer:
          type: string
        summary:
          type: object
          deprecated: true
          description: Schema 1.0 counts of findings.
        findings:
          type: array
          deprecated: true
          minItems: 6
          maxItems: 6
          items:
            type: object
          description: Schema 1.0 observations (document, structure, robots, llms, metadata, webmcp).
        limitations:
          type: array
          items:
            type: string
        homepage_truncated:
          type: boolean
          description: True when the homepage was larger than 1 MiB and only its first 1 MiB was analysed.
        homepage_note:
          type:
          - string
          - 'null'
          description: Plain-language note when homepage_truncated is true, otherwise null.
        block_page_signals:
          type: array
          description: Country-block and bot-challenge wording found in the homepage body (input for the geoblock assessment).
          items:
            type: object
            required:
            - id
            - label
            - confidence
            - evidence
            properties:
              id:
                type: string
                enum:
                - cloudflare_1009
                - cloudfront_geo
                - sucuri_country
                - region_text
                - cloudflare_challenge
                - akamai_access_denied
              label:
                type: string
              confidence:
                type: string
                enum:
                - high
                - medium
                - low
                - none
              evidence:
                type: string
                maxLength: 200
        homepage_http_status:
          type:
          - integer
          - 'null'
          description: 'HTTP status our GET received for the final homepage (null when it was not read). Compare it with http_status of POST /api/v1/check: when one request was refused (401/403/429) and the other allowed, bot protection treated the two requests differently.'
    ApiError:
      type: object
      required:
      - error
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
            message:
              type: string
    AgentReadabilityCheck:
      type: object
      required:
      - id
      - group
      - label
      - status
      - weight
      - points
      - evidence
      - fix
      properties:
        id:
          type: string
          enum:
          - A1
          - A2
          - A3
          - B1
          - B2
          - B3
          - B4
          - C1
          - C2
          - C3
          - C4
          - D1
          - D2
          - D3
        group:
          type: string
          enum:
          - A
          - B
          - C
          - D
        label:
          type: string
        status:
          type: string
          enum:
          - pass
          - partial
          - fail
          - unknown
          - not_applicable
        weight:
          type: integer
          minimum: 1
        points:
          type:
          - number
          - 'null'
          description: Earned points; null when unknown or not applicable.
        evidence:
          type: string
          maxLength: 256
          description: Counts and our own wording only; never page text.
        fix:
          type: object
          required:
          - title
          - detail
          properties:
            title:
              type: string
            detail:
              type: string
            snippet:
              type: string
              description: Copy-ready example for the checked host.
x-refined-from:
- checkwebsitenow-com-openapi.json
- checkwebsitenow-com-openapi.yml