agenticweb.wiki

customer.io agentic web readiness

A+ Manifest validity: 60% (3/5 valid, 2 errors, 9 warnings) · Surface score 60 (coverage 40 + breadth 15 + conformance 5). 7 standards observed across 4 of 9 steps; 5 manifests present (+ robots.txt), 2 errors, 9 warnings. Checked 2026-10-25 20:27:51 UTC. This grades the agent-facing files published at customer.io, not the organisation's products.

Badge for a README: ![agentic web grade](https://agenticweb.wiki/badge/customer.io.svg) · JSON · Markdown · Re-check now

Coverage by step

01 DiscoverRFC 972702 Identifynothing observed03 PermitContent Signals Policy04 Readllms.txt, Markdown for Agents05 ActAgent Skills06 Coordinatenothing observed07 Paynothing observed08 Presentnothing observed

Manifests

ManifestResultFindings
Agentic Resource Discovery
/.well-known/ard.json
absent HTTP 404
AI Catalog well-known file
/.well-known/ai-catalog.json
absent HTTP 404
MCP Server Cards (SEP-2127)
/.well-known/mcp/server-card.json
errors
  • name must be reverse-DNS with exactly one slash, e.g. com.example/weather
  • Content-Type is application/json; charset=utf-8; SEP-2127 says serve application/mcp-server-card+json
  • $schema is not https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json
  • description is over 100 characters
  • remotes[0].supportedProtocolVersions missing; clients use it to pick a version before connecting
  • remotes[1].supportedProtocolVersions missing; clients use it to pick a version before connecting
  • no Access-Control-Allow-Origin: * (required for browser clients)
View valid /mcp/server-card template for customer.io
{
  "$schema": "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json",
  "name": "io.customer/customer",
  "title": "Customer",
  "version": "1.0.0",
  "description": "Customer and what it offers to agents",
  "websiteUrl": "https://customer.io/",
  "icons": [
    {
      "src": "https://customer.io/icon.png",
      "mimeType": "image/png",
      "sizes": [
        "180x180"
      ]
    }
  ],
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://customer.io/mcp",
      "supportedProtocolVersions": [
        "2025-11-25",
        "2025-06-18",
        "2025-03-26"
      ]
    }
  ]
}
Agent2Agent Protocol
/.well-known/agent-card.json
absent HTTP 404
llms.txt
/llms.txt
valid
  • no blockquote summary under the title
AGENTS.md
/AGENTS.md
absent HTTP 404
Agent Skills
/.well-known/agent-skills/index.json
valid
api-catalog: A Well-Known URI and Link Relation to Help Discovery of APIs
/.well-known/api-catalog
valid
AI Crawler User-Agent Tokens in robots.txt
/robots.txt
no AI tokens
  • no AI crawler token named (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, ...); the policy for them is whatever User-agent: * says (partial)
  • no Agentmap: line (optional convention pointing agents at /.well-known/ard.json)
security.txt (RFC 9116)
/.well-known/security.txt
absent HTTP 404
auth.md
/auth.md
errors
  • none of the auth.md mechanism names found (identity_assertion, service_auth, anonymous)
View valid /auth.md template for customer.io
# Authenticating to Customer as an agent

This file is the agent-auth skill for customer.io. It is linked from the authorization server's metadata (`agent_auth.skill`).

## Discovery
1. Call the API. A `401` carries `WWW-Authenticate: Bearer resource_metadata="https://customer.io/.well-known/oauth-protected-resource"`.
2. Read `/.well-known/oauth-protected-resource` (RFC 9728) for `resource` and `authorization_servers`.
3. Read the authorization server's `/.well-known/oauth-authorization-server` (RFC 8414); the `agent_auth` block lists the endpoints below.

## Methods we accept
- `identity_assertion`: you hold a session for a user and can mint an ID-JAG with `aud` = our `resource`. Preferred.
- `service_auth`: you only know the user's email. A claim ceremony (6-digit code) is required.
- `anonymous`: no user. Immediate limited scopes; the user can claim later.

## Register
POST `agent_auth.identity_endpoint` with `{"type": "<method>", ...}`; exchange the returned `identity_assertion` at the token endpoint for an access token.

## Scopes
- `api.read`: read
- `api.write`: write (claimed registrations only)

## Rules
- Show the user our name and the scopes before asserting their identity.
- Keep `claim_token` in memory only.
- Revocation events arrive as Security Event Tokens at your registered events endpoint.
Open Knowledge Format
/okf/index.md
absent HTTP 404

What an agent can call

Standards observed

Cheapest next steps

  1. Agentic Resource Discovery: a catalog at /.well-known/ard.json lets agents discover your APIs, MCP servers and data in one fetch (emerging spec — publish only if you run the underlying endpoints; generate via MCP template({"id": "ard", "domain": "customer.io"}))
  2. AGENTS.md: instructions for coding agents working on or with the site
    Generate starter /AGENTS.md for customer.io
    # Customer for agents
    
    Customer and what it offers to agents
    
    ## Read the data, not the HTML
    - Index: https://customer.io/llms.txt
    - API description: https://customer.io/openapi.json
    - Discovery catalog: https://customer.io/.well-known/ard.json
    
    ## Calling
    - MCP server (Streamable HTTP): https://customer.io/mcp
    - Rate limits and authentication: describe them here
    
    ## Conventions
    - How to cite or attribute content
    - What not to do (no scraping of /account/, no automated sign-ups, etc.)
    
    Contact: security@customer.io
    
  3. security.txt (RFC 9116): RFC 9116 contact and expiry, read by agents and people
    Generate starter /.well-known/security.txt for customer.io
    Contact: mailto:security@customer.io
    Expires: 2027-09-20T20:27:51Z
    Canonical: https://customer.io/.well-known/security.txt
    Preferred-Languages: en
    Policy: https://customer.io/security-policy
    

Agent pre-flight & practical readiness

Preferred mode: mcp (fallback agent_skills). Call the MCP endpoint at https://mcp.customer.io/mcp first. Do not scrape the HTML when a tool can answer.

Fetch: POST https://mcp.customer.io/mcp POST a JSON-RPC tools/list, or server/discover on the 2026-07-28 revision, before reading HTML.

Practical readability: exa_parsable yes, markdown negotiation yes, render markdown_native, HTML quality high, first content at byte 0.

AI crawler posture: open_to_all · Assistant access: OpenAI allowed, Anthropic allowed, Google allowed, Perplexity allowed, Exa allowed.

Readiness subscores: reach 20/20, readability 30/30, capabilities 23/35, conformance 5/15, total 78/100, grade A+.

How the grade is made

+10 per lifecycle step with a standard observed, counting manifests that validate or that the probe rule for the standard recognises (a valid MCP server card counts for MCP; max 90); +3 per observed standard beyond the first two (max 15); conformance +15 (+10 with one manifest) minus 5 per agent-facing manifest with errors, never below 0 (security.txt is reported, not scored). Lifecycle grade: A+ >= 60, A >= 45, B >= 30, C >= 20, D >= 10. Strict 100-point composite (subscores.total_100 / subscores.grade_100): reach_and_policy (20) + readability (30) + capabilities (35) + conformance (15), where A+ >= 80, A >= 65, B >= 45, C >= 28, D >= 15. Errors are specification violations; warnings are best-practice gaps. Only public paths are fetched, without credentials, so standards that need a login (skipped in the probe) are not counted either way. The same report is the validate_manifest tool on the MCP server.

JSON · Markdown · probe rules