Twinkle HubTwinkle Hub
サインイン

マイルストーン:皆さまのおかげで Twinkle Hub はリリース 1 ヶ月で 登録ユーザー 3,000 名を達成しました。

Anthropic Official Connectors への接続と、ディレクトリ要件に合わせた認証機構の調整のため、本日より新規ユーザー登録を一時停止します。期間中、既存ユーザーの API key も短時間ご利用いただけない場合があります。

再開のお知らせは Changelog にて。Agent Skillsドキュメント は引き続きご利用いただけます。お問い合わせは support@twinkleai.tw まで。

📌 2026-06-08 追加: Drug-leaflet search 10-100x faster — millisecond-level responses (1 データセット)

完全な changelog を見る →

ドキュメント

10 分でセットアップ

Twinkle Hub は MCP エンドポイント — あらゆる MCP クライアントが接続可能。あなたに合ったパスをお選びください。

API キーを取得

/login → Google または GitHub でサインイン。初回ログインで自動的に仮想 API キー(sk-...)を発行。新規アカウントは残高 $0 から — セルフサービスの入金は近日対応。

curl(streamable-http トランスポート)

ステップ 1:initialize して mcp-session-id レスポンスヘッダーから session id を取得

text
curl -i -X POST https://api.twinkleai.tw/mcp/ \
  -H "Authorization: Bearer sk-..." \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'

ステップ 2:tools/call

text
curl -X POST https://api.twinkleai.tw/mcp/ \
  -H "Authorization: Bearer sk-..." \
  -H "Accept: application/json, text/event-stream" \
  -H "Content-Type: application/json" \
  -H "mcp-session-id: <from-step-1>" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"opendata-list_domains","arguments":{}}}'

レスポンスは SSE スタイルのフレーミング — data: で始まる最後の行を見つけて JSON をパース。

Python(fastmcp)

python
import asyncio
from fastmcp.client import Client
from fastmcp.client.auth import BearerAuth

async def main():
    async with Client(
        "https://api.twinkleai.tw/mcp/",
        auth=BearerAuth("sk-..."),
    ) as client:
        tools = await client.list_tools()
        print([t.name for t in tools])

        r = await client.call_tool(
            "opendata-search_datasets",
            {"query": "AQI", "domain": "environment", "limit": 5},
        )
        # response 在 r.content[0].text — JSON string
        import json
        print(json.loads(r.content[0].text))

asyncio.run(main())

ツールは CallToolResult.content[0].text を JSON 文字列として返します。ライセンス、引用、その他のメタデータは _meta フィールドで透過。

ツールリファレンス

ツール引数戻り値(簡潔)
opendata-list_domains[{key, name_zh, scope, typical_questions}]
opendata-search_datasets{query, domain?, limit?}[{dataset_id, title, score, license}]
opendata-get_dataset{dataset_id}{schema, columns, license, source_url}
opendata-query_rows{dataset_id, where?, limit?}[row, ...]
opendata-materialize_dataset{dataset_id, format?}全表 CSV / JSON

完全なスキーマは tools/list 経由 — JSON Schema として自動生成。

認証

  • Bearer トークン — ヘッダー Authorization: Bearer sk-...。Twinkle Hub 発行の仮想キー、ユーザー 1 人につき 1 つ。/dashboard から取得してください。
  • OAuth フローなし — PKCE / リフレッシュトークン不要;長期 bearer 一本。
  • レート制限 — 現時点でキーごとの RPM/TPM 制限なし;max_budget のみ強制(spend > max_budget でゲートウェイが拒否)。

料金

近日対応

アルファ期間中はすべてのツールが無料。課金開始前にツール単位の料金を発表し、既存ユーザーには移行割引期間を提供します。

アルファ期間中は無料。spend 追跡パイプラインは動作(5〜15 秒の非同期ラグ、ゲートウェイは DB 書き込みをバッチ);課金開始後はクォータ強制が次のリクエストでリアルタイム適用。