@yolk-sdk/emulators 0.1.0-canary.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2135 -0
  3. package/dist/anthropic.d.mts +269 -0
  4. package/dist/anthropic.d.mts.map +1 -0
  5. package/dist/anthropic.mjs +177 -0
  6. package/dist/anthropic.mjs.map +1 -0
  7. package/dist/chat-completions.d.mts +288 -0
  8. package/dist/chat-completions.d.mts.map +1 -0
  9. package/dist/chat-completions.mjs +451 -0
  10. package/dist/chat-completions.mjs.map +1 -0
  11. package/dist/codex.d.mts +265 -0
  12. package/dist/codex.d.mts.map +1 -0
  13. package/dist/codex.mjs +199 -0
  14. package/dist/codex.mjs.map +1 -0
  15. package/dist/dropbox/api.d.mts +63 -0
  16. package/dist/dropbox/api.d.mts.map +1 -0
  17. package/dist/dropbox/api.mjs +565 -0
  18. package/dist/dropbox/api.mjs.map +1 -0
  19. package/dist/dropbox/state.d.mts +136 -0
  20. package/dist/dropbox/state.d.mts.map +1 -0
  21. package/dist/dropbox/state.mjs +209 -0
  22. package/dist/dropbox/state.mjs.map +1 -0
  23. package/dist/dropbox.d.mts +79 -0
  24. package/dist/dropbox.d.mts.map +1 -0
  25. package/dist/dropbox.mjs +124 -0
  26. package/dist/dropbox.mjs.map +1 -0
  27. package/dist/email-fixtures.d.mts +36 -0
  28. package/dist/email-fixtures.d.mts.map +1 -0
  29. package/dist/email-fixtures.mjs +1080 -0
  30. package/dist/email-fixtures.mjs.map +1 -0
  31. package/dist/email.d.mts +160 -0
  32. package/dist/email.d.mts.map +1 -0
  33. package/dist/email.mjs +608 -0
  34. package/dist/email.mjs.map +1 -0
  35. package/dist/emulator-compose.d.mts +40 -0
  36. package/dist/emulator-compose.d.mts.map +1 -0
  37. package/dist/emulator-compose.mjs +91 -0
  38. package/dist/emulator-compose.mjs.map +1 -0
  39. package/dist/emulator-http.d.mts +53 -0
  40. package/dist/emulator-http.d.mts.map +1 -0
  41. package/dist/emulator-http.mjs +117 -0
  42. package/dist/emulator-http.mjs.map +1 -0
  43. package/dist/emulator-kernel.d.mts +176 -0
  44. package/dist/emulator-kernel.d.mts.map +1 -0
  45. package/dist/emulator-kernel.mjs +413 -0
  46. package/dist/emulator-kernel.mjs.map +1 -0
  47. package/dist/fixture-route.d.mts +129 -0
  48. package/dist/fixture-route.d.mts.map +1 -0
  49. package/dist/fixture-route.mjs +257 -0
  50. package/dist/fixture-route.mjs.map +1 -0
  51. package/dist/fortnox/api.d.mts +92 -0
  52. package/dist/fortnox/api.d.mts.map +1 -0
  53. package/dist/fortnox/api.mjs +750 -0
  54. package/dist/fortnox/api.mjs.map +1 -0
  55. package/dist/fortnox/state.d.mts +533 -0
  56. package/dist/fortnox/state.d.mts.map +1 -0
  57. package/dist/fortnox/state.mjs +612 -0
  58. package/dist/fortnox/state.mjs.map +1 -0
  59. package/dist/fortnox.d.mts +128 -0
  60. package/dist/fortnox.d.mts.map +1 -0
  61. package/dist/fortnox.mjs +403 -0
  62. package/dist/fortnox.mjs.map +1 -0
  63. package/dist/gateway-evaluate-recordings.d.mts +12 -0
  64. package/dist/gateway-evaluate-recordings.d.mts.map +1 -0
  65. package/dist/gateway-evaluate-recordings.mjs +128 -0
  66. package/dist/gateway-evaluate-recordings.mjs.map +1 -0
  67. package/dist/gateway.d.mts +272 -0
  68. package/dist/gateway.d.mts.map +1 -0
  69. package/dist/gateway.mjs +400 -0
  70. package/dist/gateway.mjs.map +1 -0
  71. package/dist/github/api.d.mts +63 -0
  72. package/dist/github/api.d.mts.map +1 -0
  73. package/dist/github/api.mjs +527 -0
  74. package/dist/github/api.mjs.map +1 -0
  75. package/dist/github/state.d.mts +272 -0
  76. package/dist/github/state.d.mts.map +1 -0
  77. package/dist/github/state.mjs +303 -0
  78. package/dist/github/state.mjs.map +1 -0
  79. package/dist/github.d.mts +77 -0
  80. package/dist/github.d.mts.map +1 -0
  81. package/dist/github.mjs +180 -0
  82. package/dist/github.mjs.map +1 -0
  83. package/dist/google/calendar.d.mts +10 -0
  84. package/dist/google/calendar.d.mts.map +1 -0
  85. package/dist/google/calendar.mjs +252 -0
  86. package/dist/google/calendar.mjs.map +1 -0
  87. package/dist/google/drive.d.mts +8 -0
  88. package/dist/google/drive.d.mts.map +1 -0
  89. package/dist/google/drive.mjs +252 -0
  90. package/dist/google/drive.mjs.map +1 -0
  91. package/dist/google/gmail.d.mts +10 -0
  92. package/dist/google/gmail.d.mts.map +1 -0
  93. package/dist/google/gmail.mjs +591 -0
  94. package/dist/google/gmail.mjs.map +1 -0
  95. package/dist/google/shared.d.mts +107 -0
  96. package/dist/google/shared.d.mts.map +1 -0
  97. package/dist/google/shared.mjs +146 -0
  98. package/dist/google/shared.mjs.map +1 -0
  99. package/dist/google/state.d.mts +385 -0
  100. package/dist/google/state.d.mts.map +1 -0
  101. package/dist/google/state.mjs +496 -0
  102. package/dist/google/state.mjs.map +1 -0
  103. package/dist/google.d.mts +75 -0
  104. package/dist/google.d.mts.map +1 -0
  105. package/dist/google.mjs +210 -0
  106. package/dist/google.mjs.map +1 -0
  107. package/dist/linkedin-search/api.d.mts +45 -0
  108. package/dist/linkedin-search/api.d.mts.map +1 -0
  109. package/dist/linkedin-search/api.mjs +181 -0
  110. package/dist/linkedin-search/api.mjs.map +1 -0
  111. package/dist/linkedin-search/state.d.mts +123 -0
  112. package/dist/linkedin-search/state.d.mts.map +1 -0
  113. package/dist/linkedin-search/state.mjs +261 -0
  114. package/dist/linkedin-search/state.mjs.map +1 -0
  115. package/dist/linkedin-search.d.mts +69 -0
  116. package/dist/linkedin-search.d.mts.map +1 -0
  117. package/dist/linkedin-search.mjs +158 -0
  118. package/dist/linkedin-search.mjs.map +1 -0
  119. package/dist/mcp/api.d.mts +44 -0
  120. package/dist/mcp/api.d.mts.map +1 -0
  121. package/dist/mcp/api.mjs +557 -0
  122. package/dist/mcp/api.mjs.map +1 -0
  123. package/dist/mcp/recordings.d.mts +40 -0
  124. package/dist/mcp/recordings.d.mts.map +1 -0
  125. package/dist/mcp/recordings.mjs +2390 -0
  126. package/dist/mcp/recordings.mjs.map +1 -0
  127. package/dist/mcp/state.d.mts +71 -0
  128. package/dist/mcp/state.d.mts.map +1 -0
  129. package/dist/mcp/state.mjs +83 -0
  130. package/dist/mcp/state.mjs.map +1 -0
  131. package/dist/mcp.d.mts +84 -0
  132. package/dist/mcp.d.mts.map +1 -0
  133. package/dist/mcp.mjs +241 -0
  134. package/dist/mcp.mjs.map +1 -0
  135. package/dist/messages.d.mts +183 -0
  136. package/dist/messages.d.mts.map +1 -0
  137. package/dist/messages.mjs +532 -0
  138. package/dist/messages.mjs.map +1 -0
  139. package/dist/microsoft/api.d.mts +47 -0
  140. package/dist/microsoft/api.d.mts.map +1 -0
  141. package/dist/microsoft/api.mjs +178 -0
  142. package/dist/microsoft/api.mjs.map +1 -0
  143. package/dist/microsoft/calendar.d.mts +30 -0
  144. package/dist/microsoft/calendar.d.mts.map +1 -0
  145. package/dist/microsoft/calendar.mjs +271 -0
  146. package/dist/microsoft/calendar.mjs.map +1 -0
  147. package/dist/microsoft/drive.d.mts +36 -0
  148. package/dist/microsoft/drive.d.mts.map +1 -0
  149. package/dist/microsoft/drive.mjs +298 -0
  150. package/dist/microsoft/drive.mjs.map +1 -0
  151. package/dist/microsoft/graph.d.mts +198 -0
  152. package/dist/microsoft/graph.d.mts.map +1 -0
  153. package/dist/microsoft/graph.mjs +264 -0
  154. package/dist/microsoft/graph.mjs.map +1 -0
  155. package/dist/microsoft/mail.d.mts +48 -0
  156. package/dist/microsoft/mail.d.mts.map +1 -0
  157. package/dist/microsoft/mail.mjs +488 -0
  158. package/dist/microsoft/mail.mjs.map +1 -0
  159. package/dist/microsoft/state.d.mts +480 -0
  160. package/dist/microsoft/state.d.mts.map +1 -0
  161. package/dist/microsoft/state.mjs +625 -0
  162. package/dist/microsoft/state.mjs.map +1 -0
  163. package/dist/microsoft.d.mts +168 -0
  164. package/dist/microsoft.d.mts.map +1 -0
  165. package/dist/microsoft.mjs +483 -0
  166. package/dist/microsoft.mjs.map +1 -0
  167. package/dist/node.d.mts +47 -0
  168. package/dist/node.d.mts.map +1 -0
  169. package/dist/node.mjs +178 -0
  170. package/dist/node.mjs.map +1 -0
  171. package/dist/notion/api.d.mts +51 -0
  172. package/dist/notion/api.d.mts.map +1 -0
  173. package/dist/notion/api.mjs +507 -0
  174. package/dist/notion/api.mjs.map +1 -0
  175. package/dist/notion/state.d.mts +329 -0
  176. package/dist/notion/state.d.mts.map +1 -0
  177. package/dist/notion/state.mjs +432 -0
  178. package/dist/notion/state.mjs.map +1 -0
  179. package/dist/notion.d.mts +72 -0
  180. package/dist/notion.d.mts.map +1 -0
  181. package/dist/notion.mjs +127 -0
  182. package/dist/notion.mjs.map +1 -0
  183. package/dist/openai.d.mts +165 -0
  184. package/dist/openai.d.mts.map +1 -0
  185. package/dist/openai.mjs +141 -0
  186. package/dist/openai.mjs.map +1 -0
  187. package/dist/opencode-recordings.d.mts +7 -0
  188. package/dist/opencode-recordings.d.mts.map +1 -0
  189. package/dist/opencode-recordings.mjs +222 -0
  190. package/dist/opencode-recordings.mjs.map +1 -0
  191. package/dist/opencode.d.mts +70 -0
  192. package/dist/opencode.d.mts.map +1 -0
  193. package/dist/opencode.mjs +217 -0
  194. package/dist/opencode.mjs.map +1 -0
  195. package/dist/r2-fixtures.d.mts +36 -0
  196. package/dist/r2-fixtures.d.mts.map +1 -0
  197. package/dist/r2-fixtures.mjs +245 -0
  198. package/dist/r2-fixtures.mjs.map +1 -0
  199. package/dist/r2-guard.d.mts +43 -0
  200. package/dist/r2-guard.d.mts.map +1 -0
  201. package/dist/r2-guard.mjs +215 -0
  202. package/dist/r2-guard.mjs.map +1 -0
  203. package/dist/r2.d.mts +166 -0
  204. package/dist/r2.d.mts.map +1 -0
  205. package/dist/r2.mjs +517 -0
  206. package/dist/r2.mjs.map +1 -0
  207. package/dist/responses.d.mts +231 -0
  208. package/dist/responses.d.mts.map +1 -0
  209. package/dist/responses.mjs +556 -0
  210. package/dist/responses.mjs.map +1 -0
  211. package/dist/route-evidence.d.mts +45 -0
  212. package/dist/route-evidence.d.mts.map +1 -0
  213. package/dist/route-evidence.mjs +56 -0
  214. package/dist/route-evidence.mjs.map +1 -0
  215. package/dist/router.d.mts +93 -0
  216. package/dist/router.d.mts.map +1 -0
  217. package/dist/router.mjs +259 -0
  218. package/dist/router.mjs.map +1 -0
  219. package/dist/stateful-core.d.mts +17 -0
  220. package/dist/stateful-core.d.mts.map +1 -0
  221. package/dist/stateful-core.mjs +41 -0
  222. package/dist/stateful-core.mjs.map +1 -0
  223. package/dist/stateful-emulator.d.mts +565 -0
  224. package/dist/stateful-emulator.d.mts.map +1 -0
  225. package/dist/stateful-emulator.mjs +1228 -0
  226. package/dist/stateful-emulator.mjs.map +1 -0
  227. package/dist/stateful-secrets.d.mts +84 -0
  228. package/dist/stateful-secrets.d.mts.map +1 -0
  229. package/dist/stateful-secrets.mjs +216 -0
  230. package/dist/stateful-secrets.mjs.map +1 -0
  231. package/dist/subscription-usage-recordings.d.mts +9 -0
  232. package/dist/subscription-usage-recordings.d.mts.map +1 -0
  233. package/dist/subscription-usage-recordings.mjs +53 -0
  234. package/dist/subscription-usage-recordings.mjs.map +1 -0
  235. package/dist/subscription-usage.d.mts +53 -0
  236. package/dist/subscription-usage.d.mts.map +1 -0
  237. package/dist/subscription-usage.mjs +21 -0
  238. package/dist/subscription-usage.mjs.map +1 -0
  239. package/dist/telegram/api.d.mts +34 -0
  240. package/dist/telegram/api.d.mts.map +1 -0
  241. package/dist/telegram/api.mjs +257 -0
  242. package/dist/telegram/api.mjs.map +1 -0
  243. package/dist/telegram/state.d.mts +128 -0
  244. package/dist/telegram/state.d.mts.map +1 -0
  245. package/dist/telegram/state.mjs +154 -0
  246. package/dist/telegram/state.mjs.map +1 -0
  247. package/dist/telegram.d.mts +62 -0
  248. package/dist/telegram.d.mts.map +1 -0
  249. package/dist/telegram.mjs +127 -0
  250. package/dist/telegram.mjs.map +1 -0
  251. package/dist/todoist/api.d.mts +55 -0
  252. package/dist/todoist/api.d.mts.map +1 -0
  253. package/dist/todoist/api.mjs +415 -0
  254. package/dist/todoist/api.mjs.map +1 -0
  255. package/dist/todoist/state.d.mts +275 -0
  256. package/dist/todoist/state.d.mts.map +1 -0
  257. package/dist/todoist/state.mjs +345 -0
  258. package/dist/todoist/state.mjs.map +1 -0
  259. package/dist/todoist.d.mts +68 -0
  260. package/dist/todoist.d.mts.map +1 -0
  261. package/dist/todoist.mjs +181 -0
  262. package/dist/todoist.mjs.map +1 -0
  263. package/dist/xai.d.mts +267 -0
  264. package/dist/xai.d.mts.map +1 -0
  265. package/dist/xai.mjs +252 -0
  266. package/dist/xai.mjs.map +1 -0
  267. package/package.json +157 -0
  268. package/src/anthropic.ts +289 -0
  269. package/src/chat-completions.ts +924 -0
  270. package/src/codex.ts +296 -0
  271. package/src/dropbox/api.ts +1084 -0
  272. package/src/dropbox/state.ts +364 -0
  273. package/src/dropbox.ts +203 -0
  274. package/src/email-fixtures.ts +1297 -0
  275. package/src/email.ts +1108 -0
  276. package/src/emulator-compose.ts +147 -0
  277. package/src/emulator-http.ts +184 -0
  278. package/src/emulator-kernel.ts +844 -0
  279. package/src/fixture-route.ts +561 -0
  280. package/src/fortnox/api.ts +1352 -0
  281. package/src/fortnox/state.ts +798 -0
  282. package/src/fortnox.ts +801 -0
  283. package/src/gateway-evaluate-recordings.ts +153 -0
  284. package/src/gateway.ts +530 -0
  285. package/src/github/api.ts +986 -0
  286. package/src/github/state.ts +439 -0
  287. package/src/github.ts +271 -0
  288. package/src/google/calendar.ts +486 -0
  289. package/src/google/drive.ts +471 -0
  290. package/src/google/gmail.ts +1011 -0
  291. package/src/google/shared.ts +321 -0
  292. package/src/google/state.ts +686 -0
  293. package/src/google.ts +298 -0
  294. package/src/linkedin-search/api.ts +363 -0
  295. package/src/linkedin-search/state.ts +373 -0
  296. package/src/linkedin-search.ts +241 -0
  297. package/src/mcp/api.ts +995 -0
  298. package/src/mcp/recordings.ts +2665 -0
  299. package/src/mcp/state.ts +125 -0
  300. package/src/mcp.ts +319 -0
  301. package/src/messages.ts +844 -0
  302. package/src/microsoft/api.ts +426 -0
  303. package/src/microsoft/calendar.ts +491 -0
  304. package/src/microsoft/drive.ts +541 -0
  305. package/src/microsoft/graph.ts +550 -0
  306. package/src/microsoft/mail.ts +833 -0
  307. package/src/microsoft/state.ts +822 -0
  308. package/src/microsoft.ts +982 -0
  309. package/src/node.ts +293 -0
  310. package/src/notion/api.ts +976 -0
  311. package/src/notion/state.ts +512 -0
  312. package/src/notion.ts +210 -0
  313. package/src/openai.ts +198 -0
  314. package/src/opencode-recordings.ts +257 -0
  315. package/src/opencode.ts +271 -0
  316. package/src/r2-fixtures.ts +295 -0
  317. package/src/r2-guard.ts +323 -0
  318. package/src/r2.ts +890 -0
  319. package/src/responses.ts +901 -0
  320. package/src/route-evidence.ts +90 -0
  321. package/src/router.ts +490 -0
  322. package/src/stateful-core.ts +70 -0
  323. package/src/stateful-emulator.ts +2571 -0
  324. package/src/stateful-secrets.ts +299 -0
  325. package/src/subscription-usage-recordings.ts +77 -0
  326. package/src/subscription-usage.ts +68 -0
  327. package/src/telegram/api.ts +437 -0
  328. package/src/telegram/state.ts +229 -0
  329. package/src/telegram.ts +227 -0
  330. package/src/todoist/api.ts +736 -0
  331. package/src/todoist/state.ts +456 -0
  332. package/src/todoist.ts +316 -0
  333. package/src/xai.ts +341 -0
@@ -0,0 +1,2665 @@
1
+ /**
2
+ * The synthetic MCP conformance fixtures, copied as data (internal; never imported from
3
+ * `@yolk-sdk/mcp`): the sixteen `WireFixture`s of `mcpConformanceFixtures` in
4
+ * `@yolk-sdk/mcp/conformance`, in its order, on the two synthetic servers
5
+ * `https://mcp.example.test/modern/mcp` and `https://mcp.example.test/legacy/mcp`.
6
+ * `test/mcp.test.ts` fails when this copy drifts from the source and replays every exchange
7
+ * against the emulator byte for byte. Every value is synthetic; no fixture records
8
+ * `authorization`.
9
+ *
10
+ * @experimental
11
+ */
12
+ import type * as Schema from 'effect/Schema'
13
+
14
+ /** One recorded request: method, URL, the MCP routing and session headers, the JSON-RPC body. */
15
+ export type McpRecordedRequest = {
16
+ readonly method: string
17
+ readonly url: string
18
+ readonly headers: Readonly<Record<string, string>>
19
+ readonly body?: Schema.Json
20
+ }
21
+
22
+ /** One recorded answer: a whole text body, or SSE chunks (chunk boundaries kept). */
23
+ export type McpRecordedResponse =
24
+ | {
25
+ readonly status: number
26
+ readonly headers: Readonly<Record<string, string>>
27
+ readonly body: string
28
+ }
29
+ | {
30
+ readonly status: number
31
+ readonly headers: Readonly<Record<string, string>>
32
+ readonly chunks: ReadonlyArray<string>
33
+ }
34
+
35
+ export type McpRecordedExchange = {
36
+ readonly request: McpRecordedRequest
37
+ readonly response: McpRecordedResponse
38
+ }
39
+
40
+ /** A copied fixture (the `WireFixture` fields, as data). */
41
+ export type McpRecordedFixture = {
42
+ readonly id: string
43
+ readonly caseId: string
44
+ readonly evidence: 'unverified'
45
+ readonly recordedAt: string
46
+ readonly account: string
47
+ readonly endpoint: string
48
+ readonly note: string
49
+ readonly exchanges: ReadonlyArray<McpRecordedExchange>
50
+ }
51
+
52
+ /** Every synthetic MCP fixture, in the order of `mcpConformanceFixtures`. */
53
+ export const mcpEmulatorFixtures: ReadonlyArray<McpRecordedFixture> = [
54
+ {
55
+ id: 'mcp.negotiation.era.modern.synthetic',
56
+ caseId: 'mcp.negotiation.era',
57
+ evidence: 'unverified',
58
+ recordedAt: '2026-10-01',
59
+ account: 'synthetic',
60
+ endpoint: 'https://mcp.example.test/modern/mcp',
61
+ note: 'server/discover answered with supportedVersions ["2026-07-28"]; the client then lists tools statelessly. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
62
+ exchanges: [
63
+ {
64
+ request: {
65
+ method: 'POST',
66
+ url: 'https://mcp.example.test/modern/mcp',
67
+ headers: {
68
+ accept: 'application/json, text/event-stream',
69
+ 'content-type': 'application/json',
70
+ 'mcp-method': 'server/discover',
71
+ 'mcp-protocol-version': '2026-07-28'
72
+ },
73
+ body: {
74
+ jsonrpc: '2.0',
75
+ id: 'server-discover-probe-1',
76
+ method: 'server/discover',
77
+ params: {
78
+ _meta: {
79
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
80
+ 'io.modelcontextprotocol/clientInfo': {
81
+ name: 'yolk',
82
+ version: '0.1.0'
83
+ },
84
+ 'io.modelcontextprotocol/clientCapabilities': {}
85
+ }
86
+ }
87
+ }
88
+ },
89
+ response: {
90
+ status: 200,
91
+ headers: {
92
+ 'content-type': 'application/json'
93
+ },
94
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
95
+ }
96
+ },
97
+ {
98
+ request: {
99
+ method: 'POST',
100
+ url: 'https://mcp.example.test/modern/mcp',
101
+ headers: {
102
+ accept: 'application/json, text/event-stream',
103
+ 'content-type': 'application/json',
104
+ 'mcp-method': 'tools/list',
105
+ 'mcp-protocol-version': '2026-07-28'
106
+ },
107
+ body: {
108
+ jsonrpc: '2.0',
109
+ id: 0,
110
+ method: 'tools/list',
111
+ params: {
112
+ _meta: {
113
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
114
+ 'io.modelcontextprotocol/clientInfo': {
115
+ name: 'yolk',
116
+ version: '0.1.0'
117
+ },
118
+ 'io.modelcontextprotocol/clientCapabilities': {}
119
+ }
120
+ }
121
+ }
122
+ },
123
+ response: {
124
+ status: 200,
125
+ headers: {
126
+ 'content-type': 'application/json'
127
+ },
128
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
129
+ }
130
+ }
131
+ ]
132
+ },
133
+ {
134
+ id: 'mcp.negotiation.era.legacy.synthetic',
135
+ caseId: 'mcp.negotiation.era',
136
+ evidence: 'unverified',
137
+ recordedAt: '2026-10-01',
138
+ account: 'synthetic',
139
+ endpoint: 'https://mcp.example.test/legacy/mcp',
140
+ note: 'server/discover answered 400 with a JSON-RPC error; the client falls back to initialize and lists tools in a session. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
141
+ exchanges: [
142
+ {
143
+ request: {
144
+ method: 'POST',
145
+ url: 'https://mcp.example.test/legacy/mcp',
146
+ headers: {
147
+ accept: 'application/json, text/event-stream',
148
+ 'content-type': 'application/json',
149
+ 'mcp-method': 'server/discover',
150
+ 'mcp-protocol-version': '2026-07-28'
151
+ },
152
+ body: {
153
+ jsonrpc: '2.0',
154
+ id: 'server-discover-probe-1',
155
+ method: 'server/discover',
156
+ params: {
157
+ _meta: {
158
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
159
+ 'io.modelcontextprotocol/clientInfo': {
160
+ name: 'yolk',
161
+ version: '0.1.0'
162
+ },
163
+ 'io.modelcontextprotocol/clientCapabilities': {}
164
+ }
165
+ }
166
+ }
167
+ },
168
+ response: {
169
+ status: 400,
170
+ headers: {
171
+ 'content-type': 'application/json'
172
+ },
173
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
174
+ }
175
+ },
176
+ {
177
+ request: {
178
+ method: 'POST',
179
+ url: 'https://mcp.example.test/legacy/mcp',
180
+ headers: {
181
+ accept: 'application/json, text/event-stream',
182
+ 'content-type': 'application/json'
183
+ },
184
+ body: {
185
+ jsonrpc: '2.0',
186
+ id: 0,
187
+ method: 'initialize',
188
+ params: {
189
+ protocolVersion: '2025-11-25',
190
+ capabilities: {},
191
+ clientInfo: {
192
+ name: 'yolk',
193
+ version: '0.1.0'
194
+ }
195
+ }
196
+ }
197
+ },
198
+ response: {
199
+ status: 200,
200
+ headers: {
201
+ 'content-type': 'text/event-stream',
202
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
203
+ },
204
+ chunks: [
205
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
206
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
207
+ ]
208
+ }
209
+ },
210
+ {
211
+ request: {
212
+ method: 'POST',
213
+ url: 'https://mcp.example.test/legacy/mcp',
214
+ headers: {
215
+ accept: 'application/json, text/event-stream',
216
+ 'content-type': 'application/json',
217
+ 'mcp-protocol-version': '2025-11-25',
218
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
219
+ },
220
+ body: {
221
+ jsonrpc: '2.0',
222
+ method: 'notifications/initialized'
223
+ }
224
+ },
225
+ response: {
226
+ status: 202,
227
+ headers: {},
228
+ body: ''
229
+ }
230
+ },
231
+ {
232
+ request: {
233
+ method: 'GET',
234
+ url: 'https://mcp.example.test/legacy/mcp',
235
+ headers: {
236
+ accept: 'text/event-stream',
237
+ 'mcp-protocol-version': '2025-11-25',
238
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
239
+ }
240
+ },
241
+ response: {
242
+ status: 405,
243
+ headers: {},
244
+ body: ''
245
+ }
246
+ },
247
+ {
248
+ request: {
249
+ method: 'POST',
250
+ url: 'https://mcp.example.test/legacy/mcp',
251
+ headers: {
252
+ accept: 'application/json, text/event-stream',
253
+ 'content-type': 'application/json',
254
+ 'mcp-protocol-version': '2025-11-25',
255
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
256
+ },
257
+ body: {
258
+ jsonrpc: '2.0',
259
+ id: 1,
260
+ method: 'tools/list'
261
+ }
262
+ },
263
+ response: {
264
+ status: 200,
265
+ headers: {
266
+ 'content-type': 'text/event-stream',
267
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
268
+ },
269
+ chunks: [
270
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
271
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
272
+ ]
273
+ }
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ id: 'mcp.modern.stateless.modern.synthetic',
279
+ caseId: 'mcp.modern.stateless',
280
+ evidence: 'unverified',
281
+ recordedAt: '2026-10-01',
282
+ account: 'synthetic',
283
+ endpoint: 'https://mcp.example.test/modern/mcp',
284
+ note: 'A stateless listing and an absent-tool call: routing headers on every request, no session id, results complete. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
285
+ exchanges: [
286
+ {
287
+ request: {
288
+ method: 'POST',
289
+ url: 'https://mcp.example.test/modern/mcp',
290
+ headers: {
291
+ accept: 'application/json, text/event-stream',
292
+ 'content-type': 'application/json',
293
+ 'mcp-method': 'server/discover',
294
+ 'mcp-protocol-version': '2026-07-28'
295
+ },
296
+ body: {
297
+ jsonrpc: '2.0',
298
+ id: 'server-discover-probe-1',
299
+ method: 'server/discover',
300
+ params: {
301
+ _meta: {
302
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
303
+ 'io.modelcontextprotocol/clientInfo': {
304
+ name: 'yolk',
305
+ version: '0.1.0'
306
+ },
307
+ 'io.modelcontextprotocol/clientCapabilities': {}
308
+ }
309
+ }
310
+ }
311
+ },
312
+ response: {
313
+ status: 200,
314
+ headers: {
315
+ 'content-type': 'application/json'
316
+ },
317
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
318
+ }
319
+ },
320
+ {
321
+ request: {
322
+ method: 'POST',
323
+ url: 'https://mcp.example.test/modern/mcp',
324
+ headers: {
325
+ accept: 'application/json, text/event-stream',
326
+ 'content-type': 'application/json',
327
+ 'mcp-method': 'tools/list',
328
+ 'mcp-protocol-version': '2026-07-28'
329
+ },
330
+ body: {
331
+ jsonrpc: '2.0',
332
+ id: 0,
333
+ method: 'tools/list',
334
+ params: {
335
+ _meta: {
336
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
337
+ 'io.modelcontextprotocol/clientInfo': {
338
+ name: 'yolk',
339
+ version: '0.1.0'
340
+ },
341
+ 'io.modelcontextprotocol/clientCapabilities': {}
342
+ }
343
+ }
344
+ }
345
+ },
346
+ response: {
347
+ status: 200,
348
+ headers: {
349
+ 'content-type': 'application/json'
350
+ },
351
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
352
+ }
353
+ },
354
+ {
355
+ request: {
356
+ method: 'POST',
357
+ url: 'https://mcp.example.test/modern/mcp',
358
+ headers: {
359
+ accept: 'application/json, text/event-stream',
360
+ 'content-type': 'application/json',
361
+ 'mcp-method': 'server/discover',
362
+ 'mcp-protocol-version': '2026-07-28'
363
+ },
364
+ body: {
365
+ jsonrpc: '2.0',
366
+ id: 'server-discover-probe-1',
367
+ method: 'server/discover',
368
+ params: {
369
+ _meta: {
370
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
371
+ 'io.modelcontextprotocol/clientInfo': {
372
+ name: 'yolk',
373
+ version: '0.1.0'
374
+ },
375
+ 'io.modelcontextprotocol/clientCapabilities': {}
376
+ }
377
+ }
378
+ }
379
+ },
380
+ response: {
381
+ status: 200,
382
+ headers: {
383
+ 'content-type': 'application/json'
384
+ },
385
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
386
+ }
387
+ },
388
+ {
389
+ request: {
390
+ method: 'POST',
391
+ url: 'https://mcp.example.test/modern/mcp',
392
+ headers: {
393
+ accept: 'application/json, text/event-stream',
394
+ 'content-type': 'application/json',
395
+ 'mcp-method': 'tools/list',
396
+ 'mcp-protocol-version': '2026-07-28'
397
+ },
398
+ body: {
399
+ jsonrpc: '2.0',
400
+ id: 0,
401
+ method: 'tools/list',
402
+ params: {
403
+ _meta: {
404
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
405
+ 'io.modelcontextprotocol/clientInfo': {
406
+ name: 'yolk',
407
+ version: '0.1.0'
408
+ },
409
+ 'io.modelcontextprotocol/clientCapabilities': {}
410
+ }
411
+ }
412
+ }
413
+ },
414
+ response: {
415
+ status: 200,
416
+ headers: {
417
+ 'content-type': 'application/json'
418
+ },
419
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
420
+ }
421
+ },
422
+ {
423
+ request: {
424
+ method: 'POST',
425
+ url: 'https://mcp.example.test/modern/mcp',
426
+ headers: {
427
+ accept: 'application/json, text/event-stream',
428
+ 'content-type': 'application/json',
429
+ 'mcp-method': 'tools/call',
430
+ 'mcp-protocol-version': '2026-07-28',
431
+ 'mcp-name': 'yolk_conformance_absent'
432
+ },
433
+ body: {
434
+ jsonrpc: '2.0',
435
+ id: 1,
436
+ method: 'tools/call',
437
+ params: {
438
+ name: 'yolk_conformance_absent',
439
+ arguments: {},
440
+ _meta: {
441
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
442
+ 'io.modelcontextprotocol/clientInfo': {
443
+ name: 'yolk',
444
+ version: '0.1.0'
445
+ },
446
+ 'io.modelcontextprotocol/clientCapabilities': {}
447
+ }
448
+ }
449
+ }
450
+ },
451
+ response: {
452
+ status: 400,
453
+ headers: {
454
+ 'content-type': 'application/json'
455
+ },
456
+ body: '{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"Tool yolk_conformance_absent not found"}}'
457
+ }
458
+ }
459
+ ]
460
+ },
461
+ {
462
+ id: 'mcp.legacy.session.legacy.synthetic',
463
+ caseId: 'mcp.legacy.session',
464
+ evidence: 'unverified',
465
+ recordedAt: '2026-10-01',
466
+ account: 'synthetic',
467
+ endpoint: 'https://mcp.example.test/legacy/mcp',
468
+ note: 'initialize issues a synthetic session id that every later request echoes; initialized gets 202 and GET gets 405. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
469
+ exchanges: [
470
+ {
471
+ request: {
472
+ method: 'POST',
473
+ url: 'https://mcp.example.test/legacy/mcp',
474
+ headers: {
475
+ accept: 'application/json, text/event-stream',
476
+ 'content-type': 'application/json',
477
+ 'mcp-method': 'server/discover',
478
+ 'mcp-protocol-version': '2026-07-28'
479
+ },
480
+ body: {
481
+ jsonrpc: '2.0',
482
+ id: 'server-discover-probe-1',
483
+ method: 'server/discover',
484
+ params: {
485
+ _meta: {
486
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
487
+ 'io.modelcontextprotocol/clientInfo': {
488
+ name: 'yolk',
489
+ version: '0.1.0'
490
+ },
491
+ 'io.modelcontextprotocol/clientCapabilities': {}
492
+ }
493
+ }
494
+ }
495
+ },
496
+ response: {
497
+ status: 400,
498
+ headers: {
499
+ 'content-type': 'application/json'
500
+ },
501
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
502
+ }
503
+ },
504
+ {
505
+ request: {
506
+ method: 'POST',
507
+ url: 'https://mcp.example.test/legacy/mcp',
508
+ headers: {
509
+ accept: 'application/json, text/event-stream',
510
+ 'content-type': 'application/json'
511
+ },
512
+ body: {
513
+ jsonrpc: '2.0',
514
+ id: 0,
515
+ method: 'initialize',
516
+ params: {
517
+ protocolVersion: '2025-11-25',
518
+ capabilities: {},
519
+ clientInfo: {
520
+ name: 'yolk',
521
+ version: '0.1.0'
522
+ }
523
+ }
524
+ }
525
+ },
526
+ response: {
527
+ status: 200,
528
+ headers: {
529
+ 'content-type': 'text/event-stream',
530
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
531
+ },
532
+ chunks: [
533
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
534
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
535
+ ]
536
+ }
537
+ },
538
+ {
539
+ request: {
540
+ method: 'POST',
541
+ url: 'https://mcp.example.test/legacy/mcp',
542
+ headers: {
543
+ accept: 'application/json, text/event-stream',
544
+ 'content-type': 'application/json',
545
+ 'mcp-protocol-version': '2025-11-25',
546
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
547
+ },
548
+ body: {
549
+ jsonrpc: '2.0',
550
+ method: 'notifications/initialized'
551
+ }
552
+ },
553
+ response: {
554
+ status: 202,
555
+ headers: {},
556
+ body: ''
557
+ }
558
+ },
559
+ {
560
+ request: {
561
+ method: 'GET',
562
+ url: 'https://mcp.example.test/legacy/mcp',
563
+ headers: {
564
+ accept: 'text/event-stream',
565
+ 'mcp-protocol-version': '2025-11-25',
566
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
567
+ }
568
+ },
569
+ response: {
570
+ status: 405,
571
+ headers: {},
572
+ body: ''
573
+ }
574
+ },
575
+ {
576
+ request: {
577
+ method: 'POST',
578
+ url: 'https://mcp.example.test/legacy/mcp',
579
+ headers: {
580
+ accept: 'application/json, text/event-stream',
581
+ 'content-type': 'application/json',
582
+ 'mcp-protocol-version': '2025-11-25',
583
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
584
+ },
585
+ body: {
586
+ jsonrpc: '2.0',
587
+ id: 1,
588
+ method: 'tools/list'
589
+ }
590
+ },
591
+ response: {
592
+ status: 200,
593
+ headers: {
594
+ 'content-type': 'text/event-stream',
595
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
596
+ },
597
+ chunks: [
598
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
599
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
600
+ ]
601
+ }
602
+ }
603
+ ]
604
+ },
605
+ {
606
+ id: 'mcp.transport.response-encoding.modern.synthetic',
607
+ caseId: 'mcp.transport.response-encoding',
608
+ evidence: 'unverified',
609
+ recordedAt: '2026-10-01',
610
+ account: 'synthetic',
611
+ endpoint: 'https://mcp.example.test/modern/mcp',
612
+ note: 'Every answer is application/json holding the response to its request. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
613
+ exchanges: [
614
+ {
615
+ request: {
616
+ method: 'POST',
617
+ url: 'https://mcp.example.test/modern/mcp',
618
+ headers: {
619
+ accept: 'application/json, text/event-stream',
620
+ 'content-type': 'application/json',
621
+ 'mcp-method': 'server/discover',
622
+ 'mcp-protocol-version': '2026-07-28'
623
+ },
624
+ body: {
625
+ jsonrpc: '2.0',
626
+ id: 'server-discover-probe-1',
627
+ method: 'server/discover',
628
+ params: {
629
+ _meta: {
630
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
631
+ 'io.modelcontextprotocol/clientInfo': {
632
+ name: 'yolk',
633
+ version: '0.1.0'
634
+ },
635
+ 'io.modelcontextprotocol/clientCapabilities': {}
636
+ }
637
+ }
638
+ }
639
+ },
640
+ response: {
641
+ status: 200,
642
+ headers: {
643
+ 'content-type': 'application/json'
644
+ },
645
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
646
+ }
647
+ },
648
+ {
649
+ request: {
650
+ method: 'POST',
651
+ url: 'https://mcp.example.test/modern/mcp',
652
+ headers: {
653
+ accept: 'application/json, text/event-stream',
654
+ 'content-type': 'application/json',
655
+ 'mcp-method': 'tools/list',
656
+ 'mcp-protocol-version': '2026-07-28'
657
+ },
658
+ body: {
659
+ jsonrpc: '2.0',
660
+ id: 0,
661
+ method: 'tools/list',
662
+ params: {
663
+ _meta: {
664
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
665
+ 'io.modelcontextprotocol/clientInfo': {
666
+ name: 'yolk',
667
+ version: '0.1.0'
668
+ },
669
+ 'io.modelcontextprotocol/clientCapabilities': {}
670
+ }
671
+ }
672
+ }
673
+ },
674
+ response: {
675
+ status: 200,
676
+ headers: {
677
+ 'content-type': 'application/json'
678
+ },
679
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
680
+ }
681
+ }
682
+ ]
683
+ },
684
+ {
685
+ id: 'mcp.transport.response-encoding.legacy.synthetic',
686
+ caseId: 'mcp.transport.response-encoding',
687
+ evidence: 'unverified',
688
+ recordedAt: '2026-10-01',
689
+ account: 'synthetic',
690
+ endpoint: 'https://mcp.example.test/legacy/mcp',
691
+ note: 'Every answer to a request is text/event-stream: a notification, the response, then the stream ends; 202 has no body. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
692
+ exchanges: [
693
+ {
694
+ request: {
695
+ method: 'POST',
696
+ url: 'https://mcp.example.test/legacy/mcp',
697
+ headers: {
698
+ accept: 'application/json, text/event-stream',
699
+ 'content-type': 'application/json',
700
+ 'mcp-method': 'server/discover',
701
+ 'mcp-protocol-version': '2026-07-28'
702
+ },
703
+ body: {
704
+ jsonrpc: '2.0',
705
+ id: 'server-discover-probe-1',
706
+ method: 'server/discover',
707
+ params: {
708
+ _meta: {
709
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
710
+ 'io.modelcontextprotocol/clientInfo': {
711
+ name: 'yolk',
712
+ version: '0.1.0'
713
+ },
714
+ 'io.modelcontextprotocol/clientCapabilities': {}
715
+ }
716
+ }
717
+ }
718
+ },
719
+ response: {
720
+ status: 400,
721
+ headers: {
722
+ 'content-type': 'application/json'
723
+ },
724
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
725
+ }
726
+ },
727
+ {
728
+ request: {
729
+ method: 'POST',
730
+ url: 'https://mcp.example.test/legacy/mcp',
731
+ headers: {
732
+ accept: 'application/json, text/event-stream',
733
+ 'content-type': 'application/json'
734
+ },
735
+ body: {
736
+ jsonrpc: '2.0',
737
+ id: 0,
738
+ method: 'initialize',
739
+ params: {
740
+ protocolVersion: '2025-11-25',
741
+ capabilities: {},
742
+ clientInfo: {
743
+ name: 'yolk',
744
+ version: '0.1.0'
745
+ }
746
+ }
747
+ }
748
+ },
749
+ response: {
750
+ status: 200,
751
+ headers: {
752
+ 'content-type': 'text/event-stream',
753
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
754
+ },
755
+ chunks: [
756
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
757
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
758
+ ]
759
+ }
760
+ },
761
+ {
762
+ request: {
763
+ method: 'POST',
764
+ url: 'https://mcp.example.test/legacy/mcp',
765
+ headers: {
766
+ accept: 'application/json, text/event-stream',
767
+ 'content-type': 'application/json',
768
+ 'mcp-protocol-version': '2025-11-25',
769
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
770
+ },
771
+ body: {
772
+ jsonrpc: '2.0',
773
+ method: 'notifications/initialized'
774
+ }
775
+ },
776
+ response: {
777
+ status: 202,
778
+ headers: {},
779
+ body: ''
780
+ }
781
+ },
782
+ {
783
+ request: {
784
+ method: 'GET',
785
+ url: 'https://mcp.example.test/legacy/mcp',
786
+ headers: {
787
+ accept: 'text/event-stream',
788
+ 'mcp-protocol-version': '2025-11-25',
789
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
790
+ }
791
+ },
792
+ response: {
793
+ status: 405,
794
+ headers: {},
795
+ body: ''
796
+ }
797
+ },
798
+ {
799
+ request: {
800
+ method: 'POST',
801
+ url: 'https://mcp.example.test/legacy/mcp',
802
+ headers: {
803
+ accept: 'application/json, text/event-stream',
804
+ 'content-type': 'application/json',
805
+ 'mcp-protocol-version': '2025-11-25',
806
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
807
+ },
808
+ body: {
809
+ jsonrpc: '2.0',
810
+ id: 1,
811
+ method: 'tools/list'
812
+ }
813
+ },
814
+ response: {
815
+ status: 200,
816
+ headers: {
817
+ 'content-type': 'text/event-stream',
818
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
819
+ },
820
+ chunks: [
821
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
822
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
823
+ ]
824
+ }
825
+ }
826
+ ]
827
+ },
828
+ {
829
+ id: 'mcp.tools.list.modern.synthetic',
830
+ caseId: 'mcp.tools.list',
831
+ evidence: 'unverified',
832
+ recordedAt: '2026-10-01',
833
+ account: 'synthetic',
834
+ endpoint: 'https://mcp.example.test/modern/mcp',
835
+ note: 'A listing over two tools/list pages joined by one cursor; the second page has no nextCursor. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
836
+ exchanges: [
837
+ {
838
+ request: {
839
+ method: 'POST',
840
+ url: 'https://mcp.example.test/modern/mcp',
841
+ headers: {
842
+ accept: 'application/json, text/event-stream',
843
+ 'content-type': 'application/json',
844
+ 'mcp-method': 'server/discover',
845
+ 'mcp-protocol-version': '2026-07-28'
846
+ },
847
+ body: {
848
+ jsonrpc: '2.0',
849
+ id: 'server-discover-probe-1',
850
+ method: 'server/discover',
851
+ params: {
852
+ _meta: {
853
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
854
+ 'io.modelcontextprotocol/clientInfo': {
855
+ name: 'yolk',
856
+ version: '0.1.0'
857
+ },
858
+ 'io.modelcontextprotocol/clientCapabilities': {}
859
+ }
860
+ }
861
+ }
862
+ },
863
+ response: {
864
+ status: 200,
865
+ headers: {
866
+ 'content-type': 'application/json'
867
+ },
868
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
869
+ }
870
+ },
871
+ {
872
+ request: {
873
+ method: 'POST',
874
+ url: 'https://mcp.example.test/modern/mcp',
875
+ headers: {
876
+ accept: 'application/json, text/event-stream',
877
+ 'content-type': 'application/json',
878
+ 'mcp-method': 'tools/list',
879
+ 'mcp-protocol-version': '2026-07-28'
880
+ },
881
+ body: {
882
+ jsonrpc: '2.0',
883
+ id: 0,
884
+ method: 'tools/list',
885
+ params: {
886
+ _meta: {
887
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
888
+ 'io.modelcontextprotocol/clientInfo': {
889
+ name: 'yolk',
890
+ version: '0.1.0'
891
+ },
892
+ 'io.modelcontextprotocol/clientCapabilities': {}
893
+ }
894
+ }
895
+ }
896
+ },
897
+ response: {
898
+ status: 200,
899
+ headers: {
900
+ 'content-type': 'application/json'
901
+ },
902
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}}],"resultType":"complete","ttlMs":0,"cacheScope":"private","nextCursor":"synthetic-cursor-0001"}}'
903
+ }
904
+ },
905
+ {
906
+ request: {
907
+ method: 'POST',
908
+ url: 'https://mcp.example.test/modern/mcp',
909
+ headers: {
910
+ accept: 'application/json, text/event-stream',
911
+ 'content-type': 'application/json',
912
+ 'mcp-method': 'tools/list',
913
+ 'mcp-protocol-version': '2026-07-28'
914
+ },
915
+ body: {
916
+ jsonrpc: '2.0',
917
+ id: 1,
918
+ method: 'tools/list',
919
+ params: {
920
+ cursor: 'synthetic-cursor-0001',
921
+ _meta: {
922
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
923
+ 'io.modelcontextprotocol/clientInfo': {
924
+ name: 'yolk',
925
+ version: '0.1.0'
926
+ },
927
+ 'io.modelcontextprotocol/clientCapabilities': {}
928
+ }
929
+ }
930
+ }
931
+ },
932
+ response: {
933
+ status: 200,
934
+ headers: {
935
+ 'content-type': 'application/json'
936
+ },
937
+ body: '{"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
938
+ }
939
+ }
940
+ ]
941
+ },
942
+ {
943
+ id: 'mcp.tools.list.legacy.synthetic',
944
+ caseId: 'mcp.tools.list',
945
+ evidence: 'unverified',
946
+ recordedAt: '2026-10-01',
947
+ account: 'synthetic',
948
+ endpoint: 'https://mcp.example.test/legacy/mcp',
949
+ note: 'A listing on one tools/list page in a session. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
950
+ exchanges: [
951
+ {
952
+ request: {
953
+ method: 'POST',
954
+ url: 'https://mcp.example.test/legacy/mcp',
955
+ headers: {
956
+ accept: 'application/json, text/event-stream',
957
+ 'content-type': 'application/json',
958
+ 'mcp-method': 'server/discover',
959
+ 'mcp-protocol-version': '2026-07-28'
960
+ },
961
+ body: {
962
+ jsonrpc: '2.0',
963
+ id: 'server-discover-probe-1',
964
+ method: 'server/discover',
965
+ params: {
966
+ _meta: {
967
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
968
+ 'io.modelcontextprotocol/clientInfo': {
969
+ name: 'yolk',
970
+ version: '0.1.0'
971
+ },
972
+ 'io.modelcontextprotocol/clientCapabilities': {}
973
+ }
974
+ }
975
+ }
976
+ },
977
+ response: {
978
+ status: 400,
979
+ headers: {
980
+ 'content-type': 'application/json'
981
+ },
982
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
983
+ }
984
+ },
985
+ {
986
+ request: {
987
+ method: 'POST',
988
+ url: 'https://mcp.example.test/legacy/mcp',
989
+ headers: {
990
+ accept: 'application/json, text/event-stream',
991
+ 'content-type': 'application/json'
992
+ },
993
+ body: {
994
+ jsonrpc: '2.0',
995
+ id: 0,
996
+ method: 'initialize',
997
+ params: {
998
+ protocolVersion: '2025-11-25',
999
+ capabilities: {},
1000
+ clientInfo: {
1001
+ name: 'yolk',
1002
+ version: '0.1.0'
1003
+ }
1004
+ }
1005
+ }
1006
+ },
1007
+ response: {
1008
+ status: 200,
1009
+ headers: {
1010
+ 'content-type': 'text/event-stream',
1011
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1012
+ },
1013
+ chunks: [
1014
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1015
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
1016
+ ]
1017
+ }
1018
+ },
1019
+ {
1020
+ request: {
1021
+ method: 'POST',
1022
+ url: 'https://mcp.example.test/legacy/mcp',
1023
+ headers: {
1024
+ accept: 'application/json, text/event-stream',
1025
+ 'content-type': 'application/json',
1026
+ 'mcp-protocol-version': '2025-11-25',
1027
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1028
+ },
1029
+ body: {
1030
+ jsonrpc: '2.0',
1031
+ method: 'notifications/initialized'
1032
+ }
1033
+ },
1034
+ response: {
1035
+ status: 202,
1036
+ headers: {},
1037
+ body: ''
1038
+ }
1039
+ },
1040
+ {
1041
+ request: {
1042
+ method: 'GET',
1043
+ url: 'https://mcp.example.test/legacy/mcp',
1044
+ headers: {
1045
+ accept: 'text/event-stream',
1046
+ 'mcp-protocol-version': '2025-11-25',
1047
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1048
+ }
1049
+ },
1050
+ response: {
1051
+ status: 405,
1052
+ headers: {},
1053
+ body: ''
1054
+ }
1055
+ },
1056
+ {
1057
+ request: {
1058
+ method: 'POST',
1059
+ url: 'https://mcp.example.test/legacy/mcp',
1060
+ headers: {
1061
+ accept: 'application/json, text/event-stream',
1062
+ 'content-type': 'application/json',
1063
+ 'mcp-protocol-version': '2025-11-25',
1064
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1065
+ },
1066
+ body: {
1067
+ jsonrpc: '2.0',
1068
+ id: 1,
1069
+ method: 'tools/list'
1070
+ }
1071
+ },
1072
+ response: {
1073
+ status: 200,
1074
+ headers: {
1075
+ 'content-type': 'text/event-stream',
1076
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1077
+ },
1078
+ chunks: [
1079
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1080
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
1081
+ ]
1082
+ }
1083
+ }
1084
+ ]
1085
+ },
1086
+ {
1087
+ id: 'mcp.tools.call-read.modern.synthetic',
1088
+ caseId: 'mcp.tools.call-read',
1089
+ evidence: 'unverified',
1090
+ recordedAt: '2026-10-01',
1091
+ account: 'synthetic',
1092
+ endpoint: 'https://mcp.example.test/modern/mcp',
1093
+ note: 'A listing (the readOnlyHint precondition), then get_synthetic_note answered with structured content matching its output schema. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
1094
+ exchanges: [
1095
+ {
1096
+ request: {
1097
+ method: 'POST',
1098
+ url: 'https://mcp.example.test/modern/mcp',
1099
+ headers: {
1100
+ accept: 'application/json, text/event-stream',
1101
+ 'content-type': 'application/json',
1102
+ 'mcp-method': 'server/discover',
1103
+ 'mcp-protocol-version': '2026-07-28'
1104
+ },
1105
+ body: {
1106
+ jsonrpc: '2.0',
1107
+ id: 'server-discover-probe-1',
1108
+ method: 'server/discover',
1109
+ params: {
1110
+ _meta: {
1111
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1112
+ 'io.modelcontextprotocol/clientInfo': {
1113
+ name: 'yolk',
1114
+ version: '0.1.0'
1115
+ },
1116
+ 'io.modelcontextprotocol/clientCapabilities': {}
1117
+ }
1118
+ }
1119
+ }
1120
+ },
1121
+ response: {
1122
+ status: 200,
1123
+ headers: {
1124
+ 'content-type': 'application/json'
1125
+ },
1126
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
1127
+ }
1128
+ },
1129
+ {
1130
+ request: {
1131
+ method: 'POST',
1132
+ url: 'https://mcp.example.test/modern/mcp',
1133
+ headers: {
1134
+ accept: 'application/json, text/event-stream',
1135
+ 'content-type': 'application/json',
1136
+ 'mcp-method': 'tools/list',
1137
+ 'mcp-protocol-version': '2026-07-28'
1138
+ },
1139
+ body: {
1140
+ jsonrpc: '2.0',
1141
+ id: 0,
1142
+ method: 'tools/list',
1143
+ params: {
1144
+ _meta: {
1145
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1146
+ 'io.modelcontextprotocol/clientInfo': {
1147
+ name: 'yolk',
1148
+ version: '0.1.0'
1149
+ },
1150
+ 'io.modelcontextprotocol/clientCapabilities': {}
1151
+ }
1152
+ }
1153
+ }
1154
+ },
1155
+ response: {
1156
+ status: 200,
1157
+ headers: {
1158
+ 'content-type': 'application/json'
1159
+ },
1160
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
1161
+ }
1162
+ },
1163
+ {
1164
+ request: {
1165
+ method: 'POST',
1166
+ url: 'https://mcp.example.test/modern/mcp',
1167
+ headers: {
1168
+ accept: 'application/json, text/event-stream',
1169
+ 'content-type': 'application/json',
1170
+ 'mcp-method': 'server/discover',
1171
+ 'mcp-protocol-version': '2026-07-28'
1172
+ },
1173
+ body: {
1174
+ jsonrpc: '2.0',
1175
+ id: 'server-discover-probe-1',
1176
+ method: 'server/discover',
1177
+ params: {
1178
+ _meta: {
1179
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1180
+ 'io.modelcontextprotocol/clientInfo': {
1181
+ name: 'yolk',
1182
+ version: '0.1.0'
1183
+ },
1184
+ 'io.modelcontextprotocol/clientCapabilities': {}
1185
+ }
1186
+ }
1187
+ }
1188
+ },
1189
+ response: {
1190
+ status: 200,
1191
+ headers: {
1192
+ 'content-type': 'application/json'
1193
+ },
1194
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
1195
+ }
1196
+ },
1197
+ {
1198
+ request: {
1199
+ method: 'POST',
1200
+ url: 'https://mcp.example.test/modern/mcp',
1201
+ headers: {
1202
+ accept: 'application/json, text/event-stream',
1203
+ 'content-type': 'application/json',
1204
+ 'mcp-method': 'tools/list',
1205
+ 'mcp-protocol-version': '2026-07-28'
1206
+ },
1207
+ body: {
1208
+ jsonrpc: '2.0',
1209
+ id: 0,
1210
+ method: 'tools/list',
1211
+ params: {
1212
+ _meta: {
1213
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1214
+ 'io.modelcontextprotocol/clientInfo': {
1215
+ name: 'yolk',
1216
+ version: '0.1.0'
1217
+ },
1218
+ 'io.modelcontextprotocol/clientCapabilities': {}
1219
+ }
1220
+ }
1221
+ }
1222
+ },
1223
+ response: {
1224
+ status: 200,
1225
+ headers: {
1226
+ 'content-type': 'application/json'
1227
+ },
1228
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
1229
+ }
1230
+ },
1231
+ {
1232
+ request: {
1233
+ method: 'POST',
1234
+ url: 'https://mcp.example.test/modern/mcp',
1235
+ headers: {
1236
+ accept: 'application/json, text/event-stream',
1237
+ 'content-type': 'application/json',
1238
+ 'mcp-method': 'tools/call',
1239
+ 'mcp-protocol-version': '2026-07-28',
1240
+ 'mcp-name': 'get_synthetic_note'
1241
+ },
1242
+ body: {
1243
+ jsonrpc: '2.0',
1244
+ id: 1,
1245
+ method: 'tools/call',
1246
+ params: {
1247
+ name: 'get_synthetic_note',
1248
+ arguments: {
1249
+ noteId: 'note-0001'
1250
+ },
1251
+ _meta: {
1252
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1253
+ 'io.modelcontextprotocol/clientInfo': {
1254
+ name: 'yolk',
1255
+ version: '0.1.0'
1256
+ },
1257
+ 'io.modelcontextprotocol/clientCapabilities': {}
1258
+ }
1259
+ }
1260
+ }
1261
+ },
1262
+ response: {
1263
+ status: 200,
1264
+ headers: {
1265
+ 'content-type': 'application/json'
1266
+ },
1267
+ body: '{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"Synthetic note note-0001."}],"structuredContent":{"noteId":"note-0001","text":"Synthetic note note-0001."},"resultType":"complete"}}'
1268
+ }
1269
+ }
1270
+ ]
1271
+ },
1272
+ {
1273
+ id: 'mcp.tools.call-read.legacy.synthetic',
1274
+ caseId: 'mcp.tools.call-read',
1275
+ evidence: 'unverified',
1276
+ recordedAt: '2026-10-01',
1277
+ account: 'synthetic',
1278
+ endpoint: 'https://mcp.example.test/legacy/mcp',
1279
+ note: 'A listing (the readOnlyHint precondition), then get_synthetic_note answered with structured content matching its output schema. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
1280
+ exchanges: [
1281
+ {
1282
+ request: {
1283
+ method: 'POST',
1284
+ url: 'https://mcp.example.test/legacy/mcp',
1285
+ headers: {
1286
+ accept: 'application/json, text/event-stream',
1287
+ 'content-type': 'application/json',
1288
+ 'mcp-method': 'server/discover',
1289
+ 'mcp-protocol-version': '2026-07-28'
1290
+ },
1291
+ body: {
1292
+ jsonrpc: '2.0',
1293
+ id: 'server-discover-probe-1',
1294
+ method: 'server/discover',
1295
+ params: {
1296
+ _meta: {
1297
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1298
+ 'io.modelcontextprotocol/clientInfo': {
1299
+ name: 'yolk',
1300
+ version: '0.1.0'
1301
+ },
1302
+ 'io.modelcontextprotocol/clientCapabilities': {}
1303
+ }
1304
+ }
1305
+ }
1306
+ },
1307
+ response: {
1308
+ status: 400,
1309
+ headers: {
1310
+ 'content-type': 'application/json'
1311
+ },
1312
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
1313
+ }
1314
+ },
1315
+ {
1316
+ request: {
1317
+ method: 'POST',
1318
+ url: 'https://mcp.example.test/legacy/mcp',
1319
+ headers: {
1320
+ accept: 'application/json, text/event-stream',
1321
+ 'content-type': 'application/json'
1322
+ },
1323
+ body: {
1324
+ jsonrpc: '2.0',
1325
+ id: 0,
1326
+ method: 'initialize',
1327
+ params: {
1328
+ protocolVersion: '2025-11-25',
1329
+ capabilities: {},
1330
+ clientInfo: {
1331
+ name: 'yolk',
1332
+ version: '0.1.0'
1333
+ }
1334
+ }
1335
+ }
1336
+ },
1337
+ response: {
1338
+ status: 200,
1339
+ headers: {
1340
+ 'content-type': 'text/event-stream',
1341
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1342
+ },
1343
+ chunks: [
1344
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1345
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
1346
+ ]
1347
+ }
1348
+ },
1349
+ {
1350
+ request: {
1351
+ method: 'POST',
1352
+ url: 'https://mcp.example.test/legacy/mcp',
1353
+ headers: {
1354
+ accept: 'application/json, text/event-stream',
1355
+ 'content-type': 'application/json',
1356
+ 'mcp-protocol-version': '2025-11-25',
1357
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1358
+ },
1359
+ body: {
1360
+ jsonrpc: '2.0',
1361
+ method: 'notifications/initialized'
1362
+ }
1363
+ },
1364
+ response: {
1365
+ status: 202,
1366
+ headers: {},
1367
+ body: ''
1368
+ }
1369
+ },
1370
+ {
1371
+ request: {
1372
+ method: 'GET',
1373
+ url: 'https://mcp.example.test/legacy/mcp',
1374
+ headers: {
1375
+ accept: 'text/event-stream',
1376
+ 'mcp-protocol-version': '2025-11-25',
1377
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1378
+ }
1379
+ },
1380
+ response: {
1381
+ status: 405,
1382
+ headers: {},
1383
+ body: ''
1384
+ }
1385
+ },
1386
+ {
1387
+ request: {
1388
+ method: 'POST',
1389
+ url: 'https://mcp.example.test/legacy/mcp',
1390
+ headers: {
1391
+ accept: 'application/json, text/event-stream',
1392
+ 'content-type': 'application/json',
1393
+ 'mcp-protocol-version': '2025-11-25',
1394
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1395
+ },
1396
+ body: {
1397
+ jsonrpc: '2.0',
1398
+ id: 1,
1399
+ method: 'tools/list'
1400
+ }
1401
+ },
1402
+ response: {
1403
+ status: 200,
1404
+ headers: {
1405
+ 'content-type': 'text/event-stream',
1406
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1407
+ },
1408
+ chunks: [
1409
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1410
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
1411
+ ]
1412
+ }
1413
+ },
1414
+ {
1415
+ request: {
1416
+ method: 'POST',
1417
+ url: 'https://mcp.example.test/legacy/mcp',
1418
+ headers: {
1419
+ accept: 'application/json, text/event-stream',
1420
+ 'content-type': 'application/json',
1421
+ 'mcp-method': 'server/discover',
1422
+ 'mcp-protocol-version': '2026-07-28'
1423
+ },
1424
+ body: {
1425
+ jsonrpc: '2.0',
1426
+ id: 'server-discover-probe-1',
1427
+ method: 'server/discover',
1428
+ params: {
1429
+ _meta: {
1430
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1431
+ 'io.modelcontextprotocol/clientInfo': {
1432
+ name: 'yolk',
1433
+ version: '0.1.0'
1434
+ },
1435
+ 'io.modelcontextprotocol/clientCapabilities': {}
1436
+ }
1437
+ }
1438
+ }
1439
+ },
1440
+ response: {
1441
+ status: 400,
1442
+ headers: {
1443
+ 'content-type': 'application/json'
1444
+ },
1445
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
1446
+ }
1447
+ },
1448
+ {
1449
+ request: {
1450
+ method: 'POST',
1451
+ url: 'https://mcp.example.test/legacy/mcp',
1452
+ headers: {
1453
+ accept: 'application/json, text/event-stream',
1454
+ 'content-type': 'application/json'
1455
+ },
1456
+ body: {
1457
+ jsonrpc: '2.0',
1458
+ id: 0,
1459
+ method: 'initialize',
1460
+ params: {
1461
+ protocolVersion: '2025-11-25',
1462
+ capabilities: {},
1463
+ clientInfo: {
1464
+ name: 'yolk',
1465
+ version: '0.1.0'
1466
+ }
1467
+ }
1468
+ }
1469
+ },
1470
+ response: {
1471
+ status: 200,
1472
+ headers: {
1473
+ 'content-type': 'text/event-stream',
1474
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1475
+ },
1476
+ chunks: [
1477
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1478
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
1479
+ ]
1480
+ }
1481
+ },
1482
+ {
1483
+ request: {
1484
+ method: 'POST',
1485
+ url: 'https://mcp.example.test/legacy/mcp',
1486
+ headers: {
1487
+ accept: 'application/json, text/event-stream',
1488
+ 'content-type': 'application/json',
1489
+ 'mcp-protocol-version': '2025-11-25',
1490
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1491
+ },
1492
+ body: {
1493
+ jsonrpc: '2.0',
1494
+ method: 'notifications/initialized'
1495
+ }
1496
+ },
1497
+ response: {
1498
+ status: 202,
1499
+ headers: {},
1500
+ body: ''
1501
+ }
1502
+ },
1503
+ {
1504
+ request: {
1505
+ method: 'GET',
1506
+ url: 'https://mcp.example.test/legacy/mcp',
1507
+ headers: {
1508
+ accept: 'text/event-stream',
1509
+ 'mcp-protocol-version': '2025-11-25',
1510
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1511
+ }
1512
+ },
1513
+ response: {
1514
+ status: 405,
1515
+ headers: {},
1516
+ body: ''
1517
+ }
1518
+ },
1519
+ {
1520
+ request: {
1521
+ method: 'POST',
1522
+ url: 'https://mcp.example.test/legacy/mcp',
1523
+ headers: {
1524
+ accept: 'application/json, text/event-stream',
1525
+ 'content-type': 'application/json',
1526
+ 'mcp-protocol-version': '2025-11-25',
1527
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1528
+ },
1529
+ body: {
1530
+ jsonrpc: '2.0',
1531
+ id: 1,
1532
+ method: 'tools/list'
1533
+ }
1534
+ },
1535
+ response: {
1536
+ status: 200,
1537
+ headers: {
1538
+ 'content-type': 'text/event-stream',
1539
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1540
+ },
1541
+ chunks: [
1542
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1543
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
1544
+ ]
1545
+ }
1546
+ },
1547
+ {
1548
+ request: {
1549
+ method: 'POST',
1550
+ url: 'https://mcp.example.test/legacy/mcp',
1551
+ headers: {
1552
+ accept: 'application/json, text/event-stream',
1553
+ 'content-type': 'application/json',
1554
+ 'mcp-protocol-version': '2025-11-25',
1555
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1556
+ },
1557
+ body: {
1558
+ jsonrpc: '2.0',
1559
+ id: 2,
1560
+ method: 'tools/call',
1561
+ params: {
1562
+ name: 'get_synthetic_note',
1563
+ arguments: {
1564
+ noteId: 'note-0001'
1565
+ }
1566
+ }
1567
+ }
1568
+ },
1569
+ response: {
1570
+ status: 200,
1571
+ headers: {
1572
+ 'content-type': 'text/event-stream',
1573
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1574
+ },
1575
+ chunks: [
1576
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1577
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"Synthetic note note-0001."}],"structuredContent":{"noteId":"note-0001","text":"Synthetic note note-0001."}}}\n\n'
1578
+ ]
1579
+ }
1580
+ }
1581
+ ]
1582
+ },
1583
+ {
1584
+ id: 'mcp.tools.call-tool-error.modern.synthetic',
1585
+ caseId: 'mcp.tools.call-tool-error',
1586
+ evidence: 'unverified',
1587
+ recordedAt: '2026-10-01',
1588
+ account: 'synthetic',
1589
+ endpoint: 'https://mcp.example.test/modern/mcp',
1590
+ note: 'A listing (the readOnlyHint precondition), then get_synthetic_note with a numeric noteId answered as a tool result with isError true and text content. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
1591
+ exchanges: [
1592
+ {
1593
+ request: {
1594
+ method: 'POST',
1595
+ url: 'https://mcp.example.test/modern/mcp',
1596
+ headers: {
1597
+ accept: 'application/json, text/event-stream',
1598
+ 'content-type': 'application/json',
1599
+ 'mcp-method': 'server/discover',
1600
+ 'mcp-protocol-version': '2026-07-28'
1601
+ },
1602
+ body: {
1603
+ jsonrpc: '2.0',
1604
+ id: 'server-discover-probe-1',
1605
+ method: 'server/discover',
1606
+ params: {
1607
+ _meta: {
1608
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1609
+ 'io.modelcontextprotocol/clientInfo': {
1610
+ name: 'yolk',
1611
+ version: '0.1.0'
1612
+ },
1613
+ 'io.modelcontextprotocol/clientCapabilities': {}
1614
+ }
1615
+ }
1616
+ }
1617
+ },
1618
+ response: {
1619
+ status: 200,
1620
+ headers: {
1621
+ 'content-type': 'application/json'
1622
+ },
1623
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
1624
+ }
1625
+ },
1626
+ {
1627
+ request: {
1628
+ method: 'POST',
1629
+ url: 'https://mcp.example.test/modern/mcp',
1630
+ headers: {
1631
+ accept: 'application/json, text/event-stream',
1632
+ 'content-type': 'application/json',
1633
+ 'mcp-method': 'tools/list',
1634
+ 'mcp-protocol-version': '2026-07-28'
1635
+ },
1636
+ body: {
1637
+ jsonrpc: '2.0',
1638
+ id: 0,
1639
+ method: 'tools/list',
1640
+ params: {
1641
+ _meta: {
1642
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1643
+ 'io.modelcontextprotocol/clientInfo': {
1644
+ name: 'yolk',
1645
+ version: '0.1.0'
1646
+ },
1647
+ 'io.modelcontextprotocol/clientCapabilities': {}
1648
+ }
1649
+ }
1650
+ }
1651
+ },
1652
+ response: {
1653
+ status: 200,
1654
+ headers: {
1655
+ 'content-type': 'application/json'
1656
+ },
1657
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
1658
+ }
1659
+ },
1660
+ {
1661
+ request: {
1662
+ method: 'POST',
1663
+ url: 'https://mcp.example.test/modern/mcp',
1664
+ headers: {
1665
+ accept: 'application/json, text/event-stream',
1666
+ 'content-type': 'application/json',
1667
+ 'mcp-method': 'server/discover',
1668
+ 'mcp-protocol-version': '2026-07-28'
1669
+ },
1670
+ body: {
1671
+ jsonrpc: '2.0',
1672
+ id: 'server-discover-probe-1',
1673
+ method: 'server/discover',
1674
+ params: {
1675
+ _meta: {
1676
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1677
+ 'io.modelcontextprotocol/clientInfo': {
1678
+ name: 'yolk',
1679
+ version: '0.1.0'
1680
+ },
1681
+ 'io.modelcontextprotocol/clientCapabilities': {}
1682
+ }
1683
+ }
1684
+ }
1685
+ },
1686
+ response: {
1687
+ status: 200,
1688
+ headers: {
1689
+ 'content-type': 'application/json'
1690
+ },
1691
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
1692
+ }
1693
+ },
1694
+ {
1695
+ request: {
1696
+ method: 'POST',
1697
+ url: 'https://mcp.example.test/modern/mcp',
1698
+ headers: {
1699
+ accept: 'application/json, text/event-stream',
1700
+ 'content-type': 'application/json',
1701
+ 'mcp-method': 'tools/list',
1702
+ 'mcp-protocol-version': '2026-07-28'
1703
+ },
1704
+ body: {
1705
+ jsonrpc: '2.0',
1706
+ id: 0,
1707
+ method: 'tools/list',
1708
+ params: {
1709
+ _meta: {
1710
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1711
+ 'io.modelcontextprotocol/clientInfo': {
1712
+ name: 'yolk',
1713
+ version: '0.1.0'
1714
+ },
1715
+ 'io.modelcontextprotocol/clientCapabilities': {}
1716
+ }
1717
+ }
1718
+ }
1719
+ },
1720
+ response: {
1721
+ status: 200,
1722
+ headers: {
1723
+ 'content-type': 'application/json'
1724
+ },
1725
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
1726
+ }
1727
+ },
1728
+ {
1729
+ request: {
1730
+ method: 'POST',
1731
+ url: 'https://mcp.example.test/modern/mcp',
1732
+ headers: {
1733
+ accept: 'application/json, text/event-stream',
1734
+ 'content-type': 'application/json',
1735
+ 'mcp-method': 'tools/call',
1736
+ 'mcp-protocol-version': '2026-07-28',
1737
+ 'mcp-name': 'get_synthetic_note'
1738
+ },
1739
+ body: {
1740
+ jsonrpc: '2.0',
1741
+ id: 1,
1742
+ method: 'tools/call',
1743
+ params: {
1744
+ name: 'get_synthetic_note',
1745
+ arguments: {
1746
+ noteId: 42
1747
+ },
1748
+ _meta: {
1749
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1750
+ 'io.modelcontextprotocol/clientInfo': {
1751
+ name: 'yolk',
1752
+ version: '0.1.0'
1753
+ },
1754
+ 'io.modelcontextprotocol/clientCapabilities': {}
1755
+ }
1756
+ }
1757
+ }
1758
+ },
1759
+ response: {
1760
+ status: 200,
1761
+ headers: {
1762
+ 'content-type': 'application/json'
1763
+ },
1764
+ body: '{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"Invalid arguments: noteId must be a string."}],"isError":true,"resultType":"complete"}}'
1765
+ }
1766
+ }
1767
+ ]
1768
+ },
1769
+ {
1770
+ id: 'mcp.tools.call-tool-error.legacy.synthetic',
1771
+ caseId: 'mcp.tools.call-tool-error',
1772
+ evidence: 'unverified',
1773
+ recordedAt: '2026-10-01',
1774
+ account: 'synthetic',
1775
+ endpoint: 'https://mcp.example.test/legacy/mcp',
1776
+ note: 'A listing (the readOnlyHint precondition), then get_synthetic_note with a numeric noteId answered as a tool result with isError true and text content. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
1777
+ exchanges: [
1778
+ {
1779
+ request: {
1780
+ method: 'POST',
1781
+ url: 'https://mcp.example.test/legacy/mcp',
1782
+ headers: {
1783
+ accept: 'application/json, text/event-stream',
1784
+ 'content-type': 'application/json',
1785
+ 'mcp-method': 'server/discover',
1786
+ 'mcp-protocol-version': '2026-07-28'
1787
+ },
1788
+ body: {
1789
+ jsonrpc: '2.0',
1790
+ id: 'server-discover-probe-1',
1791
+ method: 'server/discover',
1792
+ params: {
1793
+ _meta: {
1794
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1795
+ 'io.modelcontextprotocol/clientInfo': {
1796
+ name: 'yolk',
1797
+ version: '0.1.0'
1798
+ },
1799
+ 'io.modelcontextprotocol/clientCapabilities': {}
1800
+ }
1801
+ }
1802
+ }
1803
+ },
1804
+ response: {
1805
+ status: 400,
1806
+ headers: {
1807
+ 'content-type': 'application/json'
1808
+ },
1809
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
1810
+ }
1811
+ },
1812
+ {
1813
+ request: {
1814
+ method: 'POST',
1815
+ url: 'https://mcp.example.test/legacy/mcp',
1816
+ headers: {
1817
+ accept: 'application/json, text/event-stream',
1818
+ 'content-type': 'application/json'
1819
+ },
1820
+ body: {
1821
+ jsonrpc: '2.0',
1822
+ id: 0,
1823
+ method: 'initialize',
1824
+ params: {
1825
+ protocolVersion: '2025-11-25',
1826
+ capabilities: {},
1827
+ clientInfo: {
1828
+ name: 'yolk',
1829
+ version: '0.1.0'
1830
+ }
1831
+ }
1832
+ }
1833
+ },
1834
+ response: {
1835
+ status: 200,
1836
+ headers: {
1837
+ 'content-type': 'text/event-stream',
1838
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1839
+ },
1840
+ chunks: [
1841
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1842
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
1843
+ ]
1844
+ }
1845
+ },
1846
+ {
1847
+ request: {
1848
+ method: 'POST',
1849
+ url: 'https://mcp.example.test/legacy/mcp',
1850
+ headers: {
1851
+ accept: 'application/json, text/event-stream',
1852
+ 'content-type': 'application/json',
1853
+ 'mcp-protocol-version': '2025-11-25',
1854
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1855
+ },
1856
+ body: {
1857
+ jsonrpc: '2.0',
1858
+ method: 'notifications/initialized'
1859
+ }
1860
+ },
1861
+ response: {
1862
+ status: 202,
1863
+ headers: {},
1864
+ body: ''
1865
+ }
1866
+ },
1867
+ {
1868
+ request: {
1869
+ method: 'GET',
1870
+ url: 'https://mcp.example.test/legacy/mcp',
1871
+ headers: {
1872
+ accept: 'text/event-stream',
1873
+ 'mcp-protocol-version': '2025-11-25',
1874
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1875
+ }
1876
+ },
1877
+ response: {
1878
+ status: 405,
1879
+ headers: {},
1880
+ body: ''
1881
+ }
1882
+ },
1883
+ {
1884
+ request: {
1885
+ method: 'POST',
1886
+ url: 'https://mcp.example.test/legacy/mcp',
1887
+ headers: {
1888
+ accept: 'application/json, text/event-stream',
1889
+ 'content-type': 'application/json',
1890
+ 'mcp-protocol-version': '2025-11-25',
1891
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1892
+ },
1893
+ body: {
1894
+ jsonrpc: '2.0',
1895
+ id: 1,
1896
+ method: 'tools/list'
1897
+ }
1898
+ },
1899
+ response: {
1900
+ status: 200,
1901
+ headers: {
1902
+ 'content-type': 'text/event-stream',
1903
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1904
+ },
1905
+ chunks: [
1906
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1907
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
1908
+ ]
1909
+ }
1910
+ },
1911
+ {
1912
+ request: {
1913
+ method: 'POST',
1914
+ url: 'https://mcp.example.test/legacy/mcp',
1915
+ headers: {
1916
+ accept: 'application/json, text/event-stream',
1917
+ 'content-type': 'application/json',
1918
+ 'mcp-method': 'server/discover',
1919
+ 'mcp-protocol-version': '2026-07-28'
1920
+ },
1921
+ body: {
1922
+ jsonrpc: '2.0',
1923
+ id: 'server-discover-probe-1',
1924
+ method: 'server/discover',
1925
+ params: {
1926
+ _meta: {
1927
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
1928
+ 'io.modelcontextprotocol/clientInfo': {
1929
+ name: 'yolk',
1930
+ version: '0.1.0'
1931
+ },
1932
+ 'io.modelcontextprotocol/clientCapabilities': {}
1933
+ }
1934
+ }
1935
+ }
1936
+ },
1937
+ response: {
1938
+ status: 400,
1939
+ headers: {
1940
+ 'content-type': 'application/json'
1941
+ },
1942
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
1943
+ }
1944
+ },
1945
+ {
1946
+ request: {
1947
+ method: 'POST',
1948
+ url: 'https://mcp.example.test/legacy/mcp',
1949
+ headers: {
1950
+ accept: 'application/json, text/event-stream',
1951
+ 'content-type': 'application/json'
1952
+ },
1953
+ body: {
1954
+ jsonrpc: '2.0',
1955
+ id: 0,
1956
+ method: 'initialize',
1957
+ params: {
1958
+ protocolVersion: '2025-11-25',
1959
+ capabilities: {},
1960
+ clientInfo: {
1961
+ name: 'yolk',
1962
+ version: '0.1.0'
1963
+ }
1964
+ }
1965
+ }
1966
+ },
1967
+ response: {
1968
+ status: 200,
1969
+ headers: {
1970
+ 'content-type': 'text/event-stream',
1971
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1972
+ },
1973
+ chunks: [
1974
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
1975
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
1976
+ ]
1977
+ }
1978
+ },
1979
+ {
1980
+ request: {
1981
+ method: 'POST',
1982
+ url: 'https://mcp.example.test/legacy/mcp',
1983
+ headers: {
1984
+ accept: 'application/json, text/event-stream',
1985
+ 'content-type': 'application/json',
1986
+ 'mcp-protocol-version': '2025-11-25',
1987
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
1988
+ },
1989
+ body: {
1990
+ jsonrpc: '2.0',
1991
+ method: 'notifications/initialized'
1992
+ }
1993
+ },
1994
+ response: {
1995
+ status: 202,
1996
+ headers: {},
1997
+ body: ''
1998
+ }
1999
+ },
2000
+ {
2001
+ request: {
2002
+ method: 'GET',
2003
+ url: 'https://mcp.example.test/legacy/mcp',
2004
+ headers: {
2005
+ accept: 'text/event-stream',
2006
+ 'mcp-protocol-version': '2025-11-25',
2007
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2008
+ }
2009
+ },
2010
+ response: {
2011
+ status: 405,
2012
+ headers: {},
2013
+ body: ''
2014
+ }
2015
+ },
2016
+ {
2017
+ request: {
2018
+ method: 'POST',
2019
+ url: 'https://mcp.example.test/legacy/mcp',
2020
+ headers: {
2021
+ accept: 'application/json, text/event-stream',
2022
+ 'content-type': 'application/json',
2023
+ 'mcp-protocol-version': '2025-11-25',
2024
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2025
+ },
2026
+ body: {
2027
+ jsonrpc: '2.0',
2028
+ id: 1,
2029
+ method: 'tools/list'
2030
+ }
2031
+ },
2032
+ response: {
2033
+ status: 200,
2034
+ headers: {
2035
+ 'content-type': 'text/event-stream',
2036
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2037
+ },
2038
+ chunks: [
2039
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
2040
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
2041
+ ]
2042
+ }
2043
+ },
2044
+ {
2045
+ request: {
2046
+ method: 'POST',
2047
+ url: 'https://mcp.example.test/legacy/mcp',
2048
+ headers: {
2049
+ accept: 'application/json, text/event-stream',
2050
+ 'content-type': 'application/json',
2051
+ 'mcp-protocol-version': '2025-11-25',
2052
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2053
+ },
2054
+ body: {
2055
+ jsonrpc: '2.0',
2056
+ id: 2,
2057
+ method: 'tools/call',
2058
+ params: {
2059
+ name: 'get_synthetic_note',
2060
+ arguments: {
2061
+ noteId: 42
2062
+ }
2063
+ }
2064
+ }
2065
+ },
2066
+ response: {
2067
+ status: 200,
2068
+ headers: {
2069
+ 'content-type': 'text/event-stream',
2070
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2071
+ },
2072
+ chunks: [
2073
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
2074
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"Invalid arguments: noteId must be a string."}],"isError":true}}\n\n'
2075
+ ]
2076
+ }
2077
+ }
2078
+ ]
2079
+ },
2080
+ {
2081
+ id: 'mcp.errors.unknown-tool.modern.synthetic',
2082
+ caseId: 'mcp.errors.unknown-tool',
2083
+ evidence: 'unverified',
2084
+ recordedAt: '2026-10-01',
2085
+ account: 'synthetic',
2086
+ endpoint: 'https://mcp.example.test/modern/mcp',
2087
+ note: 'A listing without the absent tool, then tools/call of it answered HTTP 400 with a JSON-RPC -32602 error carrying the request id. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
2088
+ exchanges: [
2089
+ {
2090
+ request: {
2091
+ method: 'POST',
2092
+ url: 'https://mcp.example.test/modern/mcp',
2093
+ headers: {
2094
+ accept: 'application/json, text/event-stream',
2095
+ 'content-type': 'application/json',
2096
+ 'mcp-method': 'server/discover',
2097
+ 'mcp-protocol-version': '2026-07-28'
2098
+ },
2099
+ body: {
2100
+ jsonrpc: '2.0',
2101
+ id: 'server-discover-probe-1',
2102
+ method: 'server/discover',
2103
+ params: {
2104
+ _meta: {
2105
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2106
+ 'io.modelcontextprotocol/clientInfo': {
2107
+ name: 'yolk',
2108
+ version: '0.1.0'
2109
+ },
2110
+ 'io.modelcontextprotocol/clientCapabilities': {}
2111
+ }
2112
+ }
2113
+ }
2114
+ },
2115
+ response: {
2116
+ status: 200,
2117
+ headers: {
2118
+ 'content-type': 'application/json'
2119
+ },
2120
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
2121
+ }
2122
+ },
2123
+ {
2124
+ request: {
2125
+ method: 'POST',
2126
+ url: 'https://mcp.example.test/modern/mcp',
2127
+ headers: {
2128
+ accept: 'application/json, text/event-stream',
2129
+ 'content-type': 'application/json',
2130
+ 'mcp-method': 'tools/list',
2131
+ 'mcp-protocol-version': '2026-07-28'
2132
+ },
2133
+ body: {
2134
+ jsonrpc: '2.0',
2135
+ id: 0,
2136
+ method: 'tools/list',
2137
+ params: {
2138
+ _meta: {
2139
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2140
+ 'io.modelcontextprotocol/clientInfo': {
2141
+ name: 'yolk',
2142
+ version: '0.1.0'
2143
+ },
2144
+ 'io.modelcontextprotocol/clientCapabilities': {}
2145
+ }
2146
+ }
2147
+ }
2148
+ },
2149
+ response: {
2150
+ status: 200,
2151
+ headers: {
2152
+ 'content-type': 'application/json'
2153
+ },
2154
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
2155
+ }
2156
+ },
2157
+ {
2158
+ request: {
2159
+ method: 'POST',
2160
+ url: 'https://mcp.example.test/modern/mcp',
2161
+ headers: {
2162
+ accept: 'application/json, text/event-stream',
2163
+ 'content-type': 'application/json',
2164
+ 'mcp-method': 'server/discover',
2165
+ 'mcp-protocol-version': '2026-07-28'
2166
+ },
2167
+ body: {
2168
+ jsonrpc: '2.0',
2169
+ id: 'server-discover-probe-1',
2170
+ method: 'server/discover',
2171
+ params: {
2172
+ _meta: {
2173
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2174
+ 'io.modelcontextprotocol/clientInfo': {
2175
+ name: 'yolk',
2176
+ version: '0.1.0'
2177
+ },
2178
+ 'io.modelcontextprotocol/clientCapabilities': {}
2179
+ }
2180
+ }
2181
+ }
2182
+ },
2183
+ response: {
2184
+ status: 200,
2185
+ headers: {
2186
+ 'content-type': 'application/json'
2187
+ },
2188
+ body: '{"jsonrpc":"2.0","id":"server-discover-probe-1","result":{"supportedVersions":["2026-07-28"],"capabilities":{"tools":{}},"resultType":"complete","ttlMs":0,"cacheScope":"private","_meta":{"io.modelcontextprotocol/serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}}'
2189
+ }
2190
+ },
2191
+ {
2192
+ request: {
2193
+ method: 'POST',
2194
+ url: 'https://mcp.example.test/modern/mcp',
2195
+ headers: {
2196
+ accept: 'application/json, text/event-stream',
2197
+ 'content-type': 'application/json',
2198
+ 'mcp-method': 'tools/list',
2199
+ 'mcp-protocol-version': '2026-07-28'
2200
+ },
2201
+ body: {
2202
+ jsonrpc: '2.0',
2203
+ id: 0,
2204
+ method: 'tools/list',
2205
+ params: {
2206
+ _meta: {
2207
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2208
+ 'io.modelcontextprotocol/clientInfo': {
2209
+ name: 'yolk',
2210
+ version: '0.1.0'
2211
+ },
2212
+ 'io.modelcontextprotocol/clientCapabilities': {}
2213
+ }
2214
+ }
2215
+ }
2216
+ },
2217
+ response: {
2218
+ status: 200,
2219
+ headers: {
2220
+ 'content-type': 'application/json'
2221
+ },
2222
+ body: '{"jsonrpc":"2.0","id":0,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}],"resultType":"complete","ttlMs":0,"cacheScope":"private"}}'
2223
+ }
2224
+ },
2225
+ {
2226
+ request: {
2227
+ method: 'POST',
2228
+ url: 'https://mcp.example.test/modern/mcp',
2229
+ headers: {
2230
+ accept: 'application/json, text/event-stream',
2231
+ 'content-type': 'application/json',
2232
+ 'mcp-method': 'tools/call',
2233
+ 'mcp-protocol-version': '2026-07-28',
2234
+ 'mcp-name': 'yolk_conformance_absent'
2235
+ },
2236
+ body: {
2237
+ jsonrpc: '2.0',
2238
+ id: 1,
2239
+ method: 'tools/call',
2240
+ params: {
2241
+ name: 'yolk_conformance_absent',
2242
+ arguments: {},
2243
+ _meta: {
2244
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2245
+ 'io.modelcontextprotocol/clientInfo': {
2246
+ name: 'yolk',
2247
+ version: '0.1.0'
2248
+ },
2249
+ 'io.modelcontextprotocol/clientCapabilities': {}
2250
+ }
2251
+ }
2252
+ }
2253
+ },
2254
+ response: {
2255
+ status: 400,
2256
+ headers: {
2257
+ 'content-type': 'application/json'
2258
+ },
2259
+ body: '{"jsonrpc":"2.0","id":1,"error":{"code":-32602,"message":"Tool yolk_conformance_absent not found"}}'
2260
+ }
2261
+ }
2262
+ ]
2263
+ },
2264
+ {
2265
+ id: 'mcp.errors.unknown-tool.legacy.synthetic',
2266
+ caseId: 'mcp.errors.unknown-tool',
2267
+ evidence: 'unverified',
2268
+ recordedAt: '2026-10-01',
2269
+ account: 'synthetic',
2270
+ endpoint: 'https://mcp.example.test/legacy/mcp',
2271
+ note: 'A listing without the absent tool, then tools/call of it answered HTTP 200 with a JSON-RPC -32602 error event carrying the request id. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
2272
+ exchanges: [
2273
+ {
2274
+ request: {
2275
+ method: 'POST',
2276
+ url: 'https://mcp.example.test/legacy/mcp',
2277
+ headers: {
2278
+ accept: 'application/json, text/event-stream',
2279
+ 'content-type': 'application/json',
2280
+ 'mcp-method': 'server/discover',
2281
+ 'mcp-protocol-version': '2026-07-28'
2282
+ },
2283
+ body: {
2284
+ jsonrpc: '2.0',
2285
+ id: 'server-discover-probe-1',
2286
+ method: 'server/discover',
2287
+ params: {
2288
+ _meta: {
2289
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2290
+ 'io.modelcontextprotocol/clientInfo': {
2291
+ name: 'yolk',
2292
+ version: '0.1.0'
2293
+ },
2294
+ 'io.modelcontextprotocol/clientCapabilities': {}
2295
+ }
2296
+ }
2297
+ }
2298
+ },
2299
+ response: {
2300
+ status: 400,
2301
+ headers: {
2302
+ 'content-type': 'application/json'
2303
+ },
2304
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
2305
+ }
2306
+ },
2307
+ {
2308
+ request: {
2309
+ method: 'POST',
2310
+ url: 'https://mcp.example.test/legacy/mcp',
2311
+ headers: {
2312
+ accept: 'application/json, text/event-stream',
2313
+ 'content-type': 'application/json'
2314
+ },
2315
+ body: {
2316
+ jsonrpc: '2.0',
2317
+ id: 0,
2318
+ method: 'initialize',
2319
+ params: {
2320
+ protocolVersion: '2025-11-25',
2321
+ capabilities: {},
2322
+ clientInfo: {
2323
+ name: 'yolk',
2324
+ version: '0.1.0'
2325
+ }
2326
+ }
2327
+ }
2328
+ },
2329
+ response: {
2330
+ status: 200,
2331
+ headers: {
2332
+ 'content-type': 'text/event-stream',
2333
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2334
+ },
2335
+ chunks: [
2336
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
2337
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
2338
+ ]
2339
+ }
2340
+ },
2341
+ {
2342
+ request: {
2343
+ method: 'POST',
2344
+ url: 'https://mcp.example.test/legacy/mcp',
2345
+ headers: {
2346
+ accept: 'application/json, text/event-stream',
2347
+ 'content-type': 'application/json',
2348
+ 'mcp-protocol-version': '2025-11-25',
2349
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2350
+ },
2351
+ body: {
2352
+ jsonrpc: '2.0',
2353
+ method: 'notifications/initialized'
2354
+ }
2355
+ },
2356
+ response: {
2357
+ status: 202,
2358
+ headers: {},
2359
+ body: ''
2360
+ }
2361
+ },
2362
+ {
2363
+ request: {
2364
+ method: 'GET',
2365
+ url: 'https://mcp.example.test/legacy/mcp',
2366
+ headers: {
2367
+ accept: 'text/event-stream',
2368
+ 'mcp-protocol-version': '2025-11-25',
2369
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2370
+ }
2371
+ },
2372
+ response: {
2373
+ status: 405,
2374
+ headers: {},
2375
+ body: ''
2376
+ }
2377
+ },
2378
+ {
2379
+ request: {
2380
+ method: 'POST',
2381
+ url: 'https://mcp.example.test/legacy/mcp',
2382
+ headers: {
2383
+ accept: 'application/json, text/event-stream',
2384
+ 'content-type': 'application/json',
2385
+ 'mcp-protocol-version': '2025-11-25',
2386
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2387
+ },
2388
+ body: {
2389
+ jsonrpc: '2.0',
2390
+ id: 1,
2391
+ method: 'tools/list'
2392
+ }
2393
+ },
2394
+ response: {
2395
+ status: 200,
2396
+ headers: {
2397
+ 'content-type': 'text/event-stream',
2398
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2399
+ },
2400
+ chunks: [
2401
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
2402
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
2403
+ ]
2404
+ }
2405
+ },
2406
+ {
2407
+ request: {
2408
+ method: 'POST',
2409
+ url: 'https://mcp.example.test/legacy/mcp',
2410
+ headers: {
2411
+ accept: 'application/json, text/event-stream',
2412
+ 'content-type': 'application/json',
2413
+ 'mcp-method': 'server/discover',
2414
+ 'mcp-protocol-version': '2026-07-28'
2415
+ },
2416
+ body: {
2417
+ jsonrpc: '2.0',
2418
+ id: 'server-discover-probe-1',
2419
+ method: 'server/discover',
2420
+ params: {
2421
+ _meta: {
2422
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2423
+ 'io.modelcontextprotocol/clientInfo': {
2424
+ name: 'yolk',
2425
+ version: '0.1.0'
2426
+ },
2427
+ 'io.modelcontextprotocol/clientCapabilities': {}
2428
+ }
2429
+ }
2430
+ }
2431
+ },
2432
+ response: {
2433
+ status: 400,
2434
+ headers: {
2435
+ 'content-type': 'application/json'
2436
+ },
2437
+ body: '{"jsonrpc":"2.0","id":null,"error":{"code":-32000,"message":"Bad Request: Server not initialized"}}'
2438
+ }
2439
+ },
2440
+ {
2441
+ request: {
2442
+ method: 'POST',
2443
+ url: 'https://mcp.example.test/legacy/mcp',
2444
+ headers: {
2445
+ accept: 'application/json, text/event-stream',
2446
+ 'content-type': 'application/json'
2447
+ },
2448
+ body: {
2449
+ jsonrpc: '2.0',
2450
+ id: 0,
2451
+ method: 'initialize',
2452
+ params: {
2453
+ protocolVersion: '2025-11-25',
2454
+ capabilities: {},
2455
+ clientInfo: {
2456
+ name: 'yolk',
2457
+ version: '0.1.0'
2458
+ }
2459
+ }
2460
+ }
2461
+ },
2462
+ response: {
2463
+ status: 200,
2464
+ headers: {
2465
+ 'content-type': 'text/event-stream',
2466
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2467
+ },
2468
+ chunks: [
2469
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
2470
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":0,"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{}},"serverInfo":{"name":"yolk-synthetic-mcp","version":"0.0.0"}}}\n\n'
2471
+ ]
2472
+ }
2473
+ },
2474
+ {
2475
+ request: {
2476
+ method: 'POST',
2477
+ url: 'https://mcp.example.test/legacy/mcp',
2478
+ headers: {
2479
+ accept: 'application/json, text/event-stream',
2480
+ 'content-type': 'application/json',
2481
+ 'mcp-protocol-version': '2025-11-25',
2482
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2483
+ },
2484
+ body: {
2485
+ jsonrpc: '2.0',
2486
+ method: 'notifications/initialized'
2487
+ }
2488
+ },
2489
+ response: {
2490
+ status: 202,
2491
+ headers: {},
2492
+ body: ''
2493
+ }
2494
+ },
2495
+ {
2496
+ request: {
2497
+ method: 'GET',
2498
+ url: 'https://mcp.example.test/legacy/mcp',
2499
+ headers: {
2500
+ accept: 'text/event-stream',
2501
+ 'mcp-protocol-version': '2025-11-25',
2502
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2503
+ }
2504
+ },
2505
+ response: {
2506
+ status: 405,
2507
+ headers: {},
2508
+ body: ''
2509
+ }
2510
+ },
2511
+ {
2512
+ request: {
2513
+ method: 'POST',
2514
+ url: 'https://mcp.example.test/legacy/mcp',
2515
+ headers: {
2516
+ accept: 'application/json, text/event-stream',
2517
+ 'content-type': 'application/json',
2518
+ 'mcp-protocol-version': '2025-11-25',
2519
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2520
+ },
2521
+ body: {
2522
+ jsonrpc: '2.0',
2523
+ id: 1,
2524
+ method: 'tools/list'
2525
+ }
2526
+ },
2527
+ response: {
2528
+ status: 200,
2529
+ headers: {
2530
+ 'content-type': 'text/event-stream',
2531
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2532
+ },
2533
+ chunks: [
2534
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
2535
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"get_synthetic_note","title":"Get a synthetic note","description":"Read one synthetic note by id.","inputSchema":{"type":"object","properties":{"noteId":{"type":"string"}},"required":["noteId"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"noteId":{"type":"string"},"text":{"type":"string"}},"required":["noteId","text"],"additionalProperties":false},"annotations":{"readOnlyHint":true}},{"name":"create_synthetic_note","description":"Create one synthetic note.","inputSchema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false}}]}}\n\n'
2536
+ ]
2537
+ }
2538
+ },
2539
+ {
2540
+ request: {
2541
+ method: 'POST',
2542
+ url: 'https://mcp.example.test/legacy/mcp',
2543
+ headers: {
2544
+ accept: 'application/json, text/event-stream',
2545
+ 'content-type': 'application/json',
2546
+ 'mcp-protocol-version': '2025-11-25',
2547
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2548
+ },
2549
+ body: {
2550
+ jsonrpc: '2.0',
2551
+ id: 2,
2552
+ method: 'tools/call',
2553
+ params: {
2554
+ name: 'yolk_conformance_absent',
2555
+ arguments: {}
2556
+ }
2557
+ }
2558
+ },
2559
+ response: {
2560
+ status: 200,
2561
+ headers: {
2562
+ 'content-type': 'text/event-stream',
2563
+ 'mcp-session-id': 'yolk-synthetic-session-0001'
2564
+ },
2565
+ chunks: [
2566
+ 'event: message\nid: evt-1\ndata: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","data":"synthetic notification"}}\n\n',
2567
+ 'event: message\nid: evt-2\ndata: {"jsonrpc":"2.0","id":2,"error":{"code":-32602,"message":"Tool yolk_conformance_absent not found"}}\n\n'
2568
+ ]
2569
+ }
2570
+ }
2571
+ ]
2572
+ },
2573
+ {
2574
+ id: 'mcp.auth.rejected.modern.synthetic',
2575
+ caseId: 'mcp.auth.rejected',
2576
+ evidence: 'unverified',
2577
+ recordedAt: '2026-10-01',
2578
+ account: 'synthetic',
2579
+ endpoint: 'https://mcp.example.test/modern/mcp',
2580
+ note: 'The era probe sent with the reserved invalid credential (authorization is never recorded), answered 401 with a WWW-Authenticate challenge. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
2581
+ exchanges: [
2582
+ {
2583
+ request: {
2584
+ method: 'POST',
2585
+ url: 'https://mcp.example.test/modern/mcp',
2586
+ headers: {
2587
+ accept: 'application/json, text/event-stream',
2588
+ 'content-type': 'application/json',
2589
+ 'mcp-method': 'server/discover',
2590
+ 'mcp-protocol-version': '2026-07-28'
2591
+ },
2592
+ body: {
2593
+ jsonrpc: '2.0',
2594
+ id: 'server-discover-probe-1',
2595
+ method: 'server/discover',
2596
+ params: {
2597
+ _meta: {
2598
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2599
+ 'io.modelcontextprotocol/clientInfo': {
2600
+ name: 'yolk',
2601
+ version: '0.1.0'
2602
+ },
2603
+ 'io.modelcontextprotocol/clientCapabilities': {}
2604
+ }
2605
+ }
2606
+ }
2607
+ },
2608
+ response: {
2609
+ status: 401,
2610
+ headers: {
2611
+ 'content-type': 'application/json',
2612
+ 'www-authenticate': 'Bearer error="invalid_token"'
2613
+ },
2614
+ body: '{"error":"invalid_token","error_description":"Synthetic rejection."}'
2615
+ }
2616
+ }
2617
+ ]
2618
+ },
2619
+ {
2620
+ id: 'mcp.auth.rejected.legacy.synthetic',
2621
+ caseId: 'mcp.auth.rejected',
2622
+ evidence: 'unverified',
2623
+ recordedAt: '2026-10-01',
2624
+ account: 'synthetic',
2625
+ endpoint: 'https://mcp.example.test/legacy/mcp',
2626
+ note: 'The era probe sent with the reserved invalid credential (authorization is never recorded), answered 401 with a WWW-Authenticate challenge. Synthetic placeholder shaped like the MCP wire the pinned SDK speaks; not recorded from a live service.',
2627
+ exchanges: [
2628
+ {
2629
+ request: {
2630
+ method: 'POST',
2631
+ url: 'https://mcp.example.test/legacy/mcp',
2632
+ headers: {
2633
+ accept: 'application/json, text/event-stream',
2634
+ 'content-type': 'application/json',
2635
+ 'mcp-method': 'server/discover',
2636
+ 'mcp-protocol-version': '2026-07-28'
2637
+ },
2638
+ body: {
2639
+ jsonrpc: '2.0',
2640
+ id: 'server-discover-probe-1',
2641
+ method: 'server/discover',
2642
+ params: {
2643
+ _meta: {
2644
+ 'io.modelcontextprotocol/protocolVersion': '2026-07-28',
2645
+ 'io.modelcontextprotocol/clientInfo': {
2646
+ name: 'yolk',
2647
+ version: '0.1.0'
2648
+ },
2649
+ 'io.modelcontextprotocol/clientCapabilities': {}
2650
+ }
2651
+ }
2652
+ }
2653
+ },
2654
+ response: {
2655
+ status: 401,
2656
+ headers: {
2657
+ 'content-type': 'application/json',
2658
+ 'www-authenticate': 'Bearer error="invalid_token"'
2659
+ },
2660
+ body: '{"error":"invalid_token","error_description":"Synthetic rejection."}'
2661
+ }
2662
+ }
2663
+ ]
2664
+ }
2665
+ ]