Daepak

개발자를 위한 Daepak

시세·지표·레벨·포지셔닝, 김치 프리미엄, 미국 주식, 옵션, 백테스트 — 애널리스트가 쓰는 도구 98개를 그대로 API와 MCP로 제공합니다. 무료 요금제에도 월 2,000 크레딧이 포함되어, 하루 저녁이면 무언가를 만들어 볼 수 있습니다.

API 키 발급 API 레퍼런스 OpenAPI GitHub PyPI

바로 실행해 보기

키 없이도 공개 데이터를 호출할 수 있습니다. 키를 넣으면 실제 도구를 그대로 씁니다.

MCP로 연결하기

Claude Code, Claude Desktop 등 MCP를 지원하는 엔진에 한 줄로 붙습니다.

claude mcp add daepak -e DAEPAK_API_KEY=dpk_live_… -- uvx daepak-mcp

서버는 스스로 아무것도 기술하지 않습니다. 카탈로그를 GET /v1/tools에서 가져오므로, 키에 허용된 것만 정확히 보여 주고 제품과 어긋나지 않습니다.

⚠️ 계정은 키에서 결정됩니다. 요청 본문으로 다른 사용자를 지정할 수 없으며, 그런 필드는 무시가 아니라 400으로 명시적으로 거절됩니다 — 조용히 빈 결과를 주는 편이 더 위험하기 때문입니다.

REST로 직접 쓰기

# 카탈로그: 스키마·권한·가격
curl -H "Authorization: Bearer dpk_live_…" https://daepak.com/v1/tools

# 도구 호출
curl -X POST https://daepak.com/v1/tools/get_price \
     -H "Authorization: Bearer dpk_live_…" \
     -H "Content-Type: application/json" \
     -d '{"coin": "BTC"}'
{
  "tool": "get_price",
  "credits_used": 1,
  "credits_left": 1999,
  "took_ms": 104,
  "data": { "coin": "BTC", "price": 78017.26, "change_24h": -1.2 }
}

레퍼런스

도구 98개 전부가 인자 스키마·필요 권한·크레딧 가격과 함께 기술되어 있습니다. 명세는 애널리스트가 받는 것과 같은 스키마에서 생성되므로 제품과 어긋나지 않습니다.

인터랙티브 레퍼런스 openapi.json

OpenAPI 3.1 — Swagger UI, Redoc, Postman, Insomnia, 코드 생성기 어디서든 그대로 읽힙니다. 키 없이도 열람할 수 있습니다.

엔드포인트

메서드경로내용
GET/v1/tools카탈로그 — 스키마·권한·가격. 키 권한으로 필터링됨
POST/v1/tools/{name}도구 호출. 본문은 인자 객체
GET/v1/usage이번 달 사용량, 도구별 내역
POST/v1/agent/messages애널리스트의 완성된 답변 (agent:chat)
POST/v1/agent/stream같은 답변을 SSE 스트림으로. 끊겨도 백그라운드에서 계속
GET/v1/agent/resume/{id}진행 중인 생성에 다시 연결 — 놓친 이벤트부터 이어서
POST/v1/agent/cancel/{id}생성 중단. 그냥 끊으면 작업은 끝까지 토큰을 씁니다
GET/v1/agent/conversations이 키의 대화 목록
GET/v1/agent/conversations/{id}대화 하나의 메시지
GET/v1/openapi.json명세. 키 불필요

응답 봉투

모든 도구 호출은 같은 형태로 감싸여 돌아옵니다 — 결과와 함께 얼마가 들었는지가 같이 옵니다. 사후 정산이 아니라 그 자리에서 보이도록.

{
  "tool": "get_price",
  "credits_used": 1,      // 실패한 호출은 0 — 안 받습니다
  "credits_left": 1999,
  "took_ms": 104,
  "data": { … }           // 도구 자신의 결과
}

대화 · 이미지 · 파일

/v1/agent/messages는 채팅과 같은 경로를 씁니다. 응답에 conversation_id가 돌아오므로, 다음 요청에 그대로 실어 보내면 맥락이 이어집니다. images에 data-URL을 담으면 차트 스크린샷도 읽습니다.

curl -X POST https://daepak.com/v1/agent/messages \
     -H "Authorization: Bearer dpk_live_…" -H "Content-Type: application/json" \
     -d '{"message": "BTC 지금 어때?", "lang": "ko"}'

# 응답의 conversation_id를 다음 요청에 넣으면 대화가 이어집니다
{ "answer": "…", "conversation_id": 1234, "lang": "ko", "took_ms": 8120 }

make_chart가 그린 이미지는 응답의 url로 옵니다 — 같은 키로 그대로 받을 수 있습니다.

⚠️ 대화는 소유자를 확인합니다. 남의 conversation_id를 넣으면 404입니다 — 키로 남의 기록을 읽을 수는 없습니다.

스트리밍

답변은 수십 초가 걸립니다. /v1/agent/stream은 채팅과 똑같이 SSE로 흘려 보냅니다 — status, tool, delta(텍스트 조각), suggest(이어서 물을 질문), done.

curl -N -X POST https://daepak.com/v1/agent/stream \
     -H "Authorization: Bearer dpk_live_…" -H "Content-Type: application/json" \
     -d '{"message": "BTC 지금 어때?", "mode": "mentor"}'
⚠️ conversation가장 먼저 옵니다 — 여기에 담긴 id를 보관하세요. 끊겼을 때 돌아갈 곳입니다.
⚠️ suggestdone 다음에 옵니다. done에서 읽기를 멈추면 영영 보지 못합니다 — 순서는 일부러 그렇게 두었습니다. 스피너는 제안을 계산하기 전에 멈춰야 하니까요.
⚠️ 연결이 끊겨도 생성은 백그라운드에서 계속됩니다 — 답변은 대화에 남고, 다시 연결하면 놓친 이벤트를 밀린 만큼 받습니다. 긴 답변을 기다리다 끊긴 것이 작업을 버리는 일이 되어서는 안 되니까요.

mode: "mentor"를 주면 결론만이 아니라 왜 그렇게 읽었는지까지 설명합니다. 모드는 대화가 만들어질 때 정해집니다.

한도

요금제월 크레딧분당 요청
Free2,000110
Lite10,000230
Pro60,000560
Premium200,00010120

⚠️ 분당 한도가 월 한도보다 중요합니다: 월 한도는 예산을, 분당 한도는 서비스를 지킵니다. 외부의 루프 하나가 수집을 멈추게 해서는 안 되니까요.

언어

오류 메시지의 기본값은 영어입니다 — /v1은 어느 나라 개발자든 읽습니다. X-Lang: ko 또는 ru를 보내면 그 언어로 답합니다.

권한(스코프)

스코프도구내용
read:market78시세·캔들·지표·레벨·스코어·내러티브·파생·호가·청산·옵션·미국 주식·한국 시장·백테스트
read:personal9내 포지션·포트폴리오·매매일지·촉매·메모리·백그라운드 작업
write:personal11같은 기록에 쓰기
agent:chatPOST /v1/agent/messages — 애널리스트의 완성된 답변

일지를 읽을 권한이 쓸 권한을 주지는 않습니다. 별도의 스코프입니다.

크레딧

모든 도구는 카탈로그에 가격을 함께 실어 보냅니다. 실행 전에 예산을 계산할 수 있다는 뜻입니다. 가격은 추측이 아니라 운영 환경에서 실측했습니다.

구분크레딧
자체 DB시세, 지표, 레벨, 캔들, 내러티브1
외부 호출주식, 토큰, 옵션, 온체인5
임베딩·샌드박스뉴스 검색, 코드 실행20
월 크레딧을 다 쓰면 402와 함께 두 가지 길을 알려 드립니다: 상위 요금제로 가거나, 다음 달 갱신을 기다리기. 초과 청구는 없습니다 — 아무도 예상하지 못한 청구서를 보내느니 거절하는 편이 낫다고 보기 때문입니다.

스킬

도구 목록은 엔진이 알아서 봅니다. 스킬이 담는 것은 스키마로는 보이지 않는 것 — 어떤 순서로 묻고, 숫자를 어떻게 읽어야 속지 않는지입니다.

자산 분석: 데이터에서 결정으로

현재가 → 히스토리 → 객관적 레벨 → 포지셔닝 → 시스템 의견 → 리스크 사이징. 순서가 중요합니다. 거꾸로 가면 이미 정한 크기에 사실을 끼워 맞추게 됩니다.

가설 검증

⚠️ 0이 아니라 배경과 비교하세요. "방향 68% 적중"은 같은 시점의 무작위 진입이 얼마를 주는지 모르면 아무 의미가 없습니다. 그리고 승률은 돈이 아닙니다: 자체 데이터에서 68% 적중이 profit factor 1.04였습니다.

한국 시장

김치 프리미엄에는 두 개의 다리가 있습니다 — 자산 할인과 원화 할인. 합쳐서 읽으면 해석이 틀립니다. 그리고 설명은 하되 예측하지는 않습니다: 하루 이내 구간에서 관계를 찾지 못했습니다(646개 에피소드).

오류 읽기

코드
401키가 없거나, 폐기되었거나, 형식이 틀립니다
403 scope_required키에 해당 권한이 없습니다 — 응답이 어떤 권한인지 알려 줍니다
400 user_id_not_accepted본문에 user_id가 있었습니다. 계정은 키에서 옵니다
429분당 한도 초과. 분당 한도는 서비스를, 월 한도는 예산을 지킵니다
402 over_limit이번 달 크레딧 소진 — 상위 요금제 또는 다음 달