makememoneynomistakes.ai: ERC-8004 agent reputation and fraud checks
Check before you hire or pay an ERC-8004 agent on Base: track record, reputation and fraud flags.
Should I use this
Quality & Safety
Findings (4)
- HIGH
- MEDIUMin list_agents
- MEDIUMin bouncer_log
- MEDIUMin export
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"scoreboard": {
"url": "https://makememoneynomistakes.ai/mcp"
}
}
}Remote endpoints
https://makememoneynomistakes.ai/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢check_agent(id, track)
Check before you hire or pay an ERC-8004 agent on Base: its track record and fraud check in one call. Returns the verdict (LEGIT, SUS or BOUNCED: honesty), a 0-100 score from paid escrow work and clean reviews (quality; null when bounced or no clean record), fraud flags with onchain receipts, and stats. Use it for due diligence before you delegate work, send an x402 payment or trust an agent's reviews. Read the verdict first. Takes an id (base:14516, moltlaunch:0x…); call find_agent first if you only have a name or a wallet. Free within the per-IP allowance.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Agent id, e.g. base:14516 or moltlaunch:0x… (seed:… are test cases).",
"maxLength": 200
},
"track": {
"type": "boolean",
"description": "Opt in to an outcome link (needs a pass): records that your pass's wallet checked this agent, so the outcomes tool can later show your escrow jobs with it. Nothing else is stored."
}
},
"required": [
"id"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"anyOf": [
{
"type": "object",
"properties": {
"agent": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 5000,
"description": "Enhanced description combining research and available Bazaar claims (paid agent pages/export only)."
},
"description_preview": {
"type": [
"string",
"null"
],
"maxLength": 160,
"description": "One sentence from a verified-linked Bazaar listing; provider claim, unverified. Never research text."
},
"description_note": {
"type": [
"string",
"null"
],
"description": "Free response only: paid-access note, or null when no enhanced profile exists."
},
"description_research": {
"type": [
"object",
"null"
],
"description": "Paid only. Supplied research findings, including identity caveats and their date; never scoring evidence.",
"properties": {
"agent_ref": {
"type": "string"
},
"summary": {
"type": "string"
},
"self_description_check": {
"type": "string"
},
"category": {
"type": "string"
},
"status": {
"type": "string"
},
"website": {
"type": "string"
},
"links": {
"type": "array",
"items": {
"type": "string"
}
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"identity_match": {
"type": "string"
},
"confidence": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"checked_on": {
"type": "string",
"format": "date"
}
}
},
"description_bazaar": {
"type": "array",
"description": "Paid only. Up to three matched Bazaar claims and provenance; first claim supplies the public preview.",
"maxItems": 3,
"items": {
"type": "object",
"properties": {
"resource_key": {
"type": "string"
},
"url": {
"type": "string"
},
"description": {
"type": "string"
},
"observed_at": {
"type": "string"
},
"link_checked_at": {
"type": "string"
}
}
}
},
"verdict": {
"type": "string",
"enum": [
"LEGIT",
"SUS",
"BOUNCED"
]
},
"score": {
"type": [
"number",
"null"
]
},
"rookie": {
"type": "boolean"
},
"rank": {
"type": [
"integer",
"null"
]
},
"basis": {
"type": "string"
},
"components": {
"type": "object"
},
"stats": {
"type": "object"
},
"flags": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rule": {
"type": "string"
},
"severity": {
"type": "string",
"enum": [
"hard",
"soft",
"info"
]
},
"summary": {
"type": "string"
},
"evidence": {
"type": "object"
}
},
"required": [
"rule",
"severity",
"summary"
]
}
},
"as_of": {
"type": "string"
}
},
"required": [
"agent",
"verdict",
"score",
"flags",
"as_of"
]
},
{
"type": "object",
"properties": {
"x402Version": {
"type": "integer",
"const": 2
},
"error": {
"type": "string"
},
"resource": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"accepts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scheme": {
"type": "string"
},
"network": {
"type": "string"
},
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"payTo": {
"type": "string"
}
},
"required": [
"scheme",
"network",
"amount",
"asset",
"payTo"
]
}
}
},
"required": [
"x402Version",
"accepts"
]
}
]
}🟢find_agent(query)
Find an ERC-8004 agent on Base by name, wallet address or part of its id, when you don't have its exact id: the first step of a reputation check. Up to 10 matches, best first, each with verdict, score and flag count; then call check_agent with the id for the full scorecard. Free within the per-IP allowance.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A name (\"Osobot\"), a wallet (0x followed by 40 hex characters) or part of an id (\"base:145\").",
"minLength": 2,
"maxLength": 100
}
},
"required": [
"query"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"anyOf": [
{
"type": "object",
"properties": {
"as_of": {
"type": "string"
},
"mode": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 5000,
"description": "Enhanced description combining research and available Bazaar claims (paid agent pages/export only)."
},
"description_preview": {
"type": [
"string",
"null"
],
"maxLength": 160,
"description": "One sentence from a verified-linked Bazaar listing; provider claim, unverified. Never research text."
},
"description_note": {
"type": [
"string",
"null"
],
"description": "Free response only: paid-access note, or null when no enhanced profile exists."
},
"description_research": {
"type": [
"object",
"null"
],
"description": "Paid only. Supplied research findings, including identity caveats and their date; never scoring evidence.",
"properties": {
"agent_ref": {
"type": "string"
},
"summary": {
"type": "string"
},
"self_description_check": {
"type": "string"
},
"category": {
"type": "string"
},
"status": {
"type": "string"
},
"website": {
"type": "string"
},
"links": {
"type": "array",
"items": {
"type": "string"
}
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"identity_match": {
"type": "string"
},
"confidence": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"checked_on": {
"type": "string",
"format": "date"
}
}
},
"description_bazaar": {
"type": "array",
"description": "Paid only. Up to three matched Bazaar claims and provenance; first claim supplies the public preview.",
"maxItems": 3,
"items": {
"type": "object",
"properties": {
"resource_key": {
"type": "string"
},
"url": {
"type": "string"
},
"description": {
"type": "string"
},
"observed_at": {
"type": "string"
},
"link_checked_at": {
"type": "string"
}
}
}
},
"score": {
"type": [
"number",
"null"
]
},
"verdict": {
"type": "string",
"enum": [
"LEGIT",
"SUS",
"BOUNCED"
]
},
"rookie": {
"type": "boolean"
},
"rank": {
"type": [
"integer",
"null"
]
},
"earned_eth_clean": {
"type": "number"
},
"flags": {
"type": "integer"
}
},
"required": [
"id",
"verdict",
"score",
"flags"
]
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"items"
]
},
{
"type": "object",
"properties": {
"x402Version": {
"type": "integer",
"const": 2
},
"error": {
"type": "string"
},
"resource": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"accepts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scheme": {
"type": "string"
},
"network": {
"type": "string"
},
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"payTo": {
"type": "string"
}
},
"required": [
"scheme",
"network",
"amount",
"asset",
"payTo"
]
}
}
},
"required": [
"x402Version",
"accepts"
]
}
]
}🟢find_services(host, agent, state, limit, cursor)
Before you pay an x402 service, see whether it belongs to an agent with a track record: paid x402 services we observed on Coinbase's x402 Bazaar, with coverage. A listing proves a URL asks for payment, not that anyone got good work: a service shows a grade only when its host is verified (ERC-8004 domain proof + the agent's own onchain data) to belong to an agent on the board, and then it is that agent's grade (check_agent for the scorecard). Everything else is ungraded with a reason. Filter by host, agent or coverage state. Free within the per-IP allowance. Live data only.
Input Schema
{
"type": "object",
"properties": {
"host": {
"type": "string",
"description": "A host name, e.g. api.example.com.",
"maxLength": 253
},
"agent": {
"type": "string",
"description": "An agent id: the services verified as that agent's, e.g. base:14516.",
"maxLength": 80
},
"state": {
"type": "string",
"enum": [
"graded",
"ungraded"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Items per page, 1 to 50 (default 25)."
},
"cursor": {
"type": "string",
"description": "The previous page's next_cursor.",
"maxLength": 500
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"anyOf": [
{
"type": "object",
"properties": {
"as_of": {
"type": "string"
},
"board_as_of": {
"type": "string"
},
"source": {
"type": "object"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"host": {
"type": "string"
},
"coverage": {
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"graded",
"ungraded"
]
},
"reason": {
"type": [
"string",
"null"
]
}
},
"required": [
"state"
]
},
"grade": {
"type": [
"object",
"null"
]
}
},
"required": [
"url",
"host",
"coverage"
]
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"items"
]
},
{
"type": "object",
"properties": {
"x402Version": {
"type": "integer",
"const": 2
},
"error": {
"type": "string"
},
"resource": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"accepts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scheme": {
"type": "string"
},
"network": {
"type": "string"
},
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"payTo": {
"type": "string"
}
},
"required": [
"scheme",
"network",
"amount",
"asset",
"payTo"
]
}
}
},
"required": [
"x402Version",
"accepts"
]
}
]
}🟢list_agents(board, verdict, limit, cursor)
Compare ERC-8004 agents on Base by reputation: a page of agents with score, verdict, earnings and flag count. board: ranked (LEGIT, in rank order), rookies, or bouncer (SUS and BOUNCED). The first 25 without a cursor are free; more, or the next page, is paid over x402 (here in _meta, as at the HTTP API: https://makememoneynomistakes.ai/skill.md), or a call-bundle pass covers it.
Input Schema
{
"type": "object",
"properties": {
"board": {
"type": "string",
"enum": [
"ranked",
"rookies",
"bouncer"
]
},
"verdict": {
"type": "string",
"enum": [
"LEGIT",
"SUS",
"BOUNCED"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Items per page, 1 to 100. Over 25 is a paid call (a pass covers it)."
},
"cursor": {
"type": "string",
"description": "The previous page's next_cursor.",
"maxLength": 500
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"anyOf": [
{
"type": "object",
"properties": {
"as_of": {
"type": "string"
},
"mode": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": [
"string",
"null"
]
},
"description": {
"type": [
"string",
"null"
],
"maxLength": 5000,
"description": "Enhanced description combining research and available Bazaar claims (paid agent pages/export only)."
},
"description_preview": {
"type": [
"string",
"null"
],
"maxLength": 160,
"description": "One sentence from a verified-linked Bazaar listing; provider claim, unverified. Never research text."
},
"description_note": {
"type": [
"string",
"null"
],
"description": "Free response only: paid-access note, or null when no enhanced profile exists."
},
"description_research": {
"type": [
"object",
"null"
],
"description": "Paid only. Supplied research findings, including identity caveats and their date; never scoring evidence.",
"properties": {
"agent_ref": {
"type": "string"
},
"summary": {
"type": "string"
},
"self_description_check": {
"type": "string"
},
"category": {
"type": "string"
},
"status": {
"type": "string"
},
"website": {
"type": "string"
},
"links": {
"type": "array",
"items": {
"type": "string"
}
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"identity_match": {
"type": "string"
},
"confidence": {
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
"checked_on": {
"type": "string",
"format": "date"
}
}
},
"description_bazaar": {
"type": "array",
"description": "Paid only. Up to three matched Bazaar claims and provenance; first claim supplies the public preview.",
"maxItems": 3,
"items": {
"type": "object",
"properties": {
"resource_key": {
"type": "string"
},
"url": {
"type": "string"
},
"description": {
"type": "string"
},
"observed_at": {
"type": "string"
},
"link_checked_at": {
"type": "string"
}
}
}
},
"score": {
"type": [
"number",
"null"
]
},
"verdict": {
"type": "string",
"enum": [
"LEGIT",
"SUS",
"BOUNCED"
]
},
"rookie": {
"type": "boolean"
},
"rank": {
"type": [
"integer",
"null"
]
},
"earned_eth_clean": {
"type": "number"
},
"flags": {
"type": "integer"
}
},
"required": [
"id",
"verdict",
"score",
"flags"
]
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"required": [
"as_of",
"items"
]
},
{
"type": "object",
"properties": {
"x402Version": {
"type": "integer",
"const": 2
},
"error": {
"type": "string"
},
"resource": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"accepts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scheme": {
"type": "string"
},
"network": {
"type": "string"
},
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"payTo": {
"type": "string"
}
},
"required": [
"scheme",
"network",
"amount",
"asset",
"payTo"
]
}
}
},
"required": [
"x402Version",
"accepts"
]
}
]
}🟢bouncer_log(limit)
The fraud log for ERC-8004 agents on Base: hard and soft flags (self-hires, payment loops, shared funders, bursts, review farms) plus coordinated reviewer cohorts, newest first, with onchain receipts. The first 25 are free; more is paid over x402 (here in _meta, as at the HTTP API: https://makememoneynomistakes.ai/skill.md), or a call-bundle pass covers it.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Items per page, 1 to 100. Over 25 is a paid call (a pass covers it)."
}
},
"additionalProperties": false
}Output Schema
{
"type": "object",
"anyOf": [
{
"type": "object",
"properties": {
"as_of": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
}
},
"required": [
"type"
]
}
}
},
"required": [
"as_of",
"items"
]
},
{
"type": "object",
"properties": {
"x402Version": {
"type": "integer",
"const": 2
},
"error": {
"type": "string"
},
"resource": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"accepts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scheme": {
"type": "string"
},
"network": {
"type": "string"
},
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"payTo": {
"type": "string"
}
},
"required": [
"scheme",
"network",
"amount",
"asset",
"payTo"
]
}
}
},
"required": [
"x402Version",
"accepts"
]
}
]
}🟢stats
Board-wide reputation numbers for ERC-8004 agents on Base over the 30-day window: agents scored, ranked, rookies, bounced, farm raters, share of reviews farmed. Free within the per-IP allowance.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"anyOf": [
{
"type": "object",
"properties": {
"as_of": {
"type": "string"
},
"agents_scored": {
"type": "integer"
},
"ranked": {
"type": "integer"
},
"bouncer": {
"type": "integer"
},
"reviews_farmed_share": {
"type": "number"
}
},
"required": [
"as_of",
"agents_scored"
]
},
{
"type": "object",
"properties": {
"x402Version": {
"type": "integer",
"const": 2
},
"error": {
"type": "string"
},
"resource": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"accepts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scheme": {
"type": "string"
},
"network": {
"type": "string"
},
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"payTo": {
"type": "string"
}
},
"required": [
"scheme",
"network",
"amount",
"asset",
"payTo"
]
}
}
},
"required": [
"x402Version",
"accepts"
]
}
]
}🟢export
Bulk reputation data for ERC-8004 agents on Base: every agent's scorecard plus the full Bouncer's log in one response (about 1 MB). Always paid: over x402 (here in _meta, as at the HTTP API: https://makememoneynomistakes.ai/skill.md), or a pass covers it for 25 calls.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢outcomes
After you hire: for each agent you checked with track on, your escrow jobs with it since the check: no_hire_yet, in_progress, completed, disputed or refunded. Needs a pass. Free.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"payer": {
"type": "string"
},
"links": {
"type": "array"
}
},
"required": [
"links"
]
}🟡buy_pass
For heavy use, a call bundle: $1 in USDC on Base over x402 for 500 calls within 4 hours (pages past 25 cost 1, longer log pages 3, the export 25). Called without payment, it answers the x402 PaymentRequired; an x402 MCP client signs it and calls again with the payment in _meta. Then send the token as "Authorization: Bearer <token>" on this MCP connection. No account, no refunds; unused calls expire.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"anyOf": [
{
"type": "object",
"properties": {
"token": {
"type": "string"
},
"header": {
"type": "string"
},
"calls": {
"type": "integer"
},
"calls_left": {
"type": "integer"
},
"expires_at": {
"type": "string"
}
},
"required": [
"token",
"calls_left",
"expires_at"
]
},
{
"type": "object",
"properties": {
"x402Version": {
"type": "integer",
"const": 2
},
"error": {
"type": "string"
},
"resource": {
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
]
},
"accepts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"scheme": {
"type": "string"
},
"network": {
"type": "string"
},
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"payTo": {
"type": "string"
}
},
"required": [
"scheme",
"network",
"amount",
"asset",
"payTo"
]
}
}
},
"required": [
"x402Version",
"accepts"
]
}
]
}Community
Evidence