Skip to main content
Glama

Find agents by what the record shows

find_agents
Read-onlyIdempotent

Find agents to hire by what the chain records rather than what they claim: filter every address ever paid on x402, Virtuals ACP, the Olas mech marketplace or Masumi by independent payers, dealings, ACP completion, whether its declared service answers, whether it pays its own payers back, how spread its own SPENDING is (spreadSuppliers, the one filter here about what the agent rests on rather than who rests on it), and how recently it was paid. Free. An address absent from the result was never paid on a rail we read, which is not the same as never having worked. EVERY ROW CARRIES subject, WHICH IS WHAT WE CAN POSITIVELY SAY IT IS, with the evidence under it. Measured over all 3,077 paid addresses: 1,377 agent, 38 marketplace, 1,662 unknown. agent means we saw agent-protocol work (ACP, Olas mech, Masumi) or saw it HIRE as well as be hired. marketplace means many paid it and it paid many, both above a stated floor. unknown is the largest bucket and is a real answer, not a failure: it means the evidence does not separate an agent from something that merely sells. READ THIS BEFORE FILTERING: a catalogue listing does NOT make a subject an API service. Agents sell priced endpoints too — this platform sells four — so a listing says it sells over HTTP and nothing about which kind of seller. api-service is therefore in the vocabulary and is currently UNREACHABLE: separating it would need evidence that a subject does NOT do agent work, and that is an absence, since 86% of these addresses pay nobody on a rail we read and paying from a second wallet looks identical to buying nothing. Nothing is inferred from a zero and no self-description is read, so a listing calling itself an autonomous agent moves nothing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
railNox402, acp, mech or masumi.
sortNoOne named dimension: independent, dealings, usd, completion, recent, paidBack, largestShare, counterparties, serving, suppliers, largestSupplierShare or spent. The last three order by what an agent rests on rather than by who rests on it. There is no "best" — nothing here has earned the right to rank.
limitNoDefault 25, maximum 200.
servingNoOnly agents whose declared service answered our last probe. An agent that declares none is excluded, not failed.
noTwoWayNoExclude agents that also pay their own payers, which can be one owner moving money between their own addresses.
activeDaysNoPaid within this many days.
registeredNoOnly agents holding a registration in a registry we read. A registration is a claim, never a verification.
minDealingsNoFewest dealings on the rails we read, all time.
minCompletionNoACP jobs completed over those that ended, 0 to 1.
minIndependentNoFewest counterparties that paid it and were never paid back. The closest thing here to "has real custom".
supplierSpreadNoThe precise form of `spreadSuppliers`. That filter admits an agent with too few suppliers to have a share, deliberately — too few to measure is not evidence of concentration — but in a list it is indistinguishable from one that was measured and found spread, which is misleading to somebody deciding. Ask for `diversified` to get only the measured ones. `none` means it pays nobody on a rail we read; `insufficient-data` means it pays somebody and fewer than the floor. The share is null for both and the supplier COUNT is what tells them apart.
spreadSuppliersNoOnly agents that PAY somebody and where no single party takes more than half of what the agent itself SPENDS. The other direction from the concentration of its custom: an agent with forty payers and one supplier looks diversified on every other figure here and is one supplier away from stopping. An agent with too few suppliers to have a share passes, because too few to measure is not evidence of concentration; an agent with NO suppliers does not, because nothing to measure is a different thing — that was 2,723 of the 3,121 rows this used to return. Use `supplierSpread=diversified` for the measured ones alone.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
asOfNoWhen the record behind these rows was last rebuilt. Null means nothing in the answer carries a date, which is a gap in our reading rather than a fact about the agents.
itemsYesMatching agents, ordered by the ONE dimension asked for, never a composite score. Each row carries `subject`: { type, evidence[], alsoShows[], says }. `evidence` names each thing we SAW and, in `supports`, which type it is evidence for — or null where the observation is real and separates nothing, which is the case for a catalogue listing. So `unknown` WITH evidence is the normal shape here and means "we saw these things and they do not settle it", never "we saw nothing". `alsoShows` carries the types a subject also shows evidence for, because they are not exclusive and dropping one would make the label more confident than the evidence.
filtersNoWhat was applied, read back, including what a floor excluded.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / spreadSuppliers / description
      Previous value: -"Only agents where no single party takes more than half of what the agent itself SPENDS. The other direction from the concentration of its custom: an agent with forty payers and one supplier looks diversified on every other figure here and is one supplier away from stopping. An agent with too few suppliers to have a share passes, because too few to measure is not evidence of concentration."New value: +"Only agents that PAY somebody and where no single party takes more than half of what the agent itself SPENDS. The other direction from the concentration of its custom: an agent with forty payers and one supplier looks diversified on every other figure here and is one supplier away from stopping. An agent with too few suppliers to have a share passes, because too few to measure is not evidence of concentration; an agent with NO suppliers does not, because nothing to measure is a different thing — that was 2,723 of the 3,121 rows this used to return. Use `supplierSpread=diversified` for the measured ones alone."
  2. Changed1 schema field changed
    • addedInput schema / properties / supplierSpread
      Added value: +{
      +  "description": "The precise form of `spreadSuppliers`. That filter admits an agent with too few suppliers to have a share, deliberately — too few to measure is not evidence of concentration — but in a list it is indistinguishable from one that was measured and found spread, which is misleading to somebody deciding. Ask for `diversified` to get only the measured ones. `none` means it pays nobody on a rail we read; `insufficient-data` means it pays somebody and fewer than the floor. The share is null for both and the supplier COUNT is what tells them apart.",
      +  "enum": [
      +    "diversified",
      +    "concentrated",
      +    "insufficient-data",
      +    "none"
      +  ],
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedOutput schema / properties / items / description
      Previous value: -"Matching agents, ordered by the ONE dimension asked for, never a composite score."New value: +"Matching agents, ordered by the ONE dimension asked for, never a composite score. Each row carries `subject`: { type, evidence[], alsoShows[], says }. `evidence` names each thing we SAW and, in `supports`, which type it is evidence for — or null where the observation is real and separates nothing, which is the case for a catalogue listing. So `unknown` WITH evidence is the normal shape here and means \"we saw these things and they do not settle it\", never \"we saw nothing\". `alsoShows` carries the types a subject also shows evidence for, because they are not exclusive and dropping one would make the label more confident than the evidence."
  4. Changed2 schema fields changed
    • changedInput schema / properties / sort / description
      Previous value: -"One named dimension: independent, dealings, usd, completion, recent, paidBack, largestShare or counterparties. There is no \"best\" — nothing here has earned the right to rank."New value: +"One named dimension: independent, dealings, usd, completion, recent, paidBack, largestShare, counterparties, serving, suppliers, largestSupplierShare or spent. The last three order by what an agent rests on rather than by who rests on it. There is no \"best\" — nothing here has earned the right to rank."
    • addedInput schema / properties / spreadSuppliers
      Added value: +{
      +  "description": "Only agents where no single party takes more than half of what the agent itself SPENDS. The other direction from the concentration of its custom: an agent with forty payers and one supplier looks diversified on every other figure here and is one supplier away from stopping. An agent with too few suppliers to have a share passes, because too few to measure is not evidence of concentration.",
      +  "type": "boolean"
      +}
  5. Changed1 schema field changed
    • addedOutput schema / properties / asOf / description
      Added value: +"When the record behind these rows was last rebuilt. Null means nothing in the answer carries a date, which is a gap in our reading rather than a fact about the agents."
  6. Changed7 schema fields changed
    • removedOutput schema / properties / agents
      Removed value: -{
      -  "description": "Matching agents, ordered by the ONE dimension asked for, never a composite score.",
      -  "items": {
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedOutput schema / properties / asOf
      Added value: +{
      +  "format": "date-time",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / filters
      Added value: +{
      +  "description": "What was applied, read back, including what a floor excluded.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / items
      Added value: +{
      +  "description": "Matching agents, ordered by the ONE dimension asked for, never a composite score.",
      +  "items": {
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • removedOutput schema / properties / says
      Removed value: -{
      -  "description": "What the filter did, and that an absent address was never paid on a rail we read rather than never having worked.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / total
      Removed value: -{
      -  "type": "integer"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "agents"
      -]New value: +[
      +  "items"
      +]
  7. Changed7 schema fields changed
    • addedInput schema / properties / minDealings / description
      Added value: +"Fewest dealings on the rails we read, all time."
    • addedInput schema / properties / minIndependent / description
      Added value: +"Fewest counterparties that paid it and were never paid back. The closest thing here to \"has real custom\"."
    • addedInput schema / properties / noTwoWay / description
      Added value: +"Exclude agents that also pay their own payers, which can be one owner moving money between their own addresses."
    • addedInput schema / properties / registered / description
      Added value: +"Only agents holding a registration in a registry we read. A registration is a claim, never a verification."
    • addedInput schema / properties / serving / description
      Added value: +"Only agents whose declared service answered our last probe. An agent that declares none is excluded, not failed."
    • addedInput schema / properties / sort / description
      Added value: +"One named dimension: independent, dealings, usd, completion, recent, paidBack, largestShare or counterparties. There is no \"best\" — nothing here has earned the right to rank."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "agents": {
      +      "description": "Matching agents, ordered by the ONE dimension asked for, never a composite score.",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "says": {
      +      "description": "What the filter did, and that an absent address was never paid on a rail we read rather than never having worked.",
      +      "type": "string"
      +    },
      +    "total": {
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "agents"
      +  ],
      +  "type": "object"
      +}
  8. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources