5cfb8a1이 .gitignore에 docs/를 넣고 68개 파일을 지웠다. 그런데
AgentBuilderContractExampleTest, ToolBundleContractExampleTest,
ArchitectureDocumentContractTest는 docs/ 아래 계약 예제와 architecture
문서를 입력으로 직접 읽는다. 그 결과 clean clone에서 테스트 10건이
입력을 찾지 못해 실패했다.
제외 범위를 원래 의도대로 좁힌다. 에이전트 산출물(AGENTS.md, .agents/,
.codex/, docs/superpowers/)은 계속 제외하고 저장소 문서는 추적한다.
문서는 삭제 직전 상태(3de052a)를 기준으로 복원하고, 그 위에 main 코드와
대조해 어긋난 부분을 고쳤다.
- ADR-0007을 Superseded로 바꾸고 ADR-0013을 새로 쓴다. route당 Tool
Service N개가 최종안이며, PortalToolRegistryClient가 이미 route별로
N개를 유지하고 있는데 ADR-0007은 "bundles는 항상 한 항목"을 Accepted
상태로 주장하고 있었다. ADR-0009 결정 4도 부분 대체한다.
- ADR-0008 파일 헤더가 Accepted였으나 ADR-0009가 이미 대체한 상태였다.
- 6078852의 endpoint 소유권 반전이 반영되지 않은 서술을 계약 v0.2,
bundle 설정 예제, Tool 적재 안내에서 고친다.
- Portal registry 계약 v0.1과 route key 규약을 새로 문서화한다. 둘 다
구현은 있는데 계약 문서가 없었다.
- MCP SDK 2.0.0 SBOM을 추가한다.
번호 주석: ADR-0011과 0012는 feature/mcp-integration이 Tool inputSchema
정책에 쓰고 있어 비워 둔다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
9.5 KiB
9.5 KiB
관찰 로그 01 - 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 | 045992d3-9683-4409-9613-e355a3eb05e1 |
| tool_uid | f44207bd-9afb-4bbe-88d7-1cadf9e2779b |
| Tool version | 2.0 |
| 실행 시각 | 2026-07-13 16:53:16 UTC |
| 결과 | ok · 1896ms · 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:16 요청 → initialize
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {
"name": "toolbox-executor",
"version": "0.1.0"
}
}
}
16:53:16 ← 응답 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:16 요청 → notifications/initialized
{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}
16:53:17 요청 → tools/call
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "web_search_exa",
"arguments": {
"query": "most popular useless github repository stars useless repo",
"numResults": 10.0
}
}
}
16:53:18 ← 응답 tools/call
{
"result": {
"content": [
{
"type": "text",
"text": "Title: btahir/uselesshooks\nURL: <https://github.com/btahir/uselesshooks\nPublished:
> N/A\nAuthor: N/A\nHighlights:\n# btahir/us\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\n
Title: Useless-Garbage-Institute/useless-garbage\nURL: <https://github.com/Useless-Garbage-Institute/
useless-garbage\nPublished:> 2015-08-27T22:14:06.000Z\nAuthor: N/A\nHighlights:\n# Repository: Useles
s-Garbage-Institute/useless-garbage\n...\nThe most profoundly useless javascript library ever invente
d.\n...\n- Stars: 6\n- Forks: 1\n- Watchers: 6\n- Open issues: 1\n- Primary language: JavaScript\n- L
anguages: JavaScript\n- Default branch: master\n- Created: 2015-08-27T22:14:06Z\n- Last push: 2015-09
-01T01:14:37Z\n- Contributors: 2 (top: kriztynna, cgalbiati)\n...\nThe useless-garbage library is the
only npm module that is guaranteed to have no redeemable functionality whatsoever. There are plenty o
f helpful JavaScript libraries out there, and some that are of questionable utility, but none that ar
e share our commitment to utter uselessness.\n\n---\n\nTitle: tomekw/whatever\nURL: <https://github.c
om/tomekw/whatever\nPublished:> N/A\nAuthor: N/A\nHighlights:\n- Stars: 281\n- Forks: 115\n- Watcher
s: 281\n- Open issues: 2\n- Default branch: master\n- Created: 2014-10-10T15:51:31Z\n\n---\n\nTitle:
thecodersroom/the-button-that-does-nothing\nURL: <https://github.com/thecodersroom/the-button-that-do
es-nothing\nPublished:> 2025-10-06T18:39:22.000Z\nAuthor: N/A\nHighlights:\n# Repository: thecodersro
om/the-button-that-does-nothing\n...\nthat looks important\n...\nliterally does nothing\n...\n- Star
s: 21\n- Forks: 67\n- Watchers: 0\n- Open issues: 24\n- Primary language: JavaScript\n- Languages: Ja
vaScript (45.4%), CSS (41.9%), HTML (12.7%)\n- License: MIT License (MIT)\n- Topics: css, hacktoberfe
st, hacktoberfest-accepted, html, javascript\n- Default branch: main\n- Homepage: <https://thecodersr
oom.github.io/the-button-that-does-nothing/\n-> Created: 2025-10-06T18:39:22Z\n- Last push: 2025-11-0
4T09:02:47Z\n- Contributors: 60 (top: AbdulKhadhar, AdZard69, Moksh-Mutreja, AshaSaini-033, akshith28
55, kronpatel, ahmedrazabaloch, AhishRagav, Nl-T-lN, vanshikap21)\n...\nbuilt entirely with **\n\n---
\n\nTitle: GitHub - niltok64/the-useless-collection: A collection of software that serve no purpose o
ther than waste your time. Forking is encouraged!\nURL: <https://github.com/niltok64/the-useless-coll
ection\nPublished:> 2021-11-30T09:35:25.000Z\nAuthor: niltok64\nHighlights:\n64/the\n...\nuseless-col
lection\n...\n[\nStar\n1\n](<https://github.com/login?return_to=/niltok64/the-useless-collection>)\n*
\nA collection of software 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...\n://github.com/niltok64/the-useless-collection/forks)\n...\n://github.com/niltok64/the-useless-
collection/branches) [\n...\n://github.com/niltok64/the-useless-collection/tags) [\nActivity
\n...\n://github.\n...\n/nilt\n...\nthe-useless-collection\n...\n[\n**1**\nstar\n](<https://github.co
m/niltok64/the-useless-collection/stargazers>)\n...\n### Watchers\n\n---\n\nTitle: GitHub - needless-
org/needless: The JavaScript library you never asked for, never needed, and probably shouldn't use. B
ut here we are!\nURL: <https://github.com/needless-org/needless\nPublished:> 2023-09-05T14:04:16.000Z
\nAuthor: needless-org\nHighlights:\nGitHub - needless-org/needless: The JavaScript library you never
asked for, never needed, and probably shouldn't use. But here we are!\n...\n[Skip to\n...\nneedless-o
rg/needless)\n...\nhttps://github\n...\ncom/login?return_to=/needless-org/needless)\n...\n[\nStar\n1
\n](<https://github.com/login?return_to=/needless-org/needless>)\n*\nThe JavaScript library you never
asked for, never needed, and probably shouldn't use. But here we are!\n...\n[\n1\nstar\n](<https://gi
thub.com/needless-org/needless/stargazers>) [\n0\nforks\n](<https://github.com/needless-org/needless/
forks>) [\nBranches\n](<https://github.com/needless-org/needless/branches>) [\nTags\n](<https://githu
b.com/needless-org/needless/tags>) [\nActivity\n](<https://github.com/needless-org/needless/activity
>)\n[\n...\nneedless-\n...\nneedless)\n...\nThe JavaScript library you never asked for, never needed,
and probably shouldn't use. But here we are!\n...\n\"My project is running too\n...\nwish there was
\n...\nadd some completely unnecessary\n...\nno further!\n...\nIntroducing `needless-js`, the world's
first and foremost pointless library. We bring the \"Why?\" into \"Why is this even a thing?\".\n## F
eatures\n...\n1. **Absolutely Useless**: Doesn't fix any problems because it doesn't know what proble
ms are.\n2. **Hilariously Redundant**: Why have one function when you can have ten doing the same thi
ng?\n3. **Zero Dependencies**: Mainly because no other library wants to be associated with us.\n4. **
Eco-friendly**: Uses 0% CPU because it does absolutely nothing.\n## Installation\n...\n[\n**1**\nstar
\n...\n](<https://github.com/needless-org/needless/stargazers>)\n\n---\n\nTitle: GitHub - terremoth/a
wesome-hilarious-repos\nURL: <https://github.com/terremoth/awesome-hilarious-repos\nPublished:> N/A\n
Author: N/A\nHighlights:\nAwesome Hilarious Github Repositories. Awesome license. GitHub contributor
s. List of all (?) available and funniest Github repos. Contribute if you know others!\n\n---\n\nTitl
e: SuavePirate/Xamarin.Yeet\nURL: <https://github.com/SuavePirate/Xamarin.Yeet\nPublished:> 2020-02-2
2T21:16:23.000Z\nAuthor: N/A\nHighlights:\n# Repository: SuavePirate/Xamarin.Yeet\n...\nAn absolutely
useless tool to yeet your components off the screen.\n...\n- Stars: 2\n- Forks: 1\n- Watchers: 1\n- O
pen issues: 0\n- Primary language: C#\n- Languages: C#\n- License: MIT License (MIT)\n- Default branc
h: master\n- Created: 2020-02-22T21:16:23Z\n- Last push: 2020-02-22T21:31:11Z\n- Contributors: 1 (to
p: SuavePirate)\n...\nAn absolutely useless tool to yeet your components off the screen.\n\n---\n\nTi
tle: nico-garnier/useless-repo\nURL: <https://github.com/nico-garnier/useless-repo\nPublished:> 2020-
12-03T11:49:46.000Z\nAuthor: N/A\nHighlights:\n# Repository: nico-garnier/useless-repo\n...\n- Stars:
1\n- Forks: 0\n- Watchers: 2\n- Open issues: 0\n- Default branch: main\n- Created: 2020-12-03T11:49:4
6Z\n- Last push: 2020-12-03T14:16:57Z\n- Contributors: 2 (top: nico-garnier, eilenilec)\n...\n# usele
ss-repo\n...\nFor github stat on top collaborators only.\n\n---\n\nTitle: elierotenberg/useless | Git
Hub | Open Source Insights\nURL: <https://deps.dev/project/github/elierotenberg%2fuseless\nPublished:
> N/A\nAuthor: N/A\nHighlights:\nelierotenberg/useless | GitHub | Open Source Insights\n...\n# eliero
tenberg/useless\n...\n33 stars",
"_meta": {
"searchTime": 1071.9
}
}
]
},
"jsonrpc": "2.0",
"id": 3
}