Skip to main content
Glama

Search services

search_services
Read-only

Find services an agent can use, by what they do: remote MCP servers (with the tools each lists), local MCP servers (packages), pay-per-call APIs (x402, MPP), A2A agents and task marketplaces, with our checks for each. Search by words (query) or by capability tree node (branch); filter on type, access (none_asked, payment, credentials), max_price_usd and the evidence (passing, min_pass_rate); then call get_service for connection details. Results are compact; use limit/offset to page.

Input Schema

NameRequiredDescriptionDefault
tagNoPurpose tag, e.g. 'web-search'.
actsNoWhat the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now.
sortNoDefault: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; search/11: found without the request's payment, key, price and speed wording, such as "pay per call with USDC", unless nothing else names a place; search/12: of places named by the same words in another order, such as speech to text and text to speech, the one whose name the request has in order), and among them those breaking fewer of the conditions read from the request, then, when no covers filter names a place, those whose own text does not limit them to particular places (search/10: a stated country or region and not worldwide comes later; nothing is hidden), then those meeting more conditions (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last.
tierNo
typeNo
limitNoDefault 10, maximum 25.
queryNoText search (search/13) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as "pay per call" or "$0.01 a request") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); "an API key is fine" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'.
scopeNodirectory (default): services that meet the listing criteria (https://agentservicedirectory.com/methodology#directory); index: everything we watch.
accessNoWhat the service asks of a caller (access/1): 'payment' (our plain request got HTTP 402), 'credentials' (HTTP 401, or its agent card or MCP Registry entry says so) or 'none_asked' (answered without asking for either, and nothing stated says credentials are needed). Services with no value are left out.
branchNoCapability tree id from get_tree, e.g. 'messaging/email/validation', 'places/weather' or 'places' (a node includes everything under it), or 'other'. Up to three ids separated by commas list services in any of them.
coversNoA country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5).
formatNoA format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now.
offsetNo
networkNoPayment network, e.g. 'eip155:8453' (Base) or 'solana'.
passingNotrue: latest check passed.
audienceNoWho the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5).
currencyNoISO 4217 code (USD so far): services whose payment terms, seen in their own HTTP 402 answers to our checks, are in this currency; a stablecoin counts as the currency it tracks (USDC as USD). Services whose currency we have not observed are left out.
deliveryNoHow the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now.
languageNoA language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now.
providerNoOnly endpoints from this provider (registrable domain, e.g. 'example.com'), as given in a result's provider field.
freshnessNoHow current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now.
max_p95_msNoOver the last 30 days of our checks (response-times/1, measured from eastern North America; one operation per service, timeouts counted at the time limit); services with too few checks for the figure are left out. Maximum 95th-percentile response time in milliseconds.
min_checksNoMinimum checks in the last 30 days, to avoid judging on one check.
min_payersNoMinimum unique payers in 30 days, as reported by the registry.
data_storedNoWhether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now.
processed_inNoA country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5).
max_median_msNoOver the last 30 days of our checks (response-times/1, measured from eastern North America; one operation per service, timeouts counted at the time limit); services with too few checks for the figure are left out. Maximum median response time in milliseconds.
max_price_usdNoMaximum price per call in USD stablecoin, where the price is known.
min_pass_rateNoShare of checks passed in the last 30 days, 0 to 1.
payment_modelNo'per_call': it asked for payment for our request (HTTP 402). Services whose payment model is not known are left out.
payment_methodNoA way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now.
one_per_providerNoReturn one endpoint per provider (registrable domain): the first under the chosen sort (by default, the evidence order: the share of checks passed, then how long we have watched it).
max_terms_changes_90dNoOnly services whose observed x402 payment terms changed at most this many times in the last 90 days (0 = unchanged). Short histories are labelled limited.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/13) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/13) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
  2. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/12) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/13) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
  3. Changed10 schema fields changed
    • changedInput schema / properties / acts / description
      Previous value: -"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / audience / description
      Previous value: -"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5)."
    • changedInput schema / properties / covers / description
      Previous value: -"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4)."New value: +"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5)."
    • changedInput schema / properties / data_stored / description
      Previous value: -"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / delivery / description
      Previous value: -"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / format / description
      Previous value: -"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / freshness / description
      Previous value: -"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / language / description
      Previous value: -"A language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / payment_method / description
      Previous value: -"A way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / processed_in / description
      Previous value: -"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4)."New value: +"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/5)."
  4. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/11) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/12) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; search/11: found without the request's payment, key, price and speed wording, such as \"pay per call with USDC\", unless nothing else names a place), and among them those breaking fewer of the conditions read from the request, then, when no covers filter names a place, those whose own text does not limit them to particular places (search/10: a stated country or region and not worldwide comes later; nothing is hidden), then those meeting more conditions (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; search/11: found without the request's payment, key, price and speed wording, such as \"pay per call with USDC\", unless nothing else names a place; search/12: of places named by the same words in another order, such as speech to text and text to speech, the one whose name the request has in order), and among them those breaking fewer of the conditions read from the request, then, when no covers filter names a place, those whose own text does not limit them to particular places (search/10: a stated country or region and not worldwide comes later; nothing is hidden), then those meeting more conditions (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  5. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/10) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/11) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those breaking fewer of the conditions read from the request, then, when no covers filter names a place, those whose own text does not limit them to particular places (search/10: a stated country or region and not worldwide comes later; nothing is hidden), then those meeting more conditions (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; search/11: found without the request's payment, key, price and speed wording, such as \"pay per call with USDC\", unless nothing else names a place), and among them those breaking fewer of the conditions read from the request, then, when no covers filter names a place, those whose own text does not limit them to particular places (search/10: a stated country or region and not worldwide comes later; nothing is hidden), then those meeting more conditions (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  6. Changed10 schema fields changed
    • changedInput schema / properties / acts / description
      Previous value: -"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / audience / description
      Previous value: -"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / covers / description
      Previous value: -"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4)."
    • changedInput schema / properties / data_stored / description
      Previous value: -"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / delivery / description
      Previous value: -"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / format / description
      Previous value: -"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / freshness / description
      Previous value: -"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / language / description
      Previous value: -"A language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / payment_method / description
      Previous value: -"A way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / processed_in / description
      Previous value: -"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."New value: +"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/4)."
  7. Changed10 schema fields changed
    • changedInput schema / properties / acts / description
      Previous value: -"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / audience / description
      Previous value: -"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / covers / description
      Previous value: -"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / data_stored / description
      Previous value: -"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / delivery / description
      Previous value: -"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / format / description
      Previous value: -"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / freshness / description
      Previous value: -"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / language / description
      Previous value: -"A language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"A language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / payment_method / description
      Previous value: -"A way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"A way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
    • changedInput schema / properties / processed_in / description
      Previous value: -"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."New value: +"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/3). Not shown yet: this kind has not passed our checks, so the filter matches no service for now."
  8. Changed10 schema fields changed
    • changedInput schema / properties / acts / description
      Previous value: -"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
    • changedInput schema / properties / audience / description
      Previous value: -"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
    • changedInput schema / properties / covers / description
      Previous value: -"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
    • changedInput schema / properties / data_stored / description
      Previous value: -"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
    • changedInput schema / properties / delivery / description
      Previous value: -"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
    • changedInput schema / properties / format / description
      Previous value: -"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
    • changedInput schema / properties / freshness / description
      Previous value: -"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
    • addedInput schema / properties / language
      Added value: +{
      +  "description": "A language (ISO 639-1, e.g. de) the service's own text says its content or output is in. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / payment_method
      Added value: +{
      +  "description": "A way to pay the service's own text names. Payment protocols (x402, MPP, L402) are observed from payment requests: see access.observed. Values: card, bank, invoice, crypto, stablecoin, paypal. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • changedInput schema / properties / processed_in / description
      Previous value: -"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1)."New value: +"A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/2)."
  9. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/9) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/10) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those breaking fewer of the conditions read from the request, then those meeting more (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those breaking fewer of the conditions read from the request, then, when no covers filter names a place, those whose own text does not limit them to particular places (search/10: a stated country or region and not worldwide comes later; nothing is hidden), then those meeting more conditions (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  10. Changed8 schema fields changed
    • addedInput schema / properties / acts
      Added value: +{
      +  "description": "What the service's own text says it does in the world when called: read_only, or what it changes. Values: read_only, sends_messages, spends_money, books_or_orders, writes_data, deletes_data, posts_publicly, controls_devices. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / audience
      Added value: +{
      +  "description": "Who the service's own text says it is for. Values: consumers, businesses, developers, agents. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / covers
      Added value: +{
      +  "description": "A country (ISO 3166-1 alpha-2, e.g. AT) the service's own text says its data or job is about; a service that states a region including it (EU, Europe) or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / data_stored
      Added value: +{
      +  "description": "Whether the service's own text says it keeps or logs what callers send. Values: true, false. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / delivery
      Added value: +{
      +  "description": "How the service's own text says results come back. Values: sync, async, webhook, streaming, batch. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / format
      Added value: +{
      +  "description": "A format the service's own text names for what it returns. Values: json, csv, xml, pdf, html, text, markdown, image, audio, video, geojson. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / freshness
      Added value: +{
      +  "description": "How current the service's own text says its data is. Values: live, hourly, daily, weekly, periodic, static. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • addedInput schema / properties / processed_in
      Added value: +{
      +  "description": "A country (ISO 3166-1 alpha-2) where the service's own text says it processes or stores data; a stated region including it or worldwide matches too. Comma-separated values are alternatives. Strict: services whose own text states nothing on this are left out (stated-facts/1).",
      +  "maxLength": 80,
      +  "type": "string"
      +}
  11. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/7) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/9) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, no, key, ..., and the words of a payment phrase such as \"pay per call\" or \"$0.01 a request\") are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
  12. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/8) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/7) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; search/8: for a word at least 5 confirmed-placed services use, by how those services are spread across the tree, so a word used all over the tree weighs little and a word one place's services use names that place), and among them those breaking fewer of the conditions read from the request, then those meeting more (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those breaking fewer of the conditions read from the request, then those meeting more (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  13. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/7) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/8) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those breaking fewer of the conditions read from the request, then those meeting more (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; search/8: for a word at least 5 confirmed-placed services use, by how those services are spread across the tree, so a word used all over the tree weighs little and a word one place's services use names that place), and among them those breaking fewer of the conditions read from the request, then those meeting more (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  14. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/6) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/6): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. Services meeting more of the conditions read come first; query_conditions in the response says which were read and from which words, and a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."New value: +"Text search (search/7) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/7): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. For each service a condition is met by our observation, met by a statement (the operator's, a registry's, an OpenAPI description's), not known, or broken (observed or stated against it): services breaking fewer come first, then those meeting more, an observation counting twice a statement; one not known ranks below one met and above one broken. A condition in the same clause as preferably, ideally, if possible or would be nice is a preference: it orders only among services otherwise level. query_conditions in the response says which were read, from which words, and which are preferences; a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those meeting more of the conditions read from the request (search/6: pay per call, no API key, MCP, a price limit; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those breaking fewer of the conditions read from the request, then those meeting more (search/7: pay per call, no API key, MCP, a price limit; an observation counts twice a statement; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those meeting more of the preferences read, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  15. Changed1 schema field changed
    • addedInput schema / properties / currency
      Added value: +{
      +  "description": "ISO 4217 code (USD so far): services whose payment terms, seen in their own HTTP 402 answers to our checks, are in this currency; a stablecoin counts as the currency it tracks (USDC as USD). Services whose currency we have not observed are left out.",
      +  "maxLength": 3,
      +  "type": "string"
      +}
  16. Changed3 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/5) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."New value: +"Text search (search/6) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. Conditions read from the request (search/6): a fixed table turns phrases into conditions that rank, never filter. Pay per call, per request, x402, MPP, L402, USDC, no account or no signup: asks for payment. No API key, without a key, no auth, keyless, no sign-in: does not ask for credentials (observed or stated); \"an API key is fine\" lifts it. MCP: an MCP server (remote, hosted or endpoint: a remote one; local, install or package: a local one). A2A or agent card: an A2A agent. Under, below, at most $X, or a cent or less: a price per call at or below X. Fastest or low latency: faster first. Services meeting more of the conditions read come first; query_conditions in the response says which were read and from which words, and a filter given explicitly always wins. E.g. 'weather', or 'send an SMS, pay per call, no account'."
    • changedInput schema / properties / query / maxLength
      Previous value: -100New value: +300
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; places matching at least half the query's words, best first), then services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it), and among them those meeting more of the conditions read from the request (search/6: pay per call, no API key, MCP, a price limit; see query_conditions), then the better-matched place, then services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  17. Changed3 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/4) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two); more matched words rank first, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."New value: +"Text search (search/5) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside and numbers left out (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two). Services in a place the query names (by the place's name, description or the words agents use for it) rank first; then more matched words, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services in a place the query names (search/5, by the place's name, description or the words agents use for it; places matching at least half the query's words, best first), then services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "api_endpoint",
      -  "task_marketplace",
      -  "mcp_server",
      -  "mcp_local",
      -  "a2a_agent"
      -]New value: +[
      +  "api_endpoint",
      +  "task_marketplace",
      +  "mcp_server",
      +  "mcp_local",
      +  "a2a_agent",
      +  "web_api"
      +]
  18. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/3) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two); more matched words rank first, and among services matching as many, those matching the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."New value: +"Text search (search/4) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two); more matched words rank first, then words found at the start of a word (send in 'Send Email' before send inside 'Godsend'), then the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."
  19. Changed2 schema fields changed
    • changedInput schema / properties / one_per_provider / description
      Previous value: -"Return one endpoint per provider (registrable domain): the first under the chosen sort (by default, the most scheduled checks passed in the 30-day window)."New value: +"Return one endpoint per provider (registrable domain): the first under the chosen sort (by default, the evidence order: the share of checks passed, then how long we have watched it)."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order (evidence/2). evidence (evidence/2, the default without q): first services with at least 5 checks in 30 days, then by the share of those checks passed, then by how long we have watched them (longest first), then by payers as the registry reports them, as a tiebreak only. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  20. Changed1 schema field changed
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order. provider-mix/1: in every sort but name and recent, each provider's results after its first three come after every other provider's first three, so one provider cannot fill a page; provider= (or host=) lists one provider's services in plain order, and group=provider gives one per provider. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  21. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search (search/2) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two), and more matched words rank first. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."New value: +"Text search (search/3) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two); more matched words rank first, and among services matching as many, those matching the rarer words. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order. median_ms and p95_ms: fastest first over 30 days, services without the figure last."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words (and, among those matching as many, the rarer words), then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
  22. Changed4 schema fields changed
    • addedInput schema / properties / max_median_ms
      Added value: +{
      +  "description": "Over the last 30 days of our checks (response-times/1, measured from eastern North America; one operation per service, timeouts counted at the time limit); services with too few checks for the figure are left out. Maximum median response time in milliseconds.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / max_p95_ms
      Added value: +{
      +  "description": "Over the last 30 days of our checks (response-times/1, measured from eastern North America; one operation per service, timeouts counted at the time limit); services with too few checks for the figure are left out. Maximum 95th-percentile response time in milliseconds.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order. median_ms and p95_ms: fastest first over 30 days, services without the figure last."
    • changedInput schema / properties / sort / enum
      Previous value: -[
      -  "relevance",
      -  "evidence",
      -  "pass_rate",
      -  "payers",
      -  "price",
      -  "recent",
      -  "name"
      -]New value: +[
      +  "relevance",
      +  "evidence",
      +  "pass_rate",
      +  "payers",
      +  "price",
      +  "median_ms",
      +  "p95_ms",
      +  "recent",
      +  "name"
      +]
  23. Changed2 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"Text search over names, hosts, URLs and operator names, and the name of a service's place in the capability tree when that place passed our three placement checks. Every word must match (up to five words): a word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; a shorter word matches a whole word. E.g. 'weather' or 'translate'."New value: +"Text search (search/2) over names, hosts, URLs, operator names, the tool names an MCP server lists, and the name of a service's place in the capability tree when that place passed our three placement checks. Write it as words or a sentence: words about payment or shape rather than purpose (mcp, api, pay, per, call, no, key, ...) are set aside (use the filters for those), and the response's query_words says which words were used. A service matches at least half the words (one of one or two), and more matched words rank first. A word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; one of seven or more also matches by its first five characters; a shorter word matches a whole word. E.g. 'weather' or 'translate'."
    • changedInput schema / properties / sort / description
      Previous value: -"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services whose provider's domain starts with the first word of q (its own site: q=stripe puts stripe.com first), then those whose name is q, starts with q, or contains q, then the rest; within each group, the evidence order."New value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services matching more of the query's words, then those whose provider's domain starts with the first word used (its own site: q=stripe puts stripe.com first), then those whose name is, starts with or contains the words used, then the rest; within each group, the evidence order."
  24. Changed2 schema fields changed
    • addedInput schema / properties / sort / description
      Added value: +"Default: relevance when query is given, otherwise evidence. relevance (the default when q is given): first services whose provider's domain starts with the first word of q (its own site: q=stripe puts stripe.com first), then those whose name is q, starts with q, or contains q, then the rest; within each group, the evidence order."
    • changedInput schema / properties / sort / enum
      Previous value: -[
      -  "evidence",
      -  "pass_rate",
      -  "payers",
      -  "price",
      -  "recent",
      -  "name"
      -]New value: +[
      +  "relevance",
      +  "evidence",
      +  "pass_rate",
      +  "payers",
      +  "price",
      +  "recent",
      +  "name"
      +]
  25. Changed2 schema fields changed
    • addedInput schema / properties / access
      Added value: +{
      +  "description": "What the service asks of a caller (access/1): 'payment' (our plain request got HTTP 402), 'credentials' (HTTP 401, or its agent card or MCP Registry entry says so) or 'none_asked' (answered without asking for either, and nothing stated says credentials are needed). Services with no value are left out.",
      +  "enum": [
      +    "payment",
      +    "credentials",
      +    "none_asked"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / payment_model
      Added value: +{
      +  "description": "'per_call': it asked for payment for our request (HTTP 402). Services whose payment model is not known are left out.",
      +  "enum": [
      +    "per_call"
      +  ],
      +  "type": "string"
      +}
  26. Changed1 schema field changed
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "api_endpoint",
      -  "task_marketplace",
      -  "mcp_server",
      -  "mcp_local"
      -]New value: +[
      +  "api_endpoint",
      +  "task_marketplace",
      +  "mcp_server",
      +  "mcp_local",
      +  "a2a_agent"
      +]
  27. Changed1 schema field changed
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "api_endpoint",
      -  "task_marketplace",
      -  "mcp_server"
      -]New value: +[
      +  "api_endpoint",
      +  "task_marketplace",
      +  "mcp_server",
      +  "mcp_local"
      +]
  28. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Free text matched against name, host, URL and operator, e.g. 'weather' or 'translate'."New value: +"Text search over names, hosts, URLs and operator names, and the name of a service's place in the capability tree when that place passed our three placement checks. Every word must match (up to five words): a word of three or more characters matches the start of a word, or anywhere inside a name, host or operator word; a shorter word matches a whole word. E.g. 'weather' or 'translate'."
  29. Changed2 schema fields changed
    • changedInput schema / properties / branch / description
      Previous value: -"Capability tree id from get_tree, e.g. 'places/weather' or 'places' (a branch includes its leaves), or 'other'."New value: +"Capability tree id from get_tree, e.g. 'messaging/email/validation', 'places/weather' or 'places' (a node includes everything under it), or 'other'. Up to three ids separated by commas list services in any of them."
    • changedInput schema / properties / branch / maxLength
      Previous value: -80New value: +250
  30. Changed4 schema fields changed
    • addedInput schema / properties / branch
      Added value: +{
      +  "description": "Capability tree id from get_tree, e.g. 'places/weather' or 'places' (a branch includes its leaves), or 'other'.",
      +  "maxLength": 80,
      +  "type": "string"
      +}
    • changedInput schema / properties / one_per_provider / description
      Previous value: -"Return one endpoint per provider host: the first under the chosen sort (by default, the most scheduled checks passed in the 30-day window)."New value: +"Return one endpoint per provider (registrable domain): the first under the chosen sort (by default, the most scheduled checks passed in the 30-day window)."
    • addedInput schema / properties / provider
      Added value: +{
      +  "description": "Only endpoints from this provider (registrable domain, e.g. 'example.com'), as given in a result's provider field.",
      +  "maxLength": 253,
      +  "type": "string"
      +}
    • addedInput schema / properties / scope
      Added value: +{
      +  "description": "directory (default): services that meet the listing criteria (https://agentservicedirectory.com/methodology#directory); index: everything we watch.",
      +  "enum": [
      +    "directory",
      +    "index"
      +  ],
      +  "type": "string"
      +}
  31. Changed1 schema field changed
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "api_endpoint",
      -  "task_marketplace"
      -]New value: +[
      +  "api_endpoint",
      +  "task_marketplace",
      +  "mcp_server"
      +]
  32. Changed2 schema fields changed
    • addedInput schema / properties / max_terms_changes_90d
      Added value: +{
      +  "description": "Only services whose observed x402 payment terms changed at most this many times in the last 90 days (0 = unchanged). Short histories are labelled limited.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / one_per_provider / description
      Previous value: -"Return only the best endpoint from each provider."New value: +"Return one endpoint per provider host: the first under the chosen sort (by default, the most scheduled checks passed in the 30-day window)."
  33. First observed

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely non-schema behavior: results are compact, limit maxes at 25, and use limit/offset to page, plus the explicit hand-off to get_service. It doesn't describe the result shape beyond 'compact', but with no output schema that gap is modest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four front-loaded sentences: purpose and result kinds first, then search modes and filters, then the get_service hand-off, then paging. Efficient and appropriately sized for a 33-parameter tool, with no repetition of the verbose schema text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 33-parameter search tool with no output schema, the description covers purpose, search modes, key filters, and paging, which is the minimum viable set. It says only 'results are compact' about the return payload and never explains the ranking/evidence semantics that dominate the sort/query params, leaving that entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 91%, so the schema already carries nearly all parameter meaning, including the very detailed sort/query/access docs. The description only synthesizes the main filter axes (type, access, price, evidence) and the two search modes; it adds orientation but little that isn't in the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find services an agent can use') and enumerates the result kinds: remote/local MCP servers, x402/MPP APIs, A2A agents, task marketplaces. It also names the follow-up sibling get_service for connection details, so the tool is distinguishable from its siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear selection guidance: search by 'query' words or by 'branch' capability node, filter on type/access/max_price_usd/evidence, then call get_service for details. It doesn't state explicit exclusions ('do not use when...') or contrast with get_tree/get_stats, which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources