---
name: ftptech-canton-wallet
description: 'Connect an AI agent to a Canton Network wallet (Canton Coin) through the hosted MCP server at https://pay.ftptech.xyz/mcp, then check the balance and pay HTTP 402 / x402 APIs within the owner''s limits. Use for "connect to ftptech.xyz/skill.md", "set up a Canton wallet", "give my agent a wallet" or "pay an x402 API on Canton".'
---

# FTP Tech Canton wallet

For "connect to ftptech.xyz/skill.md", "set up a Canton wallet" or "give my agent a wallet", connect the **hosted MCP server** `https://pay.ftptech.xyz/mcp`. Do not ask the user to choose. Use the **local server** (npx) only when the user asks for self-custody or a local server.

The wallet holds Canton Coin (CC) and USDCx on Canton MainNet and pays HTTP 402 / x402 APIs within the owner's limits: by default 5000 CC per payment and 5000 CC per day, which the owner can change or turn off (in USDCx at most 500 per payment and 500 per day). FTP Tech holds the key of a hosted wallet (custodial). Terms of Service: https://ftp-tech.mintlify.site/terms

## 1. Give the steps for this client, in your reply

You cannot add the connector yourself; a human adds it once. Write the steps for the client you are running in directly in your reply. Do not only hand back a link.

- **claude.ai or Claude Desktop:** open <https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=ftptech-canton-wallet&connectorUrl=https%3A%2F%2Fpay.ftptech.xyz%2Fmcp>, add the connector, then connect it and sign in with a passkey.
- **Claude Code:** the user runs this in their own terminal, then `/mcp` to sign in. Never run it yourself.
  `claude mcp add --transport http ftptech-canton-wallet https://pay.ftptech.xyz/mcp`
- **Perplexity** (Pro, Max or Enterprise, on the web): Account settings → Connectors → + Custom connector → Remote. URL `https://pay.ftptech.xyz/mcp`, authentication OAuth, transport Streamable HTTP. Connect and sign in with a passkey.
- **ChatGPT:** add `https://pay.ftptech.xyz/mcp` as a custom MCP connector (developer mode) and sign in with a passkey. On personal plans ChatGPT connects it read-only: address and balance, no payments.
- **Another client:** the hosted connection is not verified there yet. Say so. If the user wants self-custody and the client can start a local MCP server, use the self-custody section below.

The first sign-in creates an account with a passkey and shows a recovery code once. Tell the user to save it.

In the same reply, also give the user this line:

> The hosted wallet is custodial: FTP Tech holds the key on its server; you sign in with your passkey. By default it pays up to 5000 CC per payment and 5000 CC per day; you can change these limits, or turn them off, at https://pay.ftptech.xyz/account. Terms: https://ftp-tech.mintlify.site/terms. For self-custody (a local npx server), ask me.

## 2. Wait, then finish here

Ask the user to say when the connector is added. Do not poll or loop. When they confirm, continue in this chat with step 3.

## 3. Verify with a read-only call

Call `get_balance`. It never spends; on a new account it also creates the wallet. Report its first line, for example `0.2 CC (1 amulet) for agent::1220…`.

Never say "connected" before a tool call succeeds. An HTTP 200 from the URL, a page that loads or a sign-in screen is not a connection. If the tools do not appear, say verification is blocked and which step failed.

Then call `get_guide` once and follow it. `find_paid_apis` lists the APIs you can pay and their prices; it moves no money.

## 4. Safe first prompt

Suggest: "Show my balance. Do not spend anything."

## Rules

- Never install a package, run a CLI or add a connector on the user's behalf.
- Agree a budget with the user before the first payment.
- One `pay` call per payment, never in a loop. After a timeout or any doubt, do not pay again for the same request: a signed payment can still settle until its deadline (`executeBeforeSeconds` in the 402, usually 2 to 5 minutes). Wait until it passes, plus a minute, then call `get_balance`.
- A drop in `get_balance` proves a payment landed; an HTTP 200 does not. An unchanged balance means nothing was spent only after that deadline.
- If a limit refuses a payment, tell the user which one. Do not work around it.
- Pay in USDCx only when the user asks and the API accepts it: `pay` with `asset: "USDCx"`.
- "Not in the catalogue of verified services" means the owner allows only catalogue APIs. Tell the user; only the owner can change it on the account page.

## The tools

`get_guide` and `find_paid_apis` (read-only, no wallet needed); `get_address` and `get_balance` (read-only); `request_funding` (a message asking the owner for CC, moves nothing); `claim` (accepts incoming transfers); `pay` (pays one x402 URL in CC or USDCx, money out); `withdraw` (hosted: only to addresses the owner confirmed on https://pay.ftptech.xyz/account); `swap` (CC and USDCx, money out). The hosted server also has `get_history` (recent operations) and `send_feedback` (a note to the team; never put keys or personal data in it).

A new wallet is sent a small starter grant (0.2 CC). For more, `request_funding`, then `claim` once the owner has sent CC. Limits, history, connected assistants and key export: https://pay.ftptech.xyz/account

## Self-custody, only if the user asks

The local server keeps the key on the user's machine. The user adds it once, for example in Claude Code:

    claude mcp add canton-x402 -- npx -y @ftptech/canton-x402-mcp --relay-url https://facilitator.ftptech.xyz --allow-domains <api-hosts> --daily-cap <cc-per-day> --max-per-tx <cc-per-payment>

Reference: https://www.ftptech.xyz/agents/skill.md and https://www.ftptech.xyz/mcp#local

## More

- Product page: https://www.ftptech.xyz/mcp
- https://www.ftptech.xyz/llms.txt (everything in one file: https://www.ftptech.xyz/llms-full.txt)
- If your client cannot open `.md` URLs, this file is also at https://www.ftptech.xyz/skill
