DIEM Agent Workers について
DIEM Agent Workersは、プライベートなVenice推論を使う6種類のテキスト・メディア処理を提供する、プライバシー重視のHTTPサービスです。固定USDC価格とx402決済に対応し、エージェント向けに機械可読な形で公開します。
主な機能
- 016種類の範囲限定テキスト・メディア処理
- 02固定価格のUSDC見積もりとx402決済
- 03MCP、A2A、OpenAPIによる検出
- 04ツール呼び出しを無効化したVenice推論
- 05集計のみのプライバシー保護テレメトリー
活用シーン
- 01テキストから構造化データを抽出
- 02テキストの分類や要約
- 03音声や草案画像の生成
- 04検証済みPCM WAV音声の文字起こし
MCP 対応
Streamable HTTPを通じて、MCPクライアントにワーカーの検出と実行機能を公開し、ローカル/stdio MCPアダプターも提供します。ジョブはx402によるUSDC決済で保護されます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://diem-agent-workers.vercel.app/mcpclaude mcp add --transport http coastmancoastman-diem-agent-workers https://diem-agent-workers.vercel.app/mcp{"mcpServers":{"coastmancoastman-diem-agent-workers":{"type":"http","url":"https://diem-agent-workers.vercel.app/mcp"}}}Cursor で開く{"servers":{"coastmancoastman-diem-agent-workers":{"type":"http","url":"https://diem-agent-workers.vercel.app/mcp"}}}VS Code で開く{"mcpServers":{"coastmancoastman-diem-agent-workers":{"type":"http","url":"https://diem-agent-workers.vercel.app/mcp"}}}{"mcpServers":{"coastmancoastman-diem-agent-workers":{"serverUrl":"https://diem-agent-workers.vercel.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
3このツールにパラメーターはありません。
詳細
DIEM Agent Workers
プライバシーを最優先した、エージェントが発見可能なマイクロワークです。プライベートなVenice推論を活用し、x402を通じてUSDCで支払います。
このリポジトリは、フェイルクローズでエージェントを最優先する、Baseメインネット向けのストアフロントです。プレーンなHTTP+x402で、範囲を限定した6つのワーカーを公開し、CDP Bazaarに登録するとともに、A2A 1.0、MCP、OpenAPI、llms.txt、ポータブルスキルの各ディスカバリーサーフェスを提供します。
パブリックベータ:diem-agent-workers.vercel.app
| ワーカー | 範囲を限定した成果 | ベータ価格 |
|---|---|---|
extract_text_to_json | 呼び出し元のスキーマに適合した抽出 | $0.020 USDC |
classify_text | 呼び出し元が指定したラベルを1つだけ返します | $0.010 USDC |
summarize_text | 構造化された要約と要点 | $0.020 USDC |
text_to_speech | 最大1,000文字をMP3に変換 | $0.010 USDC |
generate_draft_image | セーフモードの1024px WebP画像を1枚生成 | $0.020 USDC |
transcribe_audio | 検証済みPCM WAV音声を最大60秒文字起こし | $0.015 USDC |
これらは見積もりではなく、認証試行が成功するごとの固定価格です。パブリックデプロイは、Baseメインネット上の低上限ベータです。アトミックな0.25 DIEMのソフトウェア予算で1日あたりの推論開始数を制限し、Venice APIキーでは別枠の1.69 DIEMのプロバイダー上限を維持します。
プライバシーを設計の中心に
- プロンプト、出力、支払者アドレス、トランザクションハッシュ、IPアドレス、ユーザーエージェント、リクエスト識別子は、永続メトリクスの対象外です。
- リクエスト本文とプロバイダー本文を意図的にログへ記録したり、永続化したりすることはありません。
- 公開される信頼性統計は全期間の集計値のみです。活動パターンが明らかになるタイムスタンプや時間枠はありません。
- ワーカーはプライベートなVeniceモデルを使用し、ウェブ検索、スクレイピング、モデルによるツール利用は無効にしています。
- 配信保護では、HMACフィンガープリントと、中断された配信の引き換えに必要な範囲限定の状態のみを保存します。
任意で利用できるUSDCからDIEMへのトレジャリー機能は、本番環境では無効であり、ストアフロントのランタイムには含まれません。ウォレット署名者や秘密鍵はVercelにデプロイされません。
実装内容
- 応答後にJSON Schema検証を行う、Veniceの構造化出力テキストワーカー3種
- 範囲を限定したVeniceの音声、画像、文字起こしワーカー
- EPOCHあたり1.69 DIEMのVeniceネイティブAPIキー計算上限(毎日00:00 UTCにリセット)
- UTC日ごとに、保守的に予約された作業を0.25 DIEMまでに制限する、Upstashを利用したアトミックなソフトウェア上限
- 支払い前に確認される、環境変数によるストアフロントのキルスイッチ
- PCM WAVの正確な再生時間チェックを含む、支払い前の入力検証
- 支払い前のVeniceエポックアクセス、モデル稼働状況、プライベートモデル、機能の確認
- 無料で機械可読なカタログと、ワーカーごとの固定価格見積もり
- OpenAPI 3.1、
llms.txt、A2A 1.0 Agent Card、JSON-RPCSendMessage、Streamable HTTP MCPディスカバリー - CDP Facilitatorを通じた、x402による正確な価格のUSDC決済ゲート
- ワーカーごとの詳細なx402 Bazaarスキーマ、サービス名、トピックタグ、サービスアイコン
- パブリックStreamable HTTPサーバー向けの公式MCP Registryメタデータ
- プライバシーを保護するランタイムテレメトリーと、永続的な全期間の集計信頼性、決済、収益、レイテンシーバケット、DIEMカウンター
- アトミックなUpstash Redis状態を用いた、永続的で冪等な有料配信クレジット
- すべての応答とディスカバリーサーフェスからリンクされる、公開済みの機械可読な利用規約
- 専用のトレジャリーアドレスへの直接送金
- 見積もり専用モードと、USDCからDIEMへのライブトレジャリーモード
- Base USDC、Venice DIEM、チェーンID、0x AllowanceHolderのハードコード
- 正確な承認、スワップごとの上限、スリッページ上限、ETHガス準備金、プロセスロック、所有者専用監査ログ
- インストール可能なエージェントスキルと、ローカル/stdio MCPアダプター
本サービスはVenice.aiと提携しておらず、同社の推奨も受けていません。
ローカルでの起動
必要条件:Node.js 22 以降と pnpm。
cp .env.example .env
pnpm install
pnpm test
pnpm dev
.env にサーバー側の Venice キーを追加します。
VENICE_API_KEY=...
VENICE_TEXT_MODEL=venice-uncensored-1-2
VENICE_IMAGE_MODEL=venice-sd35
VENICE_TTS_MODEL=tts-kokoro
VENICE_ASR_MODEL=openai/whisper-large-v3
VENICE_DIEM_EPOCH_CAP=1.69
VENICE_DIEM_EPOCH_CAP はサービスディスカバリーで上限を公開するための値で、Venice API キーに設定したネイティブの EPOCH 消費上限と一致させる必要があります。上限に達した場合は Venice によって処理が停止されます。サービスは 402 を返す前に、現在のエポックのアクセス権と、指定されたモデルのオンライン状態、プライベート設定、機能の状態も確認します。トークン数から DIEM の料金を推定することはありません。
開発サーバーは 127.0.0.1:8402 にバインドします。
curl http://127.0.0.1:8402/health
curl http://127.0.0.1:8402/v1/catalog
curl -X POST http://127.0.0.1:8402/v1/quote/classify_text
ローカルテストでは、PAYMENTS_MODE=off にすると、支払いなしでワーカーを呼び出せます。
curl -X POST http://127.0.0.1:8402/v1/jobs/extract-json \
-H 'Content-Type: application/json' \
-d '{
"source": "The Acme Trail Mug is drinkware and costs $18.50.",
"schema": {
"type": "object",
"properties": {
"name": {"type": ["string", "null"]},
"category": {"type": ["string", "null"]},
"price_usd": {"type": ["number", "null"]}
},
"required": ["name", "category", "price_usd"],
"additionalProperties": false
}
}'
本番環境では、PAYMENTS_MODE=production、永続的な配信クレジットの適用、グローバルな計算予算の適用、集計のみのメトリクスの有効化がすべて満たされていない限り、起動できません。チェックイン済みのデフォルト値とローカルのデフォルト値は、引き続き PAYMENTS_MODE=off、STOREFRONT_ENABLED=false、AGGREGATE_METRICS_MODE=off、TREASURY_MODE=disabled です。
x402 決済の追加
ダウンロードした CDP Secret API Key を、値を表示せずにインポートします。
pnpm credentials:import-cdp /absolute/path/to/cdp_api_key.json
このコマンドは、ダウンロードしたキーのファイルと .env の両方の権限を所有者のみに制限します。設定済みの認証情報が上書きされることはなく、決済も有効になりません。
Base Sepolia で起動します。
PAYMENTS_MODE=development
TREASURY_ADDRESS=0xYourDedicatedEvmAddress
CDP_API_KEY_ID=...
CDP_API_KEY_SECRET=...
サーバーは CDP のアドレス形式の設定を使用するため、決済は TREASURY_ADDRESS に直接精算されます。CDP がこのウォレットを作成または管理することはありません。ワーカーへの未払いリクエストには、HTTP 402 と PAYMENT-REQUIRED ヘッダーが返されます。
有料配信の保護
永続的な配信クレジットが適用されない場合、Mainnet はフェイルクローズになります。Vercel Marketplace から Upstash Redis データベースを用意し、次のように設定してください。
DELIVERY_CREDITS_MODE=enforced
DELIVERY_CREDIT_HMAC_SECRET=<at-least-32-random-bytes>
DELIVERY_CREDIT_TTL_SECONDS=86400
DELIVERY_CREDIT_LEASE_SECONDS=180
UPSTASH_REDIS_REST_URL=...
UPSTASH_REDIS_REST_TOKEN=...
エージェントは、論理ジョブごとに予測困難な Idempotency-Key を 1 つ生成し、同一のリクエストと支払い認証でのみ再利用してください。ヘッダーのない署名済み有料リクエストは、精算前に失敗します。Redis のレコードに含まれるのは、HMAC フィンガープリント、ワーカー ID、状態、リース、有効期限のみです。リクエスト本文、プロバイダーの応答、支払者のアドレス、支払いヘッダー、トランザクションハッシュは保存されません。
正常に配信されると、そのキーは消費されます。精算後、配信完了前にプロセスが中断された場合は、同じ認証、キー、ワーカー、リクエストを使って、再精算せずに 1 回だけ再試行できます。競合するキーの再利用は拒否され、ストレージ障害が発生した場合は精算前に 503 が返されます。
Mainnet のコンピュート予算とキルスイッチ
本番環境では、アトミックなグローバルコンピュート予算も必要です。
COMPUTE_BUDGET_MODE=enforced
COMPUTE_BUDGET_DIEM_PER_DAY=0.25
AGGREGATE_METRICS_MODE=enabled
STOREFRONT_ENABLED=true
サービスは、x402 の検証後、Venice による推論の前に、ジョブの USDC 価格に相当する保守的な金額を確保します。配信の再試行では、購入者に再請求されない場合でもプロバイダーのキャパシティを消費する可能性があるため、再度予算を確保します。Redis の停止、または予算の枯渇が発生すると、新たな決済を中止し、推論をブロックします。決済前にすべての有料処理を無効にするには、STOREFRONT_ENABLED=false を設定して再デプロイしてください。
保護付きの Base Sepolia 決済テストをローカルで実行するには、次のコマンドを使います。
pnpm test:sepolia
これは実際のテストネットトランザクションです。メモリ内に一時的な購入者を作成し、faucet から USDC をリクエストし、署名前に正確な見積もりを検証して、ワーカーへの呼び出し 1 回分を支払い、財務ウォレットのテスト用 USDC の増加額を照合します。保存済みの PAYMENTS_MODE が off で、TREASURY_MODE が disabled の場合を除き、実行を拒否します。ローカル HTTP テストは Bazaar に公開されません。公開には HTTPS デプロイが必要です。
Mainnet のローンチチェックリスト:
- 個人のウォレットではなく、残高を少額に抑えた専用の財務ウォレットを使用します。
- アドレスと Base ネットワークを確認します。
- 公開 HTTPS の背後にデプロイします。
- CDP 検証 API を使用して x402 エンドポイントを検証します。
- TERMS.md を公開して内容を確認します。すべての API レスポンスから
/termsにリンクします。 - 永続的な配信クレジットと、0.25 DIEM のアトミックなソフトウェア予算を有効にします。
PAYMENTS_MODE=productionを設定し、TREASURY_MODE=disabledのままデプロイします。- Bazaar が Base mainnet のリソースをインデックスできるよう、実際に少額の決済を 1 回完了します。
Mainnet の受け入れテストハーネスは、macOS Keychain に保存された、セント単位のみを扱う専用の購入者を使用します。署名前にすべての支払い要件を検証し、ストアフロントの承認額の合計が $0.095 USDC を超える場合は実行を拒否します。個別のワーカーを選択するには MAINNET_X402_TEST_WORKERS を指定するか、pnpm test:mainnet:all を使用します。複数のワーカーを実行するには、正確な確認文字列 PAY_UP_TO_0_095_USDC_WITH_DISTINCT_BUYER_ON_BASE が必要です。出力には、ウォレットアドレス、トランザクションハッシュ、リクエスト本文、プロバイダーのレスポンスは意図的に含まれません。
USDCをDIEMに再投資する
トレジャリーは、プロンプト駆動型のウォレットエージェントではなく、決定論的な一回限りのランナーです。
macOSで専用ウォレットを新規作成します。
pnpm wallet:create
このコマンドは秘密鍵をmacOS Keychainに保存し、公開アドレスとKeychainのラベルのみを.envに書き込みます。既存のウォレットの置き換えを拒否し、決済とトレジャリーの実行が無効になっていることを必須とします。
シードフレーズから復旧する場合は、信頼できるウォレットアプリで専用ウォレットを作成し、シードフレーズをオフラインで保管したうえで、トレジャリーアカウントの秘密鍵のみをエクスポートし、非表示のローカルプロンプトからその鍵をインポートします。
pnpm wallet:import
シードフレーズをプロジェクトに入力しないでください。インポートコマンドは、確認のために導出された公開アドレスを表示し、アカウント鍵をmacOS Keychainに保存します。また、Keychainからの読み戻しに成功した場合に限り、以前の無効化されたトレジャリー設定を置き換えます。
鍵を公開せずに、所有権を確認してBaseの残高を読み取ります。
pnpm wallet:verify
macOS認証を使った復旧およびウォレットインポートの手順については、docs/WALLET_ACCESS.mdをご覧ください。秘密鍵をチャットで送信しないでください。すでにウォレットを管理している場合は、公開の0xアドレスのみを共有してください。
見積もり専用モードでは残高を読み取り、参考価格を0xに問い合わせますが、署名は行いません。
TREASURY_MODE=quote
TREASURY_ADDRESS=0xYourDedicatedEvmAddress
BASE_RPC_URL=https://your-base-rpc.example
ZEROX_API_KEY=...
TREASURY_MIN_SWAP_USDC=5
TREASURY_MAX_SWAP_USDC=25
TREASURY_USDC_HOLDBACK=0
TREASURY_MAX_SLIPPAGE_BPS=100
TREASURY_MIN_ETH_RESERVE=0.0005
pnpm treasury:run
ライブモードではさらに、macOS Keychain(または本番用シークレットマネージャー)に保存されている一致する専用鍵と、完全一致の確認文が必要です。
TREASURY_MODE=live
TREASURY_LIVE_ACK=BUY_DIEM_ONLY_ON_BASE
デプロイ時は、平文の.envではなく、本番用シークレットマネージャーを使用してください。ライブランナーは次の処理を行います。
TREASURY_ADDRESSと一致しない鍵を拒否します- トークンペア、チェーン、許可対象、ネイティブ値が正しくない場合や、ガスが過剰な場合は拒否します
- 意図したUSDC額のみを承認します
- 承認後に確定レートを再取得します
- 署名済みトランザクションのハッシュをブロードキャスト前に記録し、再起動後に照合します
- USDCの減少が承認額以下であり、DIEMが増加したことを検証します
0600のJSONL監査記録をdata/に書き込みます
このランナーは、DIEMの売却、USDCの引き出し、資産のブリッジ、任意のトークンの選択、DIEMのステーキングを行いません。
マシンによる検出
GET /v1/catalog— 機能、スキーマ、制約、価格GET /v1/stats— 呼び出し元の識別情報や時系列を含まない、全期間の集計信頼性および決済カウンターGET /.well-known/agent-catalog.json— クローラー向けカタログのエイリアスGET /openapi.json— OpenAPI 3.1コントラクトGET /llms.txt— エージェントが読み取れる簡潔なインデックスGET /.well-known/agent-card.json— A2A 1.0 Agent CardPOST /a2a— 固定価格$0.020 USDCのA2A 1.0 JSON-RPCSendMessageアダプターPOST /mcp— カタログ、見積もり、呼び出し準備用の無料ツールを備えた、ステートレスなStreamable HTTP MCPサーバーskills/extract-text-to-json/— 移植可能なエージェントスキルGET /icon.svg— x402 Bazaarメタデータで使用される安定したサービスアイコン- x402 Bazaarメタデータ — 決済が有効な場合に自動で付加されるスキーマ、サービス名、5つのトピックタグ、アイコン
MCPアダプターは意図的にウォレット鍵を受け付けません。エージェントは、準備済みの呼び出しを自分のx402対応クライアントで実行するか、インデックス済みのx402リソースを検出できるCoinbaseのBazaar MCPサーバーを使用します。
リモートMCPサーバーは、公式MCP Registryへの公開に向けて、io.github.coastmancoastman/diem-agent-workersネームスペースのserver.jsonで記述されています。
プライベートストアフロントのテレメトリ
本番環境では、1行のJSONイベントをサーバーランタイムログに出力します。スキーマは明示的な許可リストです。ルートカテゴリ、HTTPステータス、レイテンシ、ワーカー、大まかなエラー分類、モデル、確定した正確な価格、推定DIEMコスト/マージンが含まれます。コストの推定にはVeniceの公開モデル料金カタログを使用し、アカウント残高や請求履歴は照会しません。
テレメトリに、プロンプト、出力、プロンプトの長さ、トークン数、生のURL、リクエストID、IPアドレス、ユーザーエージェント、ヘッダー、支払者の身元、トランザクションハッシュ、プロバイダーのリクエストID、認証情報が含まれることはありません。テレメトリに障害が発生しても、ワーカーの応答が妨げられることはありません。
保存済みのJSONLファイルからローカルの集計レポートを作成します。
pnpm telemetry:report /absolute/path/to/runtime-logs.jsonl
または、リンク済みのVercelプロジェクトから最近の本番ログをレポートします。
vercel logs --environment production --since 24h --no-branch --json --limit 1000 \
| pnpm telemetry:report
レポートには、リクエスト数と支払い件数、確定済みUSDC収益、推定DIEMコストと粗利益、レイテンシのパーセンタイル、大まかな失敗件数が含まれます。個々の顧客のコンテンツや身元を復元することはできません。
サーバーレスのランタイムログは永続的な業務台帳ではないため、本番環境では安全状態の保存に使用しているものと同じUpstashデータベースに、アトミックな累計カウンターも書き込みます。GET /v1/statsでは、ワーカーごとの完了/失敗した実行数、大まかな失敗分類、固定のレイテンシバケット、決済、収益、DIEMの推定値を公開します。カウンターキーに日付やタイムスタンプは含まれず、書き込みAPIでは自由形式の顧客情報やリクエストフィールドを受け付けません。
セキュリティと法的事項
本サービスの利用にはTERMS.mdが適用され、/termsでも公開されています。第三者の作業を受け付ける前に、SECURITY.mdとdocs/END_USER_TERMS_CHECKLIST.mdをお読みください。AIの出力がスキーマに一致していても、内容が正しい証拠にはなりません。このワーカーを重大な結果を伴う意思決定に使用しないでください。
検証
6件すべてのBase Sepolia決済トランザクションを含む、現在の本番環境の受け入れ確認の証拠は、docs/BASE_SEPOLIA_ACCEPTANCE.mdに記録されています。
pnpm check
pnpm test
pnpm build
pnpm generate:openapi
ALLOW_VENICE_EVAL=1 VENICE_EVAL_MODELS=venice-uncensored-1-2 pnpm eval:text
ライブ評価はVeniceの処理能力を消費するため、オプトイン方式です。出力されるのは正解率とレイテンシの集計値のみで、プロンプトやプロバイダーの応答は保存されません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。