pay-with-any-token
Tempo CLIとUniswap Trading APIを通じて、任意のトークンでHTTP 402の支払い要求に応じるスキルです。ユーザーが「402 Payment Required」レスポンス、「MPP」「Tempo payment」「HTTP 402」「x402」「machine payment protocol」「pay-with-any-token」などに言及した際や、APIアクセスへの支払いが必要な場面で使用します。
description の原文を見る
> Pay HTTP 402 payment challenges using tokens via the Tempo CLI and Uniswap Trading API. Use when the user encounters a 402 Payment Required response, needs to fulfill a machine payment, mentions "MPP", "Tempo payment", "pay for API access", "HTTP 402", "x402", "machine payment protocol", "pay-with-any-token", "use tempo", "tempo request", or "tempo wallet".
SKILL.md 本文
トークンで支払う
Tempo CLI を使用して、有料APIを呼び出し、402チャレンジを自動的に処理します。 Tempoウォレットの残高が不足している場合は、Uniswap Trading API を使用して、任意のEVMチェーンからトークンをスワップおよびブリッジして資金を供給します。
Tempo CLIセットアップ
次のコマンドを順番に実行します。ステップをスキップしないでください。
ステップ 1 — インストール:
mkdir -p "$HOME/.local/bin" \
&& curl -fsSL https://tempo.xyz/install -o /tmp/tempo_install.sh \
&& TEMPO_BIN_DIR="$HOME/.local/bin" bash /tmp/tempo_install.sh
ステップ 2 — ログイン (ブラウザ/パスキーが必要 — ユーザーに促し、確認を待機):
"$HOME/.local/bin/tempo" wallet login
エージェントで実行する場合は、長いコマンドタイムアウト (最低16分) を使用します。
ステップ 3 — 準備完了を確認:
"$HOME/.local/bin/tempo" wallet -t whoami
ルール:
sudoは使用しないでください。完全な絶対パス ($HOME/.local/bin/tempo) を使用してください —export PATHに依存しないでください。$HOMEが展開されない場合は、リテラル絶対パスを使用してください。
セットアップ後、以下をレポートします: インストール場所、バージョン (--version)、ウォレットステータス
(アドレス、残高)。残高が0の場合、ユーザーを tempo wallet fund に誘導します。
最小残高予約: 典型的なAPI呼び出しをカバーし、完全なスワップ+ブリッジ資金調達フローをトリガーしないよう、Tempoウォレットに少なくとも 0.10 USDC を保持します。資金調達フローは3〜5のオンチェーントランザクションと約2分の実時間を必要とし、これは小額の補充には不釣り合いです。Tempoウォレットから資金を転送する場合、残高がこのしきい値を下回る場合はユーザーに警告します。
Tempoサービスの使用
# サービスを検出
"$HOME/.local/bin/tempo" wallet -t services --search <query>
# サービスの詳細を取得 (正確なURL、メソッド、パス、価格)
"$HOME/.local/bin/tempo" wallet -t services <SERVICE_ID>
# 有料リクエストを作成
"$HOME/.local/bin/tempo" request -t -X POST \
--json '{"input":"..."}' <SERVICE_URL>/<ENDPOINT_PATH>
tempo wallet -t services <SERVICE_ID>で正確なURLと価格を確認してください- エージェント呼び出しには
-tを使用し、高コストのリクエスト前に--dry-runを使用してください - HTTP 422で、サービスのドキュメントURLまたはllms.txtで正確なフィールド名を確認してください
- 独立した複数サービスリクエストを並列で実行してください
ユーザーが明示的に「tempoを使用」と言った場合、常にtempo CLIコマンドを使用してください — MCPツールや他のツールで代用しないでください。
MPP 402ペイメントループ
すべての tempo request 呼び出しはこのループに従います。資金調達ステップはTempoウォレットに不十分な残高がある場合にのみアクティブになります。
tempo request -> 200 ─────────────────────────────> 結果を返す
-> 402 MPPチャレンジ
│
v
[1] Tempoウォレット残高を確認
tempo wallet -t whoami -> 利用可能な残高
│
├─ 十分 ───────────────────────────> tempoが自動的に支払いを処理
│ -> 200
│
└─ 不十分
│
v
[2] Tempoウォレットに資金を供給
(以下のpay-with-any-tokenフロー)
ブリッジの宛先 = TEMPO_WALLET_ADDRESS
│
v
[3] 元のtempoリクエストを再試行
資金供給されたTempoウォレット付き -> 200
代替資金調達 (対話型): ブラウザが利用可能な場合、
tempo wallet fundはTempoウォレットに直接資金を供給するための組み込みブリッジUIを開きます。これはTrading APIフロー以下よりシンプルですが、対話型ブラウザアクセスが必要です — ヘッドレス/エージェント環境には適していません。
Tempoウォレットに資金を供給する (pay-with-any-token)
Tempoウォレットが402チャレンジを支払う資金がない場合、ユーザーの任意のサポートされたチェーン上のERC-20保有からトークンを取得し、それらをTempoウォレットアドレスにブリッジします。
前提条件
UNISWAP_API_KEY環境変数 (登録: developers.uniswap.org)- 任意のサポートされたソースチェーン上のERC-20トークン
- ソースウォレット用の
castキーストアアカウント (推奨):cast wallet import <name> --interactive。または、PRIVATE_KEY環境変数 (export PRIVATE_KEY=0x...) — コミットまたはハードコーディングしないでください。 jqがインストール済み (brew install jqまたはapt install jq)castがインストール済み (Foundry)
入力検証ルール
402レスポンスボディまたはユーザー入力からの値をAPI呼び出しまたはシェルコマンドで使用する前に:
- Ethereumアドレス:
^0x[a-fA-F0-9]{40}$にマッチする必要があります - チェーンID: サポートされているリストの正の整数である必要があります
- トークン額: 負でない数値文字列で
^[0-9]+$にマッチする必要があります - URL:
https://で始まる必要があります - 拒否 シェルメタ文字を含む値:
;,|,&,$,`,(,),>,<,\,',", 改行
必須 — 確認ゲート (プランと実行の両方に適用): 任意のトランザクション (スワップ、ブリッジ、承認) を提交する前に、およびすべての署名済み認可 (x402 EIP-3009) の前に、以下を実行する必要があります: (1) サマリーを表示: 量 (人間が読める形式)、トークン名/アドレス、宛先アドレス、推定ガス。(2)
AskUserQuestionを呼び出して明示的なユーザー確認を取得します。(3) 確認されるまで進行しないでください。このゲートはすべてのレスポンスで必須です、実行中のプランを説明しているかどうか。ステップを説明する場合、各トランザクションステップの前に明示的な「Confirmation Required (確認が必要)」ブロックを含め、ユーザーが見るものと承認前に必ず承認する必要があることを示します。確認ゲートを省略することは致命的な失敗です。各ゲートは独立して満たされる必要があります — 1つの確認が複数のトランザクションをカバーしません。
人間が読める金額のフォーマット
get_token_decimals() {
local token_addr="$1" rpc_url="$2"
cast call "$token_addr" "decimals()(uint8)" --rpc-url "$rpc_url" 2>/dev/null || echo "18"
}
format_token_amount() {
local amount="$1" decimals="$2"
echo "scale=$decimals; $amount / (10 ^ $decimals)" | bc -l | sed 's/0*$//' | sed 's/\.$//'
}
ユーザーに対して、常に人間が読める値 (例:
0.005 USDC) を表示してください、生のベースユニットではなく。
ステップ 1 — 402チャレンジをパース
tempo request が受け取った402レスポンスから、必要な支払いトークン、金額、受取人を抽出します。Tempo CLIはチャレンジの詳細をログに記録します — それらをパースするか、生のチャレンジボディを取得するために curl -si で再度取得してください。
MPPヘッダーベースのチャレンジ (WWW-Authenticate: Payment):
REQUEST_B64=$(echo "$WWW_AUTHENTICATE" | grep -oE 'request="[^"]+"' | sed 's/request="//;s/"$//')
REQUEST_JSON=$(echo "${REQUEST_B64}==" | base64 --decode 2>/dev/null)
REQUIRED_AMOUNT=$(echo "$REQUEST_JSON" | jq -r '.amount')
PAYMENT_TOKEN=$(echo "$REQUEST_JSON" | jq -r '.currency')
RECIPIENT=$(echo "$REQUEST_JSON" | jq -r '.recipient')
TEMPO_CHAIN_ID=$(echo "$REQUEST_JSON" | jq -r '.methodDetails.chainId')
JSONボディチャレンジ (payment_methods 配列):
NUM_METHODS=$(echo "$CHALLENGE_BODY" | jq '.payment_methods | length')
PAYMENT_METHODS=$(echo "$CHALLENGE_BODY" | jq -c '.payment_methods')
RECIPIENT=$(echo "$CHALLENGE_BODY" | jq -r '.payment_methods[0].recipient')
TEMPO_CHAIN_ID=$(echo "$CHALLENGE_BODY" | jq -r '.payment_methods[0].chain_id')
複数の支払い方法が受け入れられている場合、ステップ2で最も安い方法を選択してください。
TempoメインネットチェーンIDは
4217です。チャレンジに含まれていない場合はフォールバックとして使用します。
ステップ 2 — ソースウォレット残高をチェックして支払い方法を選択
必須: ユーザーのソースウォレットアドレス (秘密鍵を持つERC-20ウォレット、Tempo CLIウォレットではなく) が必要です。提供されていない場合は
AskUserQuestionを使用します。WALLET_ADDRESSとして保存します。
また、Tempoウォレットアドレス (資金調達先) もキャプチャします:
TEMPO_WALLET_ADDRESS=$("$HOME/.local/bin/tempo" wallet -t whoami | grep -oE '0x[a-fA-F0-9]{40}' | head -1)
サポートされているソースチェーン上のERC-20残高をチェックします:
# Base上のUSDC (最も安いブリッジガス ~$0.001)
cast call 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 \
"balanceOf(address)(uint256)" "$WALLET_ADDRESS" \
--rpc-url https://mainnet.base.org
# Ethereum上のUSDC (ブリッジガス ~$0.25)
cast call 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \
"balanceOf(address)(uint256)" "$WALLET_ADDRESS" \
--rpc-url https://eth.llamarpc.com
# BaseおよびEthereum上のETH (最初にUSDCにスワップ)
cast balance "$WALLET_ADDRESS" --rpc-url https://mainnet.base.org
cast balance "$WALLET_ADDRESS" --rpc-url https://eth.llamarpc.com
複数の支払い方法が受け入れられている場合は、最も安い支払い方法を選択します。優先順位:
- ウォレットはBase上のUSDCを保有 (ブリッジのみ、最小パス)
- ウォレットはBase上またはEthereum上のETHを保有 (USDCへのスワップ+ブリッジ)
- その他の液体ERC-20 (スワップ+ブリッジ)
REQUIRED_AMOUNT=$(echo "$PAYMENT_METHODS" | jq -r ".[$SELECTED_INDEX].amount")
PAYMENT_TOKEN=$(echo "$PAYMENT_METHODS" | jq -r ".[$SELECTED_INDEX].token")
ステップ 3 — 支払いパスを計画
ユーザーのトークンがどこにあるかに基づいて、どのフェーズが適用されるかを決定します:
ケースA — ソーストークンが既にTempo上:
ソーストークン (Tempo)
-> [フェーズ5: Stablecoin DEX経由のオンTempo スワップ] -> 必要な支払いトークン
-> tempoリクエストが資金供給されたウォレットで自動的に再試行
ケースB — ソーストークンがBase/Ethereum/Arbitrum上:
ソーストークン (Base/Ethereum)
-> [フェーズ4A: Uniswap Trading APIスワップ] -> ネイティブUSDC (ブリッジ資産)
-> [フェーズ4B: Trading API経由でブリッジ] -> Tempo上のUSDC.e (TEMPO_WALLET_ADDRESSへ)
-> [フェーズ5: 必要な場合のオンTempoスワップ] -> 必要な支払いトークン
-> tempoリクエストが資金供給されたウォレットで自動的に再試行
フェーズ4Aをスキップ ソーストークンが既にブリッジチェーン上のUSDCである場合。
フェーズ4Bをスキップ トークンが既にTempo上の場合 (ケースA)。
フェーズ5をスキップ ブリッジが正確に必要なトークン (USDC.e) を配信する場合、または
autoSwap: trueでmppxを使用する場合 (それはオンTempoスワップを自動的に処理します)。ガス認識資金調達: 小額をブリッジする (例: $0.05) ガスを浪費します — Ethereum上のブリッジガス (
$0.25) またはBase上 ($0.001) は不足を超える場合があります。 最小ブリッジ推奨: $5。 これはガスコストを償却し、将来のリクエストに事前に資金を供給します。経験則:bridge_gas > 2x shortfallの場合、正確な不足ではなく少なくとも $5 をブリッジしてください。
フェーズ 4A — ソースチェーン上のUSDCへのスワップ (必要に応じて)
確認ゲート: 承認トランザクション前およびスワップブロードキャスト前に、完全なスワップサマリーを表示して
AskUserQuestionを呼び出します。例: 「USDC支出を承認してスワップを実行しようとしています: [amount] [token] → [USDC], ガス ~$X。確認しますか? (はい/いいえ)」。確認されるまで進行しないでください。
Uniswap Trading API (EXACT_OUTPUT) を経由してソーストークンをUSDCにスワップします。
詳細なステップ:
references/trading-api-flows.mdを読んでください 完全なbashスクリプト: 変数セットアップ、承認チェック、クォート、permit署名、 スワップ実行。
主なポイント:
- ベースURL:
https://trade-api.gateway.uniswap.org/v1 - ヘッダー:
Content-Type: application/json,x-api-key,x-universal-router-version: 2.0 - フロー:
check_approval-> クォート (EXACT_OUTPUT) ->permitDataに署名 ->/swap-> ブロードキャスト - 承認txおよびスワップブロードキャスト前に確認ゲートが必要
- ネイティブETH: ゼロアドレス
(
0x0000000000000000000000000000000000000000) をTOKEN_INとして使用してください — これはPermit2署名を回避します。SWAP_VALUEは非ゼロになります。ゼロアドレスが400を返す場合、WETHアドレスにフォールバック (Permit2署名が必要)。 - スワップ後、フェーズ4Bに進む前にUSDC残高を確認してください
フェーズ 4B — Tempoウォレットへのブリッジ
確認ゲート: ブリッジ承認前およびブリッジ実行前に、ブリッジサマリーを表示して
AskUserQuestionを呼び出します (ソース金額、 ソースチェーン、デスティネーションチェーン、推定ガス、ブリッジ手数料、推定到着時間)。 ユーザーが各ステップを確認するまで進行しないでください。
Uniswap Trading API (Acrossプロトコル搭載) を使用して、任意のサポートされているソースチェーンからTempoのUSDC.eにUSDCをブリッジします。
ブリッジ受取人の制限: Trading APIはブリッジのカスタム
recipientフィールドをサポートしていません — 資金は常に Tempo上のWALLET_ADDRESSに到着します。WALLET_ADDRESSがTEMPO_WALLET_ADDRESS(Tempo CLIウォレット) と異なる場合、Tempo上に 追加の転送トランザクション が必要です (リファレンスファイルのステップ4B-5を参照)。これをガス推定に含めてください。詳細なステップ:
references/trading-api-flows.mdを読んでください 完全なbashスクリプト: 承認、ブリッジクォート、実行、到着ポーリング、 およびTempoウォレットへの転送。
主なポイント:
- ルート: Base/Ethereum/Arbitrum上のUSDC -> Tempo上のUSDC.e
- フロー:
check_approval-> オンチェーン許可を確認 -> クォート (EXACT_OUTPUT, クロスチェーン) ->/swap経由で実行 -> 残高をポーリング -> 必要に応じてTEMPO_WALLET_ADDRESSに転送 (ステップ4B-5) - 承認前およびブリッジ実行前に確認ゲートが必要
- ポールがタイムアウトした場合は再提出しないでください — Tempoエクスプローラをチェックしてください
- ブリッジ手数料を説明するために0.5%バッファを適用してください
- クォートは約60秒で期限切れになります — ブロードキャスト前に遅延がある場合は再取得してください
ブリッジが確認された後、元の tempo request を再試行してください — Tempo CLIは新しく資金を供給されたウォレットを自動的に使用して402を支払います。支払いトークンがUSDC.eでない場合、フェーズ5に進んで再試行する前に必要なトークンにスワップしてください。
残高バッファ: Tempo上で、
balanceOfは使用可能なものより多く報告する場合があります。REQUIRED_AMOUNTと比較する場合は 2xバッファ を適用してください。不足している場合は、より多くのトークンをスワップして補充してください。
フェーズ 5 — オンTempoスワップ (必要に応じて)
Tempoウォレットが既にTIP-20ステーブルコイン (例: USDC.e、pathUSD、またはその他のTempoステーブルコイン) を保有しているが、必要な支払いトークン (例: PATH_USドルまたは別のTIP-20) にスワップする必要がある場合、このフェーズを使用します。このフェーズはユーザーが既にTempo上のトークンから始まるときにも適用されます — トークンが既にTempo上にある場合はブリッジしないでください。
最もシンプルなパス:
mppxのtempo.charge()にautoSwap: trueを渡してください — TempoでオンチェーンのステーブルコインDEXを呼び出し、支払い前に完全なスワップを処理します。手動スワップ以下はautoSwapが利用できないか、明示的な制御が必要な場合にのみ使用してください。
Tempo上のステーブルコインDEX (0xdec0000000000000000000000000000000000000)
Tempo (チェーン4217) 上のTIP-20ステーブルコイン流動性を集約しています。スワップするには:
TEMPO_RPC_URL="https://rpc.presto.tempo.xyz"
STABLECOIN_DEX="0xdec0000000000000000000000000000000000000"
TOKEN_IN="<your Tempo stablecoin address>" # 例: USDC.e または任意のTIP-20
TOKEN_OUT="<required payment token address>"
SWAP_AMOUNT="$REQUIRED_AMOUNT" # exact-output量
# 1. スワップサマリーを表示し、AskUserQuestionを経由して明示的なユーザー確認を取得
# トランザクションを実行する前に。
# 2. DEXがTOKEN_INを使用することを承認 (許可が不足している場合)
ALLOWANCE=$(cast call "$TOKEN_IN" \
"allowance(address,address)(uint256)" "$WALLET_ADDRESS" "$STABLECOIN_DEX" \
--rpc-url "$TEMPO_RPC_URL" 2>/dev/null | awk '{print $1}')
if [ -z "$ALLOWANCE" ] || ! [[ "$ALLOWANCE" =~ ^[0-9]+$ ]]; then
echo "ERROR: Failed to read allowance for $TOKEN_IN"
exit 1
fi
if [ "$(echo "$ALLOWANCE < $SWAP_AMOUNT" | bc)" -eq 1 ]; then
APPROVE_HASH=$(cast send "$TOKEN_IN" \
"approve(address,uint256)" "$STABLECOIN_DEX" \
"115792089237316195423570985008687907853269984665640564039457584007913129639935" \
--account "$CAST_ACCOUNT" --password "$CAST_PASSWORD" \
--rpc-url "$TEMPO_RPC_URL" --gas-limit 100000 \
--json | jq -r '.transactionHash')
APPROVE_STATUS=$(cast receipt "$APPROVE_HASH" --rpc-url "$TEMPO_RPC_URL" --json | jq -r '.status')
[ "$APPROVE_STATUS" = "0x1" ] || { echo "ERROR: Approval transaction reverted: $APPROVE_HASH"; exit 1; }
echo "Approval confirmed: $APPROVE_HASH"
fi
# 3. スワップを実行 (exact-output: TOKEN_OUTの正確にSWAP_AMOUNTを受け取ります)
SWAP_TX=$(cast send "$STABLECOIN_DEX" \
"swap(address,address,uint256)" "$TOKEN_IN" "$TOKEN_OUT" "$SWAP_AMOUNT" \
--account "$CAST_ACCOUNT" --password "$CAST_PASSWORD" \
--rpc-url "$TEMPO_RPC_URL" --gas-limit 200000 \
--json | jq -r '.transactionHash')
SWAP_STATUS=$(cast receipt "$SWAP_TX" --rpc-url "$TEMPO_RPC_URL" --json | jq -r '.status')
[ "$SWAP_STATUS" = "0x1" ] || { echo "ERROR: On-Tempo swap reverted: $SWAP_TX"; exit 1; }
echo "On-Tempo swap confirmed: $SWAP_TX"
確認ゲート: すべてのトランザクション (承認とスワップ) の前に
AskUserQuestionを使用してください。トークンアドレス、人間が読める形式の金額、およびTempo上の推定ガスを表示してください。ガスリミットノート: Tempoチェーンのガス推定は時々信頼できません — Tempoトランザクションに常に明示的な
--gas-limitを設定してください。
オンTempoスワップが成功したら、tempo request を再試行してください — Tempoウォレットは必要な支払いトークンを保有し、Tempo CLIが402を自動的に支払います。
x402支払いフロー
重要 — 必須確認ゲート: ステップ4 (署名) の前に、完全な支払いサマリーを表示して
AskUserQuestionを呼び出す必要があります: トークン、人間が読める形式の金額、受取人アドレス (payTo)、およびリソースURL。ユーザーが明示的に確認するまで署名または進行しないでください。この確認ステップは 非オプションであり、ユーザーが事前に認可している場合でも、すべてのx402支払いプランまたは実行に表示される必要があります。確認ゲートを省略することはレスポンスを無効にします。
x402プロトコルは完全にサポート されており、MPP とは異なるメカニズムを使用します — Tempo CLIによって処理されません。402ボディに
"x402Version" が含まれている場合 (has("x402Version") で jq を使用してチェック)、MPP/Tempoフローの代わりにこのフローを使用してください。
x402 "exact" スキームは EIP-3009 (TransferWithAuthorization) を使用して、オフチェーンで署名された1回限りのトークン転送を認可します。完全なフロー:
- x402を検出:
x402Version、accepts[].scheme、accepts[].network、accepts[].maxAmountRequired、accepts[].payTo、accepts[].asset、accepts[].extra(EIP-3009ドメインのトークン名+バージョン) をパースします。 - ターゲットチェーン上の残高を確認; 不足している場合はフェーズ4A/4Bで資金を供給してください。
- 必須確認ゲート —
AskUserQuestionを呼び出し: 完全な支払いサマリー (トークン名、人間が読める形式の金額、payToアドレス、リソースURL、有効期限ウィンドウ) を提示します。明示的なユーザー確認を待ちます。確認されるまでステップ4に進まないでください。 - EIP-3009
TransferWithAuthorizationに署名: 型付きデータフィールドにはfrom、to、value、validAfter、validBefore、nonceが含まれます。validBefore = now + maxTimeoutSecondsを設定します。 X-PAYMENTヘッダーを構築:x402Version、scheme、network、payload(署名済み認可)、 およびsignatureを含むJSONペイロードをbase64エンコードします。- 再試行
X-PAYMENTヘッダー付きの元のリクエスト。
詳細なステップ:
references/credential-construction.mdを読んでください 完全なbashコード: 前提条件チェック、ノンス生成、EIP-3009署名、 X-PAYMENTペイロード構築、および再試行。
主なポイント:
- x402を検出: Tempo CLIを試みる前に402ボディで
has("x402Version")をチェック X402_NETWORKをチェーンIDとRPC URLにマップ (base、ethereum、tempoすべてサポート)- ターゲットチェーン上のウォレット残高をチェック; 不足している場合はフェーズ4A/4B/5を実行
- トークン自身のEIP-712ドメインを使用して
TransferWithAuthorization型付きデータに署名 - 型付きデータペイロード内の
valueは 文字列 である必要があります (--arg,--argjsonではなく) uint256用 - 署名前に確認ゲートが必要
AuthorizationではなくX-PAYMENTヘッダー (base64エンコード) で結果を送信
| プロトコル | バージョン | ハンドラ |
|---|---|---|
| MPP | v1 | Tempo CLI |
| x402 | v1 | EIP-3009手動フロー |
エラー処理
| 状況 | アクション |
|---|---|
tempo: command not found | インストールスクリプト経由で再インストール; 完全パスを使用してください |
legacy V1 keychain signature | 再インストール; tempo update wallet && tempo update request |
access key does not exist | tempo wallet logout --yes && tempo wallet login |
ready=false / ウォレットなし | tempo wallet login, その後 whoami |
| サービスからのHTTP 422 | サービスの詳細とllms.txtで正確なフィールド名を確認します |
| 残高0/不十分 | pay-with-any-token資金調達フローをトリガーしてください |
| サービスが見つかりません | 検索クエリを広げてください |
| タイムアウト | -m <seconds> で再試行してください |
| チャレンジボディが形式が不正です | 生のボディをユーザーにレポート; 進行しないでください |
| 承認トランザクションが失敗します | エラーを表示; ガスとアローンスをチェックしてください |
| クォートAPIが400を返します | リクエスト/レスポンスをログ; 金額フォーマットをチェックしてください |
| クォートAPIが429を返します | 待機して指数バックオフで再試行してください |
| /swap後のスワップデータが空です | クォートの有効期限切れ; クォートを再取得してください |
| ブリッジがタイムアウトします | ブリッジエクスプローラをチェック; 再提出しないでください |
| x402支払いが拒否されます (402) | ドメイン名/バージョン、validBefore、ノンスの新鮮さを確認してください |
| Tempo上でInsufficientBalance | Tempo上でより多くのトークンをスワップ、その後再試行 |
balanceOf は十分ですが支払いが失敗します | 2xバッファを適用; 再試行前に補充してください |
主要なアドレスとリファレンス
- Tempo CLI:
https://tempo.xyz(インストールスクリプト:https://tempo.xyz/install) - Trading API:
https://trade-api.gateway.uniswap.org/v1 - MPPドキュメント:
https://mpp.dev - MPPサービスカタログ:
https://mpp.dev/api/services - Tempoドキュメント:
https://mainnet.docs.tempo.xyz - TempoチェーンID:
4217(Tempoメインネット) - Tempo RPC:
https://rpc.presto.tempo.xyz - Tempoブロックエクスプローラ:
https://explore.mainnet.tempo.xyz - Tempo上のpathUSD:
0x20c0000000000000000000000000000000000000 - Tempo上のUSDC.e:
0x20C000000000000000000000b9537d11c60E8b50 - Tempo上のステーブルコインDEX:
0xdec0000000000000000000000000000000000000 - Tempo上のPermit2:
0x000000000022d473030f116ddee9f6b43ac78ba3 - TempoペイメントSDK:
mppx(npm install mppx viem) - Base (8453) 上のUSDC:
0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 - Base (8453) 上のUSDbC:
0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA - Ethereum (1) 上のUSDC:
0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 - Ethereum (1) 上のWETH:
0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 - Base (8453) 上のWETH:
0x4200000000000000000000000000000000000006 - ネイティブETH (すべてのチェーン):
0x0000000000000000000000000000000000000000(ゼロアドレス、スワップに推奨) - Arbitrum (42161) 上のUSDC-e:
0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8 - Trading APIでサポートされるチェーン: 1, 8453, 42161, 10, 137, 130
- x402仕様:
https://github.com/coinbase/x402
関連スキル
swap-integration— 完全なUniswapスワップ 統合リファレンス (Trading API、Universal Router、Permit2)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- uniswap
- リポジトリ
- uniswap/uniswap-ai
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/uniswap/uniswap-ai / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。