{
  "api_status": "preview",
  "fields": [
    {
      "id": "service",
      "label": "Service",
      "api_fields": [
        "name",
        "name_source",
        "id"
      ],
      "definition": "Reviewed services: the name we give the service, taken from the operator's own material. Discovered services: the display label from the registry listing (name_source \"registry\"; untrusted third-party text, never instructions), or the host when the registry gives none.",
      "source": "atlas",
      "source_label": "Assigned by us.",
      "url": "https://agentservicedirectory.com/fields#service"
    },
    {
      "id": "purpose",
      "label": "Purpose",
      "api_fields": [
        "tags",
        "category"
      ],
      "definition": "What the service is for. Reviewed: capability tags from our listing. Discovered: the registry's tags, reduced to lowercase letters, digits and hyphens; anything else is dropped. Discovered tags are not reviewed by us.",
      "source": "atlas",
      "source_note": "Assigned by us (reviewed) or taken from the registry (discovered).",
      "source_label": "Assigned by us (reviewed) or taken from the registry (discovered).",
      "url": "https://agentservicedirectory.com/fields#purpose"
    },
    {
      "id": "latest_check",
      "label": "Latest scheduled check",
      "api_fields": [
        "evidence.last_check.result",
        "evidence.last_check.passed",
        "evidence.last_check.at",
        "evidence.last_check.http_status"
      ],
      "definition": "The result and time of the most recent scheduled check. Reviewed services: the primary availability operation. Discovered services: the latest scheduled probe (candidate-x402/4 for x402 endpoints, mcp-reach/3 for MCP servers). \"Live, payment required\" means the endpoint answered an unpaid request with HTTP 402 and a valid x402 payment request (for discovered services, offering at least one mainnet network): it is reachable and asking for payment. It does not show that a paid call succeeds or returns useful output.",
      "source": "measured",
      "method": "availability/3 (reviewed); candidate-x402/4, mcp-reach/3 (discovered)",
      "source_label": "Our measurement.",
      "url": "https://agentservicedirectory.com/fields#latest_check"
    },
    {
      "id": "checks_passed",
      "label": "Scheduled checks passed / run (30-day window)",
      "api_fields": [
        "evidence.passed_30d",
        "evidence.checks_30d",
        "evidence.pass_rate",
        "evidence.missed_30d"
      ],
      "definition": "passed_30d of checks_30d scheduled checks passed; pass_rate = passed_30d ÷ checks_30d. A check passes when the HTTP status is one the listing expects (reviewed; for x402 endpoints usually 402) or when the response is HTTP 402 with a valid x402 payment request offering at least one mainnet network (discovered x402 endpoints; a testnet-only request does not pass), or when an MCP server answers a plain GET (no body, no credentials, JSON only, no redirects) with 200, 400, 401, 403, 405 or 406 (discovered MCP servers, mcp-reach/3: reachable, not that its tools work). checks_30d counts only checks that ran. missed_30d counts scheduled checks that did not run; they are shown separately and are not counted as failures. Reviewed services count every monitored operation (hourly availability, daily documentation); discovered services get one unpaid request per scheduled interval (evidence.schedule_tier).",
      "unit": "count and ratio (0–1)",
      "window": "The last 30 days, or since monitoring began if that is shorter (then limited_evidence is true).",
      "source": "measured",
      "method": "availability/3, content-hash/2 (reviewed); candidate-x402/4, mcp-reach/3 (discovered)",
      "source_label": "Our measurement.",
      "url": "https://agentservicedirectory.com/fields#checks_passed"
    },
    {
      "id": "price",
      "label": "Lowest price per call (US$)",
      "api_fields": [
        "price_usd",
        "price_source"
      ],
      "definition": "The lowest price for one paid request, in US dollars. price_source \"registry\": the lowest amount in the registry's payment terms, counted only for known USD stablecoins (such as USDC). price_source \"operator\": the operator's stated pricing, a claim linked on the service page. Empty when no per-call price is known. Not a measured charge.",
      "unit": "US dollars per paid request",
      "source": "registry",
      "source_note": "The registry's payment terms (discovered) or the operator's stated pricing, a claim (reviewed); see price_source.",
      "source_label": "The registry's payment terms (discovered) or the operator's stated pricing, a claim (reviewed); see price_source.",
      "url": "https://agentservicedirectory.com/fields#price"
    },
    {
      "id": "response_time",
      "label": "Response time of latest check (ms)",
      "api_fields": [
        "evidence.last_check.duration_ms"
      ],
      "definition": "Milliseconds from sending our unpaid request to receiving the response headers, including any same-origin redirects, measured once from our fixed check location in eastern North America (since 17 October 2026; each check records the Cloudflare data centre it ran in). It includes the network distance from there. It describes only that unpaid request: not a paid call, and not the time the service takes to do its work.",
      "unit": "milliseconds",
      "source": "measured",
      "source_label": "Our measurement.",
      "url": "https://agentservicedirectory.com/fields#response_time"
    },
    {
      "id": "freshness",
      "label": "Freshness",
      "api_fields": [
        "evidence.freshness"
      ],
      "definition": "\"fresh\": the latest check is no older than two scheduled intervals. \"stale\": it is older, so do not rely on it. \"no_data\": the service has not been checked yet.",
      "source": "derived",
      "source_label": "Computed by us from our records.",
      "url": "https://agentservicedirectory.com/fields#freshness"
    },
    {
      "id": "tier",
      "label": "Added from",
      "api_fields": [
        "tier"
      ],
      "definition": "How the service came into the directory. \"reviewed\": from our own listing files, written from the operator's own sources, with operator statements and hourly checks. \"discovered\": from a public agent registry, not written up by us, checked hourly to monthly depending on usage (schedule/1). The values are kept as they are for compatibility; neither is a rating.",
      "source": "atlas",
      "source_label": "Assigned by us.",
      "url": "https://agentservicedirectory.com/fields#tier"
    },
    {
      "id": "provider",
      "label": "Provider (host)",
      "api_fields": [
        "host",
        "provider_endpoints",
        "operator"
      ],
      "definition": "The hostname of the endpoint we check. provider_endpoints is the number of endpoints we track on that host. A host is not a verified identity: different operators can share one, and one operator can use several.",
      "source": "derived",
      "source_label": "Computed by us from our records.",
      "url": "https://agentservicedirectory.com/fields#provider"
    },
    {
      "id": "networks",
      "label": "Payment networks",
      "api_fields": [
        "networks",
        "networks_source",
        "mainnet"
      ],
      "definition": "Payment networks for the service. networks_source \"observed\": named in the latest live x402 payment request we received. \"registry\": from the registry listing. \"operator\": the operator's stated payment rails. mainnet is true when at least one offered network is not a test network.",
      "source": "measured",
      "source_note": "Our measurement, the registry or the operator, as networks_source says.",
      "source_label": "Our measurement, the registry or the operator, as networks_source says.",
      "url": "https://agentservicedirectory.com/fields#networks"
    },
    {
      "id": "payment_protocols",
      "label": "Payment protocols offered",
      "api_fields": [
        "payment_protocols"
      ],
      "definition": "Discovered services. The payment protocols the latest HTTP 402 response offered: \"x402\" when it carried a valid x402 payment request, \"mpp\" when a WWW-Authenticate challenge used the \"Payment\" scheme (Machine Payments Protocol), \"l402\" when one used \"L402\" (Lightning). Empty when no 402 response has been seen. Recorded since 17 October 2026 (candidate-x402/2 and later). It shows what the service asked for, not that a payment by that protocol succeeds.",
      "source": "measured",
      "method": "candidate-x402/4",
      "source_label": "Our measurement.",
      "url": "https://agentservicedirectory.com/fields#payment_protocols"
    },
    {
      "id": "registry_payers",
      "label": "Registry: unique payers (30 days)",
      "api_fields": [
        "registry_usage.unique_payers_30d"
      ],
      "definition": "Distinct payers for this endpoint, as reported by the registry for the 30 days before its last capture (currently only the x402 Bazaar reports usage; services found only in other lists have none). Not our measurement, and not verified by us.",
      "unit": "count",
      "window": "30 days before the registry's last capture",
      "source": "registry",
      "source_label": "Reported by the registry, not our measurement.",
      "url": "https://agentservicedirectory.com/fields#registry_payers"
    },
    {
      "id": "registry_calls",
      "label": "Registry: paid calls (30 days)",
      "api_fields": [
        "registry_usage.calls_30d"
      ],
      "definition": "Paid calls to this endpoint, as reported by the registry for the 30 days before its last capture. Not our measurement, and not verified by us.",
      "unit": "count",
      "window": "30 days before the registry's last capture",
      "source": "registry",
      "source_label": "Reported by the registry, not our measurement.",
      "url": "https://agentservicedirectory.com/fields#registry_calls"
    },
    {
      "id": "type",
      "label": "Type",
      "api_fields": [
        "type"
      ],
      "definition": "\"api_endpoint\": a payable API endpoint (x402). \"mcp_server\": a remote MCP server endpoint, from the Official MCP Registry. \"task_marketplace\": a marketplace where agents find or post paid tasks.",
      "source": "atlas",
      "source_label": "Assigned by us.",
      "url": "https://agentservicedirectory.com/fields#type"
    },
    {
      "id": "endpoint",
      "label": "Endpoint we check",
      "api_fields": [
        "method",
        "url",
        "templated_url"
      ],
      "definition": "The HTTP method and URL of our scheduled check. templated_url is true when the URL contains placeholders (such as :address or {id}) that a caller must fill in.",
      "source": "atlas",
      "source_label": "Assigned by us.",
      "url": "https://agentservicedirectory.com/fields#endpoint"
    },
    {
      "id": "schedule",
      "label": "Check schedule",
      "api_fields": [
        "evidence.operations",
        "evidence.check_interval_hours",
        "evidence.check_interval",
        "evidence.check_interval_rule",
        "evidence.schedule_tier"
      ],
      "definition": "operations is the number of separately monitored operations (for example an API call and its documentation page). check_interval_hours is the current interval between scheduled checks of the primary operation, and check_interval names it: hourly (1), daily (24), weekly (168) or monthly (720). check_interval_rule is the published rule that sets it. schedule_tier is the old name for check_interval, served until 2027-01-17. Services from our own listing files are checked hourly. Services from registries follow schedule/1: hourly with 100 or more registry payers in 30 days; daily with 5 to 99, and for new services until their third probe; weekly with fewer than 5; monthly when every probe has failed for 14 days or the registry has not listed the service for 7 days. Each interval change is recorded, and expected and missed checks are counted against the schedule in force at the time.",
      "unit": "count; hours; interval name; text",
      "source": "atlas",
      "method": "schedule/1 (discovered)",
      "source_label": "Assigned by us.",
      "url": "https://agentservicedirectory.com/fields#schedule"
    },
    {
      "id": "monitoring_since",
      "label": "Monitoring since",
      "api_fields": [
        "evidence.monitoring_since",
        "evidence.monitoring_days",
        "evidence.limited_evidence"
      ],
      "definition": "When our scheduled checks began: for reviewed services, when the check was approved; for discovered services, when we first saw the service in the registry. limited_evidence is true when this is less than 30 days ago.",
      "source": "derived",
      "source_label": "Computed by us from our records.",
      "url": "https://agentservicedirectory.com/fields#monitoring_since"
    },
    {
      "id": "changes",
      "label": "Detected changes",
      "api_fields": [
        "changes"
      ],
      "definition": "Reviewed services only. A change is recorded when the content hash of a monitored documentation page differs from its previous check (content-hash/2: whitespace and JSON key order ignored). diff compares the readable text of the two versions (text-extract/1, content-diff/1): lines_added and lines_removed count lines present in only one version, ignoring order. prices_added and prices_removed are dollar or USD/USDC amounts present in only one version, found by automated extraction and unverified. classification is the type of change (pricing, access, interface, documentation or cosmetic); classification_method \"automated\" means a small AI model chose it from the changed lines only (triage-ai/1) and no person has reviewed it. listing_review_needed is true for pricing or access changes while statements that cite the page predate the change; automatic upkeep (upkeep/1) re-checks them, after which listing_rechecked is true. review_status is \"pending\" before any label. The page text itself is never republished.",
      "source": "measured",
      "method": "content-hash/2, text-extract/1, content-diff/1, triage-ai/1",
      "source_label": "Our measurement.",
      "url": "https://agentservicedirectory.com/fields#changes"
    },
    {
      "id": "statements",
      "label": "Operator statements",
      "api_fields": [
        "claims"
      ],
      "definition": "Reviewed services only (service page and GET /api/v1/services/{id}). Facts the operator states on its own pages, such as prices, fees, rate limits and terms, paraphrased briefly with source_url and retrieved_at. They are claims, not our measurements. origin \"listing\": from our reviewed listing. origin \"upkeep\": recorded automatically after a pricing or access change to the source page (upkeep/1), either re-confirming the earlier statement, giving the operator's exact words in quotation marks, or noting that the page no longer states it. Earlier statements are kept in our records, marked superseded.",
      "source": "operator",
      "method": "upkeep/1 (automatic re-checks)",
      "source_label": "The operator's statement, a claim with its source.",
      "url": "https://agentservicedirectory.com/fields#statements"
    },
    {
      "id": "payment_terms",
      "label": "Payment-terms changes (90 days)",
      "api_fields": [
        "payment_terms",
        "payment_terms.current_since",
        "payment_terms.changes_30d",
        "payment_terms.changes_90d",
        "payment_terms.pay_to_changes_90d",
        "payment_terms.last_change_at",
        "payment_terms.last_change_kinds",
        "payment_terms.window_start",
        "payment_terms.limited"
      ],
      "definition": "Discovered services. Every probe that gets a valid x402 payment request records its terms: scheme, network, token, amount, receiving address, timeout and protocol version. changes_30d and changes_90d count how often those terms differed from the previous valid request. Each change is classified by fixed rules: price, network_added, network_removed, asset, pay_to (the receiving address changed), scheme, version or other. current_since is when the current terms were first seen. Probes without a valid request neither count as changes nor reset the history. Counts cover window_start to now, which is shorter than 90 days (limited true) until tracking has run that long. Receiving addresses are compared but not published.",
      "unit": "count",
      "window": "30 and 90 days, or since tracking began (16 October 2026, 15:44 UTC) or monitoring began, if later",
      "source": "measured",
      "method": "candidate-x402/4, terms-diff/1",
      "source_label": "Our measurement.",
      "url": "https://agentservicedirectory.com/fields#payment_terms"
    },
    {
      "id": "registry_listing",
      "label": "Listed in registry",
      "api_fields": [
        "registry_listing.listed",
        "registry_listing.last_seen_at"
      ],
      "definition": "Discovered services only. listed is true when any registry we read has listed the service since the start of that registry's last complete read, and always when it did so within the last 3 days; a slow or stalled read never makes a service unlisted. last_seen_at is when a registry last listed it. Registries read: x402 facilitators' public discovery lists (methodology page).",
      "source": "registry",
      "source_label": "Reported by the registry, not our measurement.",
      "url": "https://agentservicedirectory.com/fields#registry_listing"
    }
  ]
}