three.ws Permit2 Demo

Make a 3D AI agent from a selfie in 60 seconds. Drop one HTML tag to embed it on any website. Agents think on IBM watsonx.ai (Granite); optionally charge per chat with built-in micropayments.

SearchLiveeip155:8453Exactvia cdp
x402Permit2eip2612GaslessDemo
Settlements · 30d
4
No per-endpoint history for this service yet, so this is payments indexed to its PROVIDER's wallet over 30 days.
$0.19
Verified settled volume
59 settlements proven x402 by their on-chain EIP-3009 marker.
$0.0010
Listed price
As published in the catalog. Always read the live 402 before paying.
1
Calls · 30d
Upstream's own call count for this endpoint, not ours.
1
Unique payers · 30d
Last called 2026-07-27 23:22Z
—
Upstream on-chain volume
Reported by the source catalog.
Paid to
0x4022de2d36c334e73c7a108805cea11c0564f402

The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.

Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Provider

The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.

Live 402 challenge

Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.

{
  "error": "X-PAYMENT header is required",
  "accepts": [
    {
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "extra": {
        "name": "USD Coin",
        "version": "2",
        "decimals": 6,
        "supportsEip2612": true,
        "assetTransferMethod": "permit2"
      },
      "payTo": "0x4022de2d36c334e73c7a108805cea11c0564f402",
      "amount": "1000",
      "scheme": "exact",
      "network": "eip155:8453",
      "resource": "https://three.ws/api/x402/permit2-paid-demo",
      "maxTimeoutSeconds": 60
    }
  ],
  "resource": {
    "url": "https://three.ws/api/x402/permit2-paid-demo",
    "tags": [
      "x402",
      "permit2",
      "eip2612",
      "gasless",
      "demo"
    ],
    "iconUrl": "https://three.ws/favicon.ico",
    "mimeType": "application/json",
    "description": "Permit2 + EIP-2612 Gas Sponsoring Demo — forces the gasless Permit2 path so a fresh wallet holding USDC but ZERO ETH can complete the flow. The CDP facilitator submits the EIP-2612 permit and the Permit2 transfer atomically in a single transaction via x402ExactPermit2Proxy.settleWithPermit. The response carries the on-chain tx hash + Basescan link so callers can confirm the permit + transfer landed together. Pay $0.001 USDC on Base mainnet.",
    "serviceName": "three.ws Permit2 Demo"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "type": "http",
          "method": "GET",
          "queryParams": {}
        },
        "output": {
          "type": "json",
          "example": {
            "ok": true,
            "demo": "permit2-eip2612-gas-sponsoring",
            "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "payer": "0x4022de2d36c334e73c7a108805cea11c0564f402",
            "proxy": "0x402085c248EeA27D92E8b30b2C58ed07f9E20001",
            "method": "permit2",
            "network": "eip155:8453",
            "explorer": "https://basescan.org/tx/0x9c0a7e5ad5c9c0bb6f04f6ad9c52f4f44bb6c5d9c0a7e5ad5c9c0bb6f04f6ad9",
            "settledAt": "2026-05-21T18:30:00.000Z",
            "transaction": "0x9c0a7e5ad5c9c0bb6f04f6ad9c52f4f44bb6c5d9c0a7e5ad5c9c0bb6f04f6ad9",
            "amountAtomics": "1000",
            "supportsEip2612": true
          }
        }
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "required": [
          "input"
        ],
        "properties": {
          "input": {
            "type": "object",
            "required": [
              "type",
              "method"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "http"
              },
              "method": {
                "enum": [
                  "GET",
                  "HEAD",
                  "DELETE"
                ],
                "type": "string"
              },
              "queryParams": {
                "type": "object",
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "properties": {},
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "output": {
            "type": "object",
            "required": [
              "type"
            ],
            "properties": {
              "type": {
                "type": "string"
              },
              "example": {
                "type": "object",
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "required": [
                  "ok",
                  "demo",
                  "method",
                  "payer",
                  "network",
                  "asset",
                  "amountAtomics",
                  "transaction",
                  "explorer",
                  "settledAt",
                  "proxy"
                ],
                "properties": {
                  "ok": {
                    "type": "boolean",
                    "const": true
                  },
                  "demo": {
                    "type": "string",
                    "const": "permit2-eip2612-gas-sponsoring"
                  },
                  "asset": {
                    "type": "string"
                  },
                  "payer": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "proxy": {
                    "type": "string",
                    "description": "Canonical x402ExactPermit2Proxy address that settled the EIP-2612 permit + Permit2 transfer atomically."
                  },
                  "method": {
                    "type": "string",
                    "const": "permit2"
                  },
                  "network": {
                    "type": "string"
                  },
                  "explorer": {
                    "type": "string",
                    "format": "uri"
                  },
                  "settledAt": {
                    "type": "string",
                    "format": "date-time"
                  },
                  "transaction": {
                    "type": "string"
                  },
                  "amountAtomics": {
                    "type": "string"
                  },
                  "supportsEip2612": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        }
      },
      "discoverable": true
    },
    "offer-receipt": {
      "info": {
        "offers": [
          {
            "format": "jws",
            "signature": "eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6dGhyZWUud3Mja2V5LTEifQ.eyJhbW91bnQiOiIxMDAwIiwiYXNzZXQiOiIweDgzMzU4OWZDRDZlRGI2RTA4ZjRjN0MzMkQ0ZjcxYjU0YmRBMDI5MTMiLCJuZXR3b3JrIjoiZWlwMTU1Ojg0NTMiLCJwYXlUbyI6IjB4NDAyMmRlMmQzNmMzMzRlNzNjN2ExMDg4MDVjZWExMWMwNTY0ZjQwMiIsInJlc291cmNlVXJsIjoiaHR0cHM6Ly90aHJlZS53cy9hcGkveDQwMi9wZXJtaXQyLXBhaWQtZGVtbyIsInNjaGVtZSI6ImV4YWN0IiwidmFsaWRVbnRpbCI6MTc4OTk3MzQyNSwidmVyc2lvbiI6MX0.JuqqlmpDxcK7xLcHNG65EyRGRn-dvcj1UbYzIJZuZjkS6mvItdxEXzvGz7iv2yI2FTG79Yo9hYW023es9YrRDg",
            "acceptIndex": 0
          }
        ]
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "required": [
          "offers"
        ],
        "properties": {
          "offers": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "format",
                "signature"
              ],
              "properties": {
                "format": {
                  "type": "string"
                },
                "payload": {
                  "type": "object",
                  "required": [
                    "version",
                    "resourceUrl",
                    "scheme",
                    "network",
                    "asset",
                    "payTo",
                    "amount"
                  ],
                  "properties": {
                    "asset": {
                      "type": "string"
                    },
                    "payTo": {
                      "type": "string"
                    },
                    "amount": {
                      "type": "string"
                    },
                    "scheme": {
                      "type": "string"
                    },
                    "network": {
                      "type": "string"
                    },
                    "version": {
                      "type": "integer"
                    },
                    "validUntil": {
                      "type": "integer"
                    },
                    "resourceUrl": {
                      "type": "string"
                    }
                  }
                },
                "signature": {
                  "type": "string"
                },
                "acceptIndex": {
                  "type": "integer"
                }
              }
            }
          }
        }
      },
      "includeTxHash": false,
      "offerValiditySeconds": 60
    },
    "eip2612GasSponsoring": {
      "info": {
        "version": "1",
        "description": "The facilitator accepts EIP-2612 gasless Permit to `Permit2` canonical contract."
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "required": [
          "from",
          "asset",
          "spender",
          "amount",
          "nonce",
          "deadline",
          "signature",
          "version"
        ],
        "properties": {
          "from": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "The address of the sender."
          },
          "asset": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "The address of the ERC-20 token contract."
          },
          "nonce": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The current nonce of the sender."
          },
          "amount": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The amount to approve (uint256). Typically MaxUint."
          },
          "spender": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "The address of the spender (Canonical Permit2)."
          },
          "version": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)*$",
            "description": "Schema version identifier."
          },
          "deadline": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The timestamp at which the signature expires."
          },
          "signature": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]+$",
            "description": "The 65-byte concatenated signature (r, s, v) as a hex string."
          }
        }
      }
    },
    "erc20ApprovalGasSponsoring": {
      "info": {
        "version": "1",
        "description": "The facilitator broadcasts a pre-signed ERC-20 approve() transaction to grant Permit2 allowance."
      },
      "schema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "required": [
          "from",
          "asset",
          "spender",
          "amount",
          "signedTransaction",
          "version"
        ],
        "properties": {
          "from": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "The address of the sender (token owner)."
          },
          "asset": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "The address of the ERC-20 token contract."
          },
          "amount": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "The amount approved (uint256). Always MaxUint256."
          },
          "spender": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$",
            "description": "The address of the spender (Canonical Permit2)."
          },
          "version": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)*$",
            "description": "Schema version identifier."
          },
          "signedTransaction": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]+$",
            "description": "The RLP-encoded signed EIP-1559 transaction as a hex string."
          }
        }
      }
    }
  },
  "x402Version": 2
}

Accepts

The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.

0.001USDC≈ $0.001 USD
on Base · exact scheme

Pay 0.001 USDC on Base to 0x4022…4f402. The signed payment is good for 1 minute.

USD Coin contract
0x8335…02913
Payment window
1 minute
As published
1000 smallest units
The catalog’s raw entry
[
  {
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "extra": {
      "name": "USD Coin",
      "version": "2",
      "decimals": 6,
      "supportsEip2612": true,
      "assetTransferMethod": "permit2"
    },
    "payTo": "0x4022de2d36c334e73c7a108805cea11c0564f402",
    "amount": "1000",
    "scheme": "exact",
    "network": "eip155:8453",
    "resource": "https://three.ws/api/x402/permit2-paid-demo",
    "maxTimeoutSeconds": 60
  }
]

Extensions

{
  "bazaar": {
    "info": {
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {}
      },
      "output": {
        "type": "json",
        "example": {
          "ok": true,
          "demo": "permit2-eip2612-gas-sponsoring",
          "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payer": "0x4022de2d36c334e73c7a108805cea11c0564f402",
          "proxy": "0x402085c248EeA27D92E8b30b2C58ed07f9E20001",
          "method": "permit2",
          "network": "eip155:8453",
          "explorer": "https://basescan.org/tx/0x9c0a7e5ad5c9c0bb6f04f6ad9c52f4f44bb6c5d9c0a7e5ad5c9c0bb6f04f6ad9",
          "settledAt": "2026-05-21T18:30:00.000Z",
          "transaction": "0x9c0a7e5ad5c9c0bb6f04f6ad9c52f4f44bb6c5d9c0a7e5ad5c9c0bb6f04f6ad9",
          "amountAtomics": "1000",
          "supportsEip2612": true
        }
      }
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "input"
      ],
      "properties": {
        "input": {
          "type": "object",
          "required": [
            "type",
            "method"
          ],
          "properties": {
            "type": {
              "type": "string",
              "const": "http"
            },
            "method": {
              "enum": [
                "GET",
                "HEAD",
                "DELETE"
              ],
              "type": "string"
            },
            "queryParams": {
              "type": "object",
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "properties": {},
              "additionalProperties": false
            }
          },
          "additionalProperties": false
        },
        "output": {
          "type": "object",
          "required": [
            "type"
          ],
          "properties": {
            "type": {
              "type": "string"
            },
            "example": {
              "type": "object",
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "required": [
                "ok",
                "demo",
                "method",
                "payer",
                "network",
                "asset",
                "amountAtomics",
                "transaction",
                "explorer",
                "settledAt",
                "proxy"
              ],
              "properties": {
                "ok": {
                  "type": "boolean",
                  "const": true
                },
                "demo": {
                  "type": "string",
                  "const": "permit2-eip2612-gas-sponsoring"
                },
                "asset": {
                  "type": "string"
                },
                "payer": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "proxy": {
                  "type": "string",
                  "description": "Canonical x402ExactPermit2Proxy address that settled the EIP-2612 permit + Permit2 transfer atomically."
                },
                "method": {
                  "type": "string",
                  "const": "permit2"
                },
                "network": {
                  "type": "string"
                },
                "explorer": {
                  "type": "string",
                  "format": "uri"
                },
                "settledAt": {
                  "type": "string",
                  "format": "date-time"
                },
                "transaction": {
                  "type": "string"
                },
                "amountAtomics": {
                  "type": "string"
                },
                "supportsEip2612": {
                  "type": "boolean"
                }
              }
            }
          }
        }
      }
    },
    "discoverable": true
  },
  "eip2612GasSponsoring": {
    "info": {
      "version": "1",
      "description": "The facilitator accepts EIP-2612 gasless Permit to `Permit2` canonical contract."
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "from",
        "asset",
        "spender",
        "amount",
        "nonce",
        "deadline",
        "signature",
        "version"
      ],
      "properties": {
        "from": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "The address of the sender."
        },
        "asset": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "The address of the ERC-20 token contract."
        },
        "nonce": {
          "type": "string",
          "pattern": "^[0-9]+$",
          "description": "The current nonce of the sender."
        },
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+$",
          "description": "The amount to approve (uint256). Typically MaxUint."
        },
        "spender": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "The address of the spender (Canonical Permit2)."
        },
        "version": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)*$",
          "description": "Schema version identifier."
        },
        "deadline": {
          "type": "string",
          "pattern": "^[0-9]+$",
          "description": "The timestamp at which the signature expires."
        },
        "signature": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]+$",
          "description": "The 65-byte concatenated signature (r, s, v) as a hex string."
        }
      }
    }
  },
  "erc20ApprovalGasSponsoring": {
    "info": {
      "version": "1",
      "description": "The facilitator broadcasts a pre-signed ERC-20 approve() transaction to grant Permit2 allowance."
    },
    "schema": {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "from",
        "asset",
        "spender",
        "amount",
        "signedTransaction",
        "version"
      ],
      "properties": {
        "from": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "The address of the sender (token owner)."
        },
        "asset": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "The address of the ERC-20 token contract."
        },
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+$",
          "description": "The amount approved (uint256). Always MaxUint256."
        },
        "spender": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]{40}$",
          "description": "The address of the spender (Canonical Permit2)."
        },
        "version": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)*$",
          "description": "Schema version identifier."
        },
        "signedTransaction": {
          "type": "string",
          "pattern": "^0x[a-fA-F0-9]+$",
          "description": "The RLP-encoded signed EIP-1559 transaction as a hex string."
        }
      }
    }
  }
}

Provenance

Seen in the source catalog
2026-07-19 14:48Z
Last indexed by Roundhouse
2026-08-26 23:10Z
Last enriched (probe, favicon, geo)
2026-09-21 06:45Z
x402 version
2
Max timeout
60s
Liveness probe
HTTP 402
Report

Hand this page to an agent

Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.

GET api.roundhouseai.io/v0/endpoints

No per-endpoint history for this service yet, so this is payments indexed to its PROVIDER's wallet over 30 days. Verified volume counts only settlements with an on-chain EIP-3009 marker.

Open skill.md
Show the prompt
Using Roundhouse, look up the x402 service three.ws Permit2 Demo and tell me whether it is
worth paying: what a call costs, whether the endpoint answered when last probed, and what
its payment record actually shows.

curl -s 'https://api.roundhouseai.io/v0/endpoints?q=three.ws%20Permit2%20Demo'
curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>'

Then call it: read the price from the live 402 at https://three.ws/api/x402/permit2-paid-demo, never from
a cached figure, and pay with an x402 client.

The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except
/v0/unified* and /v0/endpoints. Mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402,
or use an organization key from https://roundhouseai.io/dashboard/team.

If you do not have Roundhouse tools or skills installed, read
https://roundhouseai.io/skill.md first — it is the whole procedure.