mcpField
B
Bankr Dev - Sign & Submit API

Bankr Dev - Sign & Submit API

github.com/bankrbot開発88321 回インストール32 週間前に更新
リポジトリ

Bankr Dev - Sign & Submit API について

Bankr Dev - Sign & Submit API は、Bankr の同期署名・トランザクション送信エンドポイントを説明する開発者向けスキルです。署名形式、取引フィールド、応答ステータス、直接送信時の注意点を扱います。

主な機能

  1. 01メッセージと型付きデータの署名
  2. 02後でブロードキャストする取引への署名
  3. 03未加工トランザクションの送信
  4. 04オンチェーン確認の待機
  5. 05エンドポイントエラーへの対応

活用シーン

  1. 01認証用メッセージへの署名
  2. 02EIP-712 の許可や注文への署名
  3. 03構造化フィールドによる取引送信
  4. 04承認とスワップの順次実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bankrbot/claude-plugins --skill bankr-dev---sign-&-submit-api

インストール後、Claude Code で/bankr-dev---sign-&-submit-apiを入力して読み込まれたか確認します。

詳細

署名・送信 API

トランザクションに直接署名して送信するための同期エンドポイントです。ジョブのポーリングは不要です。

エンドポイント

エンドポイント目的戻り値
POST /agent/signメッセージ、型付きデータ、またはトランザクションに署名します署名
POST /agent/submit生のトランザクションをチェーンに送信しますトランザクションハッシュ

POST /agent/sign

署名の種類
種類用途
personal_signプレーンテキストメッセージ(認証、検証)
eth_signTypedData_v4EIP-712 型付きデータ(許可、注文)
eth_signTransaction後でブロードキャストするトランザクションへの署名
使用方法
// personal_sign
const signMessage = await fetch(`${API_URL}/agent/sign`, {
  method: "POST",
  headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    signatureType: "personal_sign",
    message: "Sign in to MyApp\nNonce: abc123",
  }),
});
// → { success: true, signature: "0x...", signer: "0x...", signatureType: "personal_sign" }

// eth_signTypedData_v4 (EIP-2612 permit)
const signPermit = await fetch(`${API_URL}/agent/sign`, {
  method: "POST",
  headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    signatureType: "eth_signTypedData_v4",
    typedData: {
      domain: { name: "USD Coin", version: "2", chainId: 8453, verifyingContract: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" },
      types: {
        Permit: [
          { name: "owner", type: "address" },
          { name: "spender", type: "address" },
          { name: "value", type: "uint256" },
          { name: "nonce", type: "uint256" },
          { name: "deadline", type: "uint256" },
        ],
      },
      primaryType: "Permit",
      message: { owner: "0x...", spender: "0x...", value: "1000000", nonce: "0", deadline: "1735689600" },
    },
  }),
});

// eth_signTransaction
const signTx = await fetch(`${API_URL}/agent/sign`, {
  method: "POST",
  headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    signatureType: "eth_signTransaction",
    transaction: { to: "0x...", chainId: 8453, value: "0", data: "0xa9059cbb..." },
  }),
});
エラーレスポンス
ステータスエラー原因
400必須フィールドがありませんmessage、typedData、または transaction がありません
401認証が必要ですAPI キーがないか、無効です
403読み取り専用 API キーですキーに書き込み権限がありません

POST /agent/submit

トランザクションフィールド
フィールド型必須説明
tostringはい宛先アドレス
chainIdnumberはいチェーン ID(8453=Base、1=Ethereum、137=Polygon)
valuestringいいえwei 単位の値
datastringいいえコールデータ(16 進数)
gasstringいいえガス上限
maxFeePerGasstringいいえEIP-1559 の最大手数料
maxPriorityFeePerGasstringいいえEIP-1559 の優先手数料
オプション
フィールド型デフォルト説明
descriptionstring—ログ記録用の人が読める説明
waitForConfirmationbooleantrueオンチェーンでの確認を待ちます
使用方法
// Submit a transaction and wait for confirmation
const result = await fetch(`${API_URL}/agent/submit`, {
  method: "POST",
  headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    transaction: { to: "0x...", chainId: 8453, value: "1000000000000000000" },
    description: "Send 1 ETH",
    waitForConfirmation: true,
  }),
});
// → { success: true, transactionHash: "0x...", status: "success", blockNumber: "123", gasUsed: "21000" }

// Fire-and-forget (don't wait for confirmation)
const pending = await fetch(`${API_URL}/agent/submit`, {
  method: "POST",
  headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({
    transaction: { to: "0x...", chainId: 8453, value: "100000000000000000" },
    waitForConfirmation: false,
  }),
});
// → { success: true, transactionHash: "0x...", status: "pending" }
複数ステップのワークフロー
// Approve + Swap sequence
async function approveAndSwap(approveTx: object, swapTx: object) {
  // 1. Approve token spending
  const approval = await submitTransaction(approveTx);
  if (approval.status !== "success") throw new Error("Approval failed");

  // 2. Execute swap
  const swap = await submitTransaction(swapTx);
  if (swap.status !== "success") throw new Error("Swap failed");

  return swap;
}
トランザクションのステータス値
ステータス説明
success確認済みで、成功しました
reverted確認済みですが、取り消されました
pending送信済みですが、まだ確認されていません

/agent/prompt との比較

機能/agent/prompt/agent/sign/agent/submit
入力自然言語構造化データトランザクションオブジェクト
レスポンス非同期(ジョブ ID)同期(署名)同期(トランザクションハッシュ)
オンチェーンで実行AI エージェント経由いいえはい
最適な用途一般的な問い合わせ認証、許可生のトランザクション

セキュリティに関する注意事項

  • /agent/submit は即座に実行されます。確認プロンプトはありません
  • 読み取り専用 API キーでは、どちらのエンドポイントでも 403 が返されます
  • 送信前に必ずトランザクションパラメーターを検証してください
  • 重要なトランザクションでは waitForConfirmation: true を使用してください

関連スキル

  • bankr-api-basics - API の基本
  • bankr-client-patterns - クライアントのセットアップ
  • bankr-safety - セキュリティのベストプラクティス
  • bankr-arbitrary-transaction - 生のトランザクション JSON の構築

コメント