Twinkle HubTwinkle Hub

문서

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":"tw_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(
            "tw_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 필드로 투과.

도구 레퍼런스

도구인자반환 값 (간략)
tw_list_domains[{key, name_zh, scope, typical_questions}]
tw_search_datasets{query, domain?, limit?}[{dataset_id, title, score, license}]
tw_get_dataset{dataset_id}{schema, columns, license, source_url}
tw_query_rows{dataset_id, where?, limit?}[row, ...]
tw_materialize_dataset{dataset_id, format?}全表 CSV / JSON

전체 스키마는 tools/list를 통해 — JSON Schema로 자동 생성.

인증

  • Bearer 토큰 — 헤더 Authorization: Bearer sk-.... Twinkle Hub 발행 가상 키, 사용자당 1 개. /dashboard에서 받으세요.
  • OAuth 플로우 없음 — PKCE / 리프레시 토큰 불필요; 장기 bearer 하나.
  • 레이트 제한 — Free 플랜은 롤링 방식 credits 한도(5시간마다 50, 서서히 회복, 주간 500 상한 별도)로 관리되며, USD 예산이나 키당 RPM/TPM 이 아닙니다.

요금

곧 제공

핵심 도구는 현재 무료입니다 — 5시간마다 50 credits, 서서히 회복(주간 500 상한 별도). Free 플랜에서는 query_rows 가 호출당 최대 10 건을 반환합니다. 일부 심층 코퍼스 검색과 전체 문서 조회는 곧 출시될 Pro 플랜 전용이며, 과금 시작 전에 Pro 가격을 공지합니다.

Free 플랜: 5시간마다 50 credits, 서서히 회복(주간 500 상한 별도); query_rows 는 호출당 최대 10 건을 반환합니다; 일부 심층 코퍼스 검색과 전체 문서 조회는 Pro 전용입니다. 한도 제어는 현재 적용 중입니다 (약간의 비동기 지연 있음).