All checks were successful
Deploy Gateway / deploy (push) Successful in 2m52s
계약 테스트는 docs/contracts 아래 예제를 golden example로 읽는다.
docs/와 README.md가 ignore되어 있어 예제 파일이 사라졌고 9건이
실패하고 있었다. 문서가 온전했던 마지막 상태(3de052a)에서 복원하고
.gitignore에서 두 항목을 제거한다. 에이전트 산출물인
docs/superpowers/ 제외는 유지한다.
initialize 응답의 capabilities.tools.listChanged를 문서는 true로
적고 있었으나 InitializeHandler는 false를 낸다. 현재 HTTP 단발 응답
transport가 notification을 push할 수 없으므로 false가 맞다. 예제와
architecture.md를 코드에 맞추고, ToolListChangedEvent가 발행되지만
아직 소비되지 않는다는 점과 SSE 도입 시 true로 바꾼다는 조건을
남긴다.
169개 테스트 전부 통과.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9.1 KiB
9.1 KiB
관찰 로그 03 - exa / web_search_exa
- 출처:
MCP_툴_호출_통신_로그_(JSON-RPC) (1).pdf - 원본 생성 시각: 2026-07-13 17:10:33 UTC
- 성격: Agent Builder 솔루션에서 수행한 관찰용 실행 로그. 본 문서는 구현 계약이나 테스트 fixture가 아니다.
헤더 및 실행 메타데이터
| 항목 | 원본 기록 값 |
|---|---|
| transport type | mcp-http |
| request_id | 5720da6c-68cc-44f3-8a1f-73088bddc23d |
| tool_uid | f44207bd-9afb-4bbe-88d7-1cadf9e2779b |
| Tool version | 2.0 |
| 실행 시각 | 2026-07-13 16:53:31 UTC |
| 결과 | ok · 2070ms · truncated=False |
| JSON-RPC 프레임 수 | 5 |
| lifecycle | initialize → notifications/initialized → tools/call |
HTTP 헤더 기록 범위
원본 PDF에는 개별 HTTP request/response header 값이 기록되어 있지 않다. 원본 표의 request_id, tool_uid, version은 실행 메타데이터이며 HTTP header라고 단정하지 않는다.
원본 공통 안내에는 시크릿 및 인증 header가 로깅 전에 [REDACTED]로 마스킹되었다고 명시되어 있다. 따라서 Authorization, Mcp-Session-Id 등 실제 HTTP header 값은 이 문서에 포함하지 않는다.
JSON-RPC 통신 전문
아래는 원본 PDF의 JSON-RPC 프레임을 순서대로 옮긴 전사본이다. 긴 result.content[].text 문자열은 PDF의 시각적 줄바꿈을 보존했으므로, 이 블록 전체를 기계 실행용 단일 JSON payload로 사용하지 않는다.
16:53:31 요청 → initialize
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {
"name": "toolbox-executor",
"version": "0.1.0"
}
}
}
16:53:31 ← 응답 initialize
{
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": {
"listChanged": true
},
"prompts": {
"listChanged": true
},
"resources": {
"listChanged": true
}
},
"serverInfo": {
"name": "exa-search-server",
"title": "Exa",
"version": "3.2.1",
"websiteUrl": "<https://exa.ai>",
"icons": [
{
"src": "<https://exa.ai/images/favicon-32x32.png>",
"mimeType": "image/png",
"sizes": [
"32x32"
]
}
]
}
},
"jsonrpc": "2.0",
"id": 1
}
16:53:31 요청 → notifications/initialized
{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}
16:53:31 요청 → tools/call
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "web_search_exa",
"arguments": {
"query": "site:github.com \"useless\" \"stars\" \"forks\" repository useless",
"numResults": 10.0
}
}
}
16:53:33 ← 응답 tools/call
{
"result": {
"content": [
{
"type": "text",
"text": "Title: gianmarco-mameli/uselessrepo\nURL: <https://github.com/gianmarco-mameli/usele
ssrepo\nPublished:> 2023-04-17T12:26:41.000Z\nAuthor: N/A\nHighlights:\n# Repository: gianmarco-mamel
i/uselessrepo\n...\nThis useless repo is created for versioning a version\n...\n- Stars: 3\n- Forks:
2\n- Watchers: 1\n- Open issues: 0\n- Default branch: main\n- Created: 2023-04-17T12:26:41Z\n- Last p
ush: 2025-05-09T07:38:26Z\n- Contributors: 3 (top: gianmarco-mameli, s0ys4uc3, CrownKingClown)\n...\n
# uselessrepo\n...\nThis useless repo is created for versioning a version\n\n---\n\nTitle: tinkerhub/
useless_project_temp\nURL: <https://github.com/tinkerhub/useless_project_temp\nPublished:> N/A\nAutho
r: N/A\nHighlights:\n# tinkerhub/useless_project_temp\n...\n- Stars: 15\n- Forks: 854\n- Watchers: 15
\n- Open issues: 42\n- Default branch: main\n- Created: 2024-10-23T10:26:22Z\n\n---\n\nTitle: btahir/
uselesshooks\nURL: <https://github.com/btahir/uselesshooks\nPublished:> N/A\nAuthor: N/A\nHighlight
s:\n# btahir/uselesshooks\n...\nA Collection of U\n...\ness React Hooks to impress your coworkers
\n...\n- Stars: 125\n- Forks: 9\n- Watchers: 125\n- Open issues: 3\n- License: MIT License\n- Default
branch: main\n- Created: 2022-12-18T03:03:19Z\n\n---\n\nTitle: dorktoast/turd\nURL: <https://github.c
om/dorktoast/turd\nPublished:> N/A\nAuthor: N/A\nHighlights:\nThe Useless Repo (Duh)\n...\n- Stars: 2
\n- Forks: 0\n- Watchers: 2\n- Open issues: 0\n- Default branch: master\n- Created: 2023-08-22T08:54:
42Z\n\n##\n...\n# TURD: The Useless Repo (Duh)\n...\nThis is the most useless repo on github. Inside
this repo you will find scripts that make your soul hurt.\n\n---\n\nTitle: elierotenberg/useless\nUR
L: <https://github.com/elierotenberg/useless\nPublished:> 2020-05-10T09:53:12.000Z\nAuthor: N/A\nHigh
lights:\n# Repository: elierotenberg/useless\n...\nUseless React hooks\n...\n- Stars: 33\n- Forks: 1
\n- Watchers: 1\n- Open issues: 6\n- Primary language: TypeScript\n- Languages: TypeScript (68.7%), J
avaScript (31.3%)\n- Default branch: master\n- Created: 2020-05-10T09:53:12Z\n- Last push: 2022-03-26
T16:38:59Z\n- Contributors: 1 (top: elierotenberg)\n...\nThis is a library of useless hooks for commo
n non-use-cases.\n\n---\n\nTitle: GitHub - niltok64/the-useless-collection: A collection of software
that serve no purpose other than waste your time. Forking is encouraged!\nURL: <https://github.com/ni
ltok64/the-useless-collection\nPublished:> 2021-11-30T09:35:25.000Z\nAuthor: niltok64\nHighlights:\nG
itHub - niltok64/the-useless-collection: A collection of software that serve no purpose other than wa
ste your time. Forking is encouraged!\n[Skip to content](#start-of-content)\n## Navigation Menu\nTogg
le navigation\n...\n](<https://github>.\n...\n/\n**\n[the-useless-collection](<https://github.com/nil
tok64/the-useless-collection>)\n**\nPublic\n* [Notifications\n](<https://github.com/login?return_to=/
niltok64/the-useless-collection>) You must be signed in to change notification settings\n* [Fork\n0
\n...\n](<https://github.com/login?return_to=/niltok64/the-useless-collection>)\n*\n...\n[\nStar\n1
\n](<https://github.com/login?return_to=/niltok64/the-useless-collection>)\n*\nA collection of softwa
re that serve no purpose other than waste your time. Forking is encouraged!\n[niltok64.github.io/the-
useless-collection/](<https://niltok64.github.io/the-useless-collection/>)\n### License\n...\nstar\n]
(<https://github.com/niltok64/the-useless-collection/stargazers>) [\n0\n...\nforks\n](<https://githu
b.com/niltok64/the-useless-collection/forks>) [\nBranches\n](<https://github.com/niltok64/the-useless
-collection/branches>) [\nTags\n](<https://github.com/niltok64/the-useless-collection/tags>) [\nActiv
ity\n](<https://github.com/niltok64/the-useless-collection/activity>)\n[\n...\nA collection of softwa
re that serve no purpose other than waste your time. Forking is encouraged!\n...\nRequires Python 3.9
for building.\n## Usage\n...\nTo use on Unix-based systems run \"pyinstaller main.\n...\n--onefile
\"\n...\nline in any of the folders. You can also use the executables in\n...\n`automated-build/` fol
der to build all the programs at once.\n## About\nA collection of software that serve no purpose othe
r than waste your time. Forking is encouraged!\n[niltok64.github.io/the-useless-collection/](<http
s://niltok64.github.io/the-useless-collection/>)\n...\nuseless-collection/activity)\n...\n[\n**1**\ns
tar\n](<https://github.com/niltok64/the-useless-collection/stargazers>)\n### Watchers\n...\n[\n**1**
\n...\ncom/niltok64/the-useless-collection/watchers)\n...\n[\n**0**\nforks\n](<https://github.com/nil
tok64/the-useless-collection/forks>)\n[\n\n---\n\nTitle: erikvorhes/Useless-JS\nURL: <https://github.
com/erikvorhes/Useless-JS\nPublished:> N/A\nAuthor: N/A\nHighlights:\n# erikvorhes/Useless-JS\n...\nS
cripts that do nothing or overcomplicate things.\n...\n- Stars: 8\n- Forks: 3\n- Watchers: 8\n- Open
issues: 1\n- License: Do What The F*ck You Want To Public License\n- Default branch: master\n- Create
d: 2011-08-19T14:09:26Z\n\n##\n...\n# Useless JS\n...\nThis is a collection of scripts that don't rea
lly do anything useful.\n...\nI've created a couple script files to get us started. Please add your o
wn!\n\n---\n\nTitle: stac47/libuseless\nURL: <https://github.com/stac47/libuseless\nPublished:> N/A\n
Author: stac47\nHighlights:\n# stac47/libuseless\n...\nThe most useless C++ library in the world
\n...\n- Stars: 0\n- Forks: 0\n- Watchers: 0\n- Open issues: 0\n- License: GNU General Public License
v3.0\n- Default branch: main\n- Created: 2021-01-29T13:34:01Z\n...\nThe most useless C++ library in t
he world\n\n---\n\nTitle: jeku/useless\nURL: <https://github.com/jeku/useless\nPublished:> 2012-08-02
T14:05:01.000Z\nAuthor: jeku\nHighlights:\n# Repository: jeku/useless\n\nquite useless\n...\n- Stars:
1\n- Forks: 0\n- Watchers: 1\n- Open issues: 0\n- Default branch: master\n- Created: 2012-08-02T14:0
5:01Z\n- Last push: 2012-08-02T14:05:01Z\n- Contributors: 1 (top: jeku)\n\n---\n\nTitle: barelyhuman/
useless\nURL: <https://github.com/barelyhuman/useless\nPublished:> N/A\nAuthor: N/A\nHighlights:\n# b
arelyhuman/useless\n...\nA set of useless utilities for javascript\n...\n- Stars: 6\n- Forks: 0\n- Wa
tchers: 6\n- Open issues: 0\n- License: MIT License\n- Default branch: dev\n- Created: 2022-04-14T08:
52:31Z\n\n## Languages\n...\n## README\n\n \n \n A set of useless utilities for javascript \n\n## Doc
umentation\n...\nalready exist somewhere\n...\nand I'm just writing\n...\nto feel good about having m
y own set of utilties.",
"_meta": {
"searchTime": 1216.7
}
}
]
},
"jsonrpc": "2.0",
"id": 3
}