MeatSpace について
MeatSpaceは、主観的、曖昧、または重大な判断に直面したエージェント向けのヒューマン・イン・ザ・ループサービスです。2〜4個の選択肢を含む依頼を人に送り、選ばれた項目を構造化データで返します。
主な機能
- 012〜4個の選択肢で判断を依頼
- 02テキスト、Markdown、HTML、画像を添付
- 03ロングポーリングまたはWebhookで待機
- 04サービス経由でAPIキーを発行
- 05REST、MCP、ブラウザーSDKに対応
活用シーン
- 01デプロイや削除の前に承認を求める
- 02確信度が低い場合に人の判断を得る
- 03コピーやデザインなど主観的な選択を解決
- 04決定的なチェックで解決できない場合にエスカレーション
MCP 対応
MeatSpaceはStreamable HTTPのMCPサーバーを提供し、サービス状態の確認、APIキー発行、人への判断依頼のツールを公開します。判断依頼にはBearer認証が必要ですが、キー発行と状態確認には不要です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://meatspace.run/api/mcpclaude mcp add --transport http zmarten-meatspace https://meatspace.run/api/mcp{"mcpServers":{"zmarten-meatspace":{"type":"http","url":"https://meatspace.run/api/mcp"}}}Cursor で開く{"servers":{"zmarten-meatspace":{"type":"http","url":"https://meatspace.run/api/mcp"}}}VS Code で開く{"mcpServers":{"zmarten-meatspace":{"type":"http","url":"https://meatspace.run/api/mcp"}}}{"mcpServers":{"zmarten-meatspace":{"serverUrl":"https://meatspace.run/api/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://meatspace.run/api/mcp認証が必要ツール
3このツールにパラメーターはありません。
詳細
MeatSpace
AI エージェント向けのヒューマン・イン・ザ・ループサービスです。エージェントが主観的、重大、または曖昧な判断に直面すると、MeatSpace はその判断を人間に引き継ぎます。人間は2〜4個の選択肢から1つを選び、構造化された結果を返します。
公開中:meatspace.run
できること
エージェントは、タイトル、任意のコンテンツ(テキスト、Markdown、HTML、または画像)、およびラベル付きの選択肢を2〜4個送信します。人間のレビュアーにリクエストが表示され、選択肢を1つ選ぶと、API は選択された id と label を返します。エージェントはロングポーリングまたは Webhook で結果を待ちます。
一般的なユースケース:
- 破壊的または取り消し不可能な操作(デプロイ、削除、支払い)の前に設ける承認ゲート。
- モデルの信頼度がしきい値を下回る場合の、主観的な判断のタイブレーク。
- センスを問われる判断 — コピーの選択、デザインの好み、順位の同点解消。
- エージェントの確定的なチェック手段が尽きた場合のエスカレーション。
タスクが確定的、自動検証可能、またはリスクが低く簡単に元に戻せる場合は使用しないでください。
3つの連携方法
| 方法 | エンドポイント | 最適な用途 |
|---|---|---|
| REST API | POST /api/requests | あらゆる HTTP クライアント、カスタムエージェントフレームワーク、サーバー間通信。 |
| MCP | POST /api/mcp (Streamable HTTP) | Claude、Claude Code、MCP 対応クライアント。 |
| ブラウザー SDK | /sdk/meatspace.js | ブラウザーのタブで動作するエージェント。 |
3つすべてが同じバックエンド API を利用し、同じ Bearer トークンを使用します。
セットアップ不要のセルフサービスフロー
新しいエージェントは3回の呼び出しでオンボーディングを完了できます。サインアップページも承認キューもなく、セットアップ時に人間が介在する必要もありません。
POST /api/keysに{"name": "your-agent", "email": "[email protected]"}を送信 → API キーが即座に返されます。メールアドレスあたり最大5個までに制限されています。- Bearer トークンとタイトル、選択肢を指定して
POST /api/requestsを送信 → レビューリクエストを作成します。 GET /api/requests/{id}/wait→ 人間が応答するまでブロックします。タイムアウトした場合はreview_urlとpoll_urlを含むpendingを返します。
同じフローは MCP でも利用できます:initialize → tools/list → provision_api_key → ask_human。provision_api_key ツールと get_service_status ツールは認証不要のため、新しい MCP クライアントは認証情報なしで接続し、自身のセットアップを開始できます。
REST クイックスタート
キーを発行します:
curl -X POST https://meatspace.run/api/keys \
-H "Content-Type: application/json" \
-d '{"name": "my-agent", "email": "[email protected]"}'
レスポンスには api_key が含まれます。これは一度だけ表示されるため、保存してください。以降のすべての呼び出しでは Authorization: Bearer <token> を使用します。
リクエストを作成します:
curl -X POST https://meatspace.run/api/requests \
-H "Authorization: Bearer $MEATSPACE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent_name": "my-agent",
"title": "Ship v2.0 to production?",
"content": "All tests pass. Staging looks good. 2 minor lint warnings.",
"choices": [
{ "id": "ship", "label": "Ship it" },
{ "id": "wait", "label": "Wait for next cycle" }
],
"confidence": 0.7,
"consequence_of_wrong_choice": "Premature ship affects ~50k users"
}'
レスポンス:
{
"success": true,
"data": {
"id": "uuid",
"status": "pending",
"review_url": "https://meatspace.run/review/uuid?token=opaque-review-token",
"poll_url": "/api/requests/uuid",
"expires_at": "2026-04-23T19:00:00.000Z"
}
}
結果をロングポーリングします:
curl https://meatspace.run/api/requests/{id}/wait?timeout=25000 \
-H "Authorization: Bearer $MEATSPACE_API_KEY"
人間が応答すると { status: "completed", selected, selected_label, responded_at } を返し、まだ保留中の場合は 202 を返します。
POST /api/requests で指定できる任意のフィールド:content_type(デフォルトは text、markdown、html、image)、decision_reason、confidence(0~1)、consequence_of_wrong_choice、recommended_option、callback_url(HTTPS が必須で、ホストが許可リストに登録されている必要があります)、metadata(Webhook にそのまま渡されます)、run_id、trace_id、timeout_seconds(デフォルトは3600、最大86400)。
MCP
MeatSpace は https://meatspace.run/api/mcp で Streamable HTTP を介して MCP を実装しています。サーバーは次の3つのツールを公開します:
get_service_status— 利用状況とエスカレーションの指針。認証不要。provision_api_key— Bearer トークンを発行します。認証不要、レート制限あり。ask_human— 判断を送信します。Bearer 認証が必要です。
Claude Code の設定:
{
"mcpServers": {
"meatspace": {
"type": "url",
"url": "https://meatspace.run/api/mcp",
"headers": {
"Authorization": "Bearer <your-api-key>"
}
}
}
}
ask_human は最大20秒間ロングポーリングします。それまでに人間が応答しない場合、このツールは人間向けの review_url とエージェント向けの poll_url を含む status: "pending" を返します。
ブラウザー SDK
ブラウザーのコンテキストで動作するエージェント向け:
<script type="module">
import { MeatSpace } from 'https://meatspace.run/sdk/meatspace.js';
const ms = new MeatSpace();
await ms.getKey({ name: 'browser-agent', email: '[email protected]' });
const result = await ms.ask({
agentName: 'browser-agent',
title: 'Which option?',
choices: [
{ id: 'a', label: 'A' },
{ id: 'b', label: 'B' },
],
});
console.log(result.selected);
</script>
メソッド:getKey()、createRequest()、pollResult()、waitForResult()、ask()(作成して待機)。
Webhook
リクエストに callback_url が設定されている場合、人間が応答すると MeatSpace が結果を POST します。
{
"event": "request.completed",
"request_id": "uuid",
"selected": "ship",
"selected_label": "Ship it",
"responded_at": "2026-04-23T18:10:00.000Z",
"metadata": {}
}
callback_url は https:// でなければならず、ホスト名は運用者が明示的に許可リストに登録する必要があります。許可リストが設定されていない場合、リクエストの作成時にコールバック URL は拒否されます。各配信には X-HITL-Timestamp ヘッダーと X-HITL-Signature ヘッダーで署名されます。
ディスカバリーエンドポイント
| パス | 形式 | 目的 |
|---|---|---|
/.well-known/mcp.json | JSON | MCP サーバーのマニフェスト |
/.well-known/agent.json | JSON | A2A エージェントカード |
/api/openapi | JSON | OpenAPI 3.1 仕様 |
/api/mcp (GET) | JSON | MCP サーバー情報、認証不要 |
/api/status | JSON | ヘルスチェックとエージェント向けガイダンス |
/sdk/meatspace.js | JavaScript | ブラウザー SDK |
/llms.txt | Text | LLM が読み取れる概要 |
/llms-full.txt | Text | API ドキュメント全文 |
/agents.md | Markdown | 統合ガイド全文 |
/sitemap.xml | XML | サイトマップ |
/robots.txt | Text | クローラー向け指示とディスカバリー情報 |
エラー
すべてのエラーは次を返します。
{
"success": false,
"error": "Human-readable message",
"code": "machine_readable_code"
}
一般的なコード:agent_name_required、invalid_choice_count、content_too_large、callback_url_not_allowed、request_create_failed。
ローカル開発
このリポジトリは Cloudflare Pages にデプロイされた Next.js 14 アプリです。
npm install
npm run dev # local dev at http://localhost:3000
npm run test # integration tests
npm run build:cf # build for Cloudflare Pages
npm run deploy:cf # build and deploy
Supabase はキーとリクエストの記録管理に使用され、Resend はトランザクションメールを処理します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。