Skip to content

io.github.michu5696/paycrow

by michu5696 · remote · local (npm) · no sign-in to list tools · v1.0.0 · published by GitHub user michu5696

Escrow protection for agent payments on Base — USDC held in smart contract until job completion.

Final · 1Changes · 7

10 tools: 1 do something that can't be undone, 7 change things and 2 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http paycrow https://paycrow-app.fly.dev/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

10 tools

Can't be undone 1Claude Code: ask
  • safe_payThe smart way to pay an agent.Can send data outNo findings

    Why it is in this group

    • The name "safe_pay" says "pay": a word that usually means money moves, which cannot be taken back.

    What it can reach

    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    The smart way to pay an agent. Checks their trust score first, then auto-configures escrow protection based on risk. Flow: Check trust → Set protection level → Create escrow → Call API → Verify → Auto-release or auto-dispute. Protection levels (automatic): - High trust agent → 15min timelock, proceed normally - Moderate trust → 60min timelock, payment capped at $25 - Low trust → 4hr timelock, payment capped at $5 - Unknown/caution → BLOCKED — will not send funds This is the recommended tool for paying any agent. If you need manual control, use x402_protected_call instead.
Changes things 7Claude Code: ask
  • escrow_createCreate a USDC escrow with built-in dispute resolution.No findings

    Why it is in this group

    • The name "escrow_create" says "create": a word for a change.
    Description, as the server wrote it
    Create a USDC escrow with built-in dispute resolution. Funds are locked on-chain until delivery is confirmed (release) or a problem is flagged (dispute). If disputed, an arbiter reviews and rules — the only escrow service with real dispute resolution on Base.
  • escrow_disputeFlag a problem with delivery — PayCrow's key differentiator.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Flag a problem with delivery — PayCrow's key differentiator. Locks escrowed funds and triggers arbiter review. Unlike other escrow services that say 'no disputes, no chargebacks', PayCrow has real on-chain dispute resolution. Use when service was not delivered or quality was unacceptable.
  • escrow_releaseConfirm delivery and release escrowed USDC to the seller.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Confirm delivery and release escrowed USDC to the seller. Only call this when you've verified the service/product was delivered correctly.
  • rate_serviceRate a completed escrow.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Rate a completed escrow. After escrow_release, rate the seller's service quality (1-5 stars). This builds the reputation data that makes PayCrow's trust scores meaningful over time. Both sides can rate: buyer rates seller's service quality, seller rates buyer's conduct. Ratings are on-chain and permanent — they feed directly into trust scoring.
  • trust_gateShould you pay this agent?No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Should you pay this agent? Check before sending money. Returns a go/no-go decision with recommended escrow protection parameters. Unlike other trust services, PayCrow ties trust directly to escrow protection: - High trust → shorter timelock, proceed with confidence - Low trust → longer timelock, smaller amounts recommended - Caution → don't proceed, or use maximum protection This is the tool to call BEFORE escrow_create or safe_pay.
  • trust_onchain_quickQuick on-chain reputation check using only the PayCrow Reputation contract.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Quick on-chain reputation check using only the PayCrow Reputation contract. Free, no API keys needed. Use trust_score_query for the full composite score.
  • x402_protected_callMake an HTTP API call with manual escrow protection.Can send data outNo findings

    Why it is in this group

    • The name "x402_protected_call" says "call": a word for a change.

    What it can reach

    • outboundThe input takes a URL (input.url): a request to a URL can carry data to whoever runs it.
    Description, as the server wrote it
    Make an HTTP API call with manual escrow protection. Full control over verification and timelock parameters. For most payments, use safe_pay instead — it auto-configures protection based on seller trust. Use x402_protected_call when you need: - Custom JSON Schema verification (not just "valid JSON + 2xx") - Hash-lock verification (exact response match) - Specific timelock durations - To override safe_pay's trust-based amount limits
Only reads 2Claude Code: allow
  • escrow_statusCheck the current state of an escrow (funded, released, disputed, expired, etc.)No findings

    Why it is in this group

    • The name "escrow_status" says "status": a word for reading.
    Description, as the server wrote it
    Check the current state of an escrow (funded, released, disputed, expired, etc.)
  • trust_score_queryFull trust score breakdown for an agent address.No findings

    Why it is in this group

    • The name "trust_score_query" says "query": a word for reading.
    Description, as the server wrote it
    Full trust score breakdown for an agent address. Aggregates 4 on-chain sources: PayCrow escrow history, ERC-8004 agent identity, Moltbook social karma, and Base chain activity. Returns 0-100 score with per-source details. For a quick go/no-go decision, use trust_gate instead.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write0
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out2
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Remote posture

What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.

Looked at Oct 22, 2026, 15:02 UTC, unchanged since Oct 22, 2026. No credentials were sent and no tool was called. What is looked at.

Reachable
yes
HTTP status of an anonymous initialize
200
tools/list served without credentials
yes
Tools that change things, listed without credentials
8
Protocol version
2025-06-18
WWW-Authenticate on 401
not observed
resource_metadata in WWW-Authenticate
none
RFC 9728 protected resource metadata
none
Authorization servers
none
Legacy HTTP+SSE transport
no
Dynamic client registration
not observed
Client ID metadata documents
not observed
  • HighThe whole server

    The endpoint served tools/list without credentials, and the list has 8 tools that change things (1 irreversible, 7 write). Whether a call also works without credentials was not tested: tools are never called.

    Matched text

    https://paycrow-app.fly.dev/mcp: tools/list returned 10 tools to an anonymous client, including safe_pay (irreversible), trust_gate (write), trust_onchain_quick (write), escrow_create (write), escrow_release (write) and 3 more

    What this check looks for

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http paycrow https://paycrow-app.fly.dev/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__paycrow__trust_score_query",
      "mcp__paycrow__escrow_status"
    ],
    "ask": [
      "mcp__paycrow__trust_gate",
      "mcp__paycrow__trust_onchain_quick",
      "mcp__paycrow__escrow_create",
      "mcp__paycrow__escrow_release",
      "mcp__paycrow__escrow_dispute",
      "mcp__paycrow__rate_service",
      "mcp__paycrow__safe_pay",
      "mcp__paycrow__x402_protected_call"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as paycrow. Review it before you use it.

Capability tags behind 2 rules
  • mcp__paycrow__safe_pay outbound
  • mcp__paycrow__x402_protected_call outbound