Escrow protection for agent payments on Base — USDC held in smart contract until job completion.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh 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.
Ethereum address of the seller/service provider
Amount in USDC (e.g., 5.00 for $5)
URL or identifier of the service being purchased (used for tracking)
Minutes until escrow expires and auto-refunds (default: 30)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| seller* | string | Ethereum address of the seller/service provider |
| amount_usdc* | number | Amount in USDC (e.g., 5.00 for $5) |
| service_url* | string | URL or identifier of the service being purchased (used for tracking) |
| timelock_minutes | number | Minutes until escrow expires and auto-refunds (default: 30) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"seller",
"amount_usdc",
"service_url"
],
"properties": {
"seller": {
"type": "string",
"description": "Ethereum address of the seller/service provider"
},
"amount_usdc": {
"type": "number",
"maximum": 100,
"minimum": 0.1,
"description": "Amount in USDC (e.g., 5.00 for $5)"
},
"service_url": {
"type": "string",
"description": "URL or identifier of the service being purchased (used for tracking)"
},
"timelock_minutes": {
"type": "number",
"default": 30,
"maximum": 43200,
"minimum": 5,
"description": "Minutes until escrow expires and auto-refunds (default: 30)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| reason* | string | Brief description of the problem for the arbiter |
| escrow_id* | string | The escrow ID to dispute |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"escrow_id",
"reason"
],
"properties": {
"reason": {
"type": "string",
"description": "Brief description of the problem for the arbiter"
},
"escrow_id": {
"type": "string",
"description": "The escrow ID to dispute"
}
},
"additionalProperties": false
}Confirm delivery and release escrowed USDC to the seller. Only call this when you've verified the service/product was delivered correctly.
| Argument | Type | Description |
|---|---|---|
| escrow_id* | string | The escrow ID to release |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"escrow_id"
],
"properties": {
"escrow_id": {
"type": "string",
"description": "The escrow ID to release"
}
},
"additionalProperties": false
}Check the current state of an escrow (funded, released, disputed, expired, etc.)
| Argument | Type | Description |
|---|---|---|
| escrow_id* | string | The escrow ID to check |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"escrow_id"
],
"properties": {
"escrow_id": {
"type": "string",
"description": "The escrow ID to check"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| stars* | integer | Rating 1-5 stars (1=terrible, 5=excellent) |
| escrow_id* | string | The escrow ID to rate (must be in Released state) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"escrow_id",
"stars"
],
"properties": {
"stars": {
"type": "integer",
"maximum": 5,
"minimum": 1,
"description": "Rating 1-5 stars (1=terrible, 5=excellent)"
},
"escrow_id": {
"type": "string",
"description": "The escrow ID to rate (must be in Released state)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The API endpoint URL to call |
| body | string | Request body (for POST/PUT) |
| method | string | HTTP method (default: GET) |
| headers | object | HTTP headers to include |
| amount_usdc* | number | Amount to pay in USDC |
| seller_address* | string | Ethereum address of the agent you're paying |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"seller_address",
"amount_usdc"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The API endpoint URL to call"
},
"body": {
"type": "string",
"description": "Request body (for POST/PUT)"
},
"method": {
"enum": [
"GET",
"POST",
"PUT",
"DELETE"
],
"type": "string",
"default": "GET",
"description": "HTTP method (default: GET)"
},
"headers": {
"type": "object",
"description": "HTTP headers to include",
"additionalProperties": {
"type": "string"
}
},
"amount_usdc": {
"type": "number",
"maximum": 100,
"minimum": 0.1,
"description": "Amount to pay in USDC"
},
"seller_address": {
"type": "string",
"description": "Ethereum address of the agent you're paying"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| address* | string | Ethereum address of the agent you're about to pay |
| intended_amount_usdc | number | How much you plan to pay (helps calibrate the recommendation) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Ethereum address of the agent you're about to pay"
},
"intended_amount_usdc": {
"type": "number",
"maximum": 100,
"minimum": 0.01,
"description": "How much you plan to pay (helps calibrate the recommendation)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| address* | string | Ethereum address of the agent to look up |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Ethereum address of the agent to look up"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| address* | string | Ethereum address of the agent to look up |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"address"
],
"properties": {
"address": {
"type": "string",
"description": "Ethereum address of the agent to look up"
}
},
"additionalProperties": false
}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
| Argument | Type | Description |
|---|---|---|
| url* | string | The API endpoint URL to call |
| body | string | Request body (for POST/PUT) |
| method | string | HTTP method |
| headers | object | HTTP headers to include |
| amount_usdc* | number | Amount to pay in USDC |
| seller_address* | string | Ethereum address of the API provider (seller) who will receive payment |
| timelock_minutes | number | Minutes until escrow expires |
| verification_data* | string | Verification data: JSON Schema string (for schema strategy) or expected hash (for hash-lock) |
| verification_strategy | string | How to verify the response: 'schema' (JSON Schema) or 'hash-lock' (exact hash match) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url",
"seller_address",
"amount_usdc",
"verification_data"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "The API endpoint URL to call"
},
"body": {
"type": "string",
"description": "Request body (for POST/PUT)"
},
"method": {
"enum": [
"GET",
"POST",
"PUT",
"DELETE"
],
"type": "string",
"default": "GET",
"description": "HTTP method"
},
"headers": {
"type": "object",
"description": "HTTP headers to include",
"additionalProperties": {
"type": "string"
}
},
"amount_usdc": {
"type": "number",
"maximum": 100,
"minimum": 0.1,
"description": "Amount to pay in USDC"
},
"seller_address": {
"type": "string",
"description": "Ethereum address of the API provider (seller) who will receive payment"
},
"timelock_minutes": {
"type": "number",
"default": 30,
"maximum": 43200,
"minimum": 5,
"description": "Minutes until escrow expires"
},
"verification_data": {
"type": "string",
"description": "Verification data: JSON Schema string (for schema strategy) or expected hash (for hash-lock)"
},
"verification_strategy": {
"enum": [
"schema",
"hash-lock"
],
"type": "string",
"default": "schema",
"description": "How to verify the response: 'schema' (JSON Schema) or 'hash-lock' (exact hash match)"
}
},
"additionalProperties": false
}