Binance P2P trading assistant for natural-language queries about P2P/C2C market ads and (optionally) the user’s own P2P order history. Use when the user asks about P2P prices, searching/choosing ads, comparing payment methods, or reviewing their P2P order history (requires API key). Do NOT use for spot/futures prices, exchange trading, deposits/withdrawals, on-chain transfers, or anything unrelated to P2P/C2C.
Help users interact with Binance P2P (C2C) via natural-language queries.
fiat (e.g., CNY)asset (e.g., USDT)tradeType mapping (avoid ambiguity)tradeType=BUYtradeType=SELLAlways reflect this mapping in responses when the user’s wording is ambiguous.
BINANCE_API_KEY (sent as header)BINANCE_SECRET_KEY (used for signing)abc12...z789***...c123.env if the user explicitly agrees..env is in .gitignore before saving.Example:
# ✅ Correct for SAPI: keep insertion order
params = {"page": 1, "rows": 20, "timestamp": 1710460800000}
query_string = urlencode(params) # NO sorting
# ❌ Wrong (standard Binance API only): sorted
query_string = urlencode(sorted(params.items()))
See: references/authentication.md for:
Base URL: https://www.binance.com
| Endpoint | Method | Params | Usage |
|---|---|---|---|
/bapi/c2c/v1/public/c2c/agent/quote-price | GET | fiat, asset, tradeType | Quick price quote |
/bapi/c2c/v1/public/c2c/agent/ad-list | GET | fiat, asset, tradeType, limit, order, tradeMethodIdentifiers | Search ads |
/bapi/c2c/v1/public/c2c/agent/trade-methods | GET | fiat | Payment methods |
Parameter notes:
tradeType: BUY or SELL (treat as case-insensitive)limit: 1–20 (default 10)tradeMethodIdentifiers: pass as a plain string (not JSON array) — e.g. tradeMethodIdentifiers=BANK or tradeMethodIdentifiers=WECHAT. Values must use the identifier field returned by the trade-methods endpoint (see workflow below). ⚠️ Do NOT use JSON array syntax like ["BANK"] — it will return empty results.When the user wants to compare prices across payment methods (e.g., "Alipay vs WeChat"), follow this two-step flow:
Step 1 — Call trade-methods to get the correct identifiers for the target fiat:
GET /bapi/c2c/v1/public/c2c/agent/trade-methods?fiat=CNY
→ [{"identifier":"ALIPAY",...}, {"identifier":"WECHAT",...}, {"identifier":"BANK",...}]
Step 2 — Pass the identifier as a plain string into ad-list via tradeMethodIdentifiers, one payment method per request, then compare:
GET /bapi/c2c/v1/public/c2c/agent/ad-list?fiat=CNY&asset=USDT&tradeType=BUY&limit=5&tradeMethodIdentifiers=ALIPAY&tradeMethodIdentifiers=WECHAT
Compare the best price from each result set.
Important: Do not hardcode identifier values like
"Alipay"or"BANK". Always calltrade-methodsfirst to get the exactidentifierstrings for the given fiat currency.
Base URL: https://api.binance.com
| Endpoint | Method | Auth | Usage |
|---|---|---|---|
/sapi/v1/c2c/orderMatch/listUserOrderHistory | GET | Yes | Order history |
/sapi/v1/c2c/orderMatch/getUserOrderSummary | GET | Yes | User statistics |
Authentication requirements:
X-MBX-APIKEYtimestamp + signatureUser-Agent: binance-wallet/1.0.0 (Skill)Example:
USDT/CNY (P2P)
- Buy USDT (you buy crypto): ¥7.20
- Sell USDT (you sell crypto): ¥7.18
Return Top N items with a stable schema:
Avoid generating parameterized external URLs unless the API returns them.
Placing orders (when user requests):
This skill does NOT support automated order placement.
When user wants to place an order, provide a direct link to the specific ad using the adNo:
https://c2c.binance.com/en/adv?code={adNo}
{adNo}: the ad number/identifier from the ad list resultExample: https://c2c.binance.com/en/adv?code=123
This opens the specific ad detail page where user can place order directly with the selected advertisement.
YYYY-MM-DD HH:mm (UTC+0) — always display in UTC timezoneTime field conversion (for createTime in listUserOrderHistory):
createTime field returns a Unix timestamp in milliseconds (13 digits).# Python example
from datetime import datetime, timezone
readable_time = datetime.fromtimestamp(createTime / 1000, tz=timezone.utc).strftime('%Y-%m-%d %H:%M (UTC+0)')
# JavaScript example
const readableTime = new Date(createTime).toISOString().replace('T', ' ').slice(0, 16) + ' (UTC+0)';
// Or more explicitly:
const date = new Date(createTime);
const readableTime = date.getUTCFullYear() + '-' +
String(date.getUTCMonth() + 1).padStart(2, '0') + '-' +
String(date.getUTCDate()).padStart(2, '0') + ' ' +
String(date.getUTCHours()).padStart(2, '0') + ':' +
String(date.getUTCMinutes()).padStart(2, '0') + ' (UTC+0)';
.env / API Management.This skill does NOT:
For in-app actions, guide users to the official P2P orders page (only as a general entry point).
On the first invocation of this skill per conversation, call:
GET /bapi/c2c/v1/public/c2c/agent/check-version?version=1.0.1 (Base: https://www.binance.com)Behavior:
needUpdate=true: show: New version of P2P Skill is available (current: {clientVersion}, latest: {latestVersion}), update recommended.