@toa.io/extensions.exposition 1.0.0-alpha.291 → 1.0.0-alpha.293

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 (526) hide show
  1. package/components/identity.basic/package.json +8 -0
  2. package/components/identity.federation/package.json +8 -0
  3. package/components/identity.passkeys/package.json +8 -0
  4. package/components/identity.tokens/package.json +10 -0
  5. package/package.json +25 -13
  6. package/transpiled/Discovery/Explorer.js +1 -1
  7. package/transpiled/Discovery/Explorer.js.map +1 -1
  8. package/transpiled/Discovery/Site.js +1 -1
  9. package/transpiled/Discovery/Site.js.map +1 -1
  10. package/transpiled/Discovery/trunk.js +1 -1
  11. package/transpiled/Discovery/trunk.js.map +1 -1
  12. package/transpiled/Endpoint.js +3 -0
  13. package/transpiled/Endpoint.js.map +1 -1
  14. package/transpiled/Factory.js +1 -1
  15. package/transpiled/Factory.js.map +1 -1
  16. package/transpiled/Gateway.js +1 -1
  17. package/transpiled/Gateway.js.map +1 -1
  18. package/transpiled/HTTP/Server.d.ts +1 -1
  19. package/transpiled/HTTP/Server.js +1 -1
  20. package/transpiled/HTTP/Server.js.map +1 -1
  21. package/transpiled/Introspection.d.ts +6 -0
  22. package/transpiled/Introspection.js +1 -0
  23. package/transpiled/Introspection.js.map +1 -1
  24. package/transpiled/MCP/Server.d.ts +1 -1
  25. package/transpiled/MCP/Server.js +1 -1
  26. package/transpiled/MCP/Server.js.map +1 -1
  27. package/transpiled/MCP/discover.d.ts +1 -1
  28. package/transpiled/MCP/schema.js +2 -2
  29. package/transpiled/Query.d.ts +2 -12
  30. package/transpiled/Query.js +3 -13
  31. package/transpiled/Query.js.map +1 -1
  32. package/transpiled/RPC/Dispatcher.d.ts +1 -1
  33. package/transpiled/RPC/Dispatcher.js +2 -2
  34. package/transpiled/RPC/Dispatcher.js.map +1 -1
  35. package/transpiled/RTD/Endpoint.d.ts +2 -3
  36. package/transpiled/RTD/Tree.js +1 -1
  37. package/transpiled/RTD/Tree.js.map +1 -1
  38. package/transpiled/RTD/factory.js +1 -1
  39. package/transpiled/RTD/factory.js.map +1 -1
  40. package/transpiled/RTD/syntax/index.d.ts +1 -2
  41. package/transpiled/RTD/syntax/index.js +1 -2
  42. package/transpiled/RTD/syntax/index.js.map +1 -1
  43. package/transpiled/Tenant.js +1 -1
  44. package/transpiled/Tenant.js.map +1 -1
  45. package/transpiled/directives/auth/Authorization.js +1 -1
  46. package/transpiled/directives/auth/Authorization.js.map +1 -1
  47. package/transpiled/directives/io/IO.js +1 -1
  48. package/transpiled/directives/io/IO.js.map +1 -1
  49. package/transpiled/directives/oauth/documents.d.ts +1 -1
  50. package/transpiled/index.d.ts +0 -2
  51. package/transpiled/index.js +0 -2
  52. package/transpiled/index.js.map +1 -1
  53. package/transpiled/service.js +1 -1
  54. package/transpiled/service.js.map +1 -1
  55. package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
  56. package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
  57. package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
  58. package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
  59. package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
  60. package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
  61. package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
  62. package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
  63. package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
  64. package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
  65. package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
  66. package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
  67. package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
  68. package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
  69. package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
  70. package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
  71. package/ui/dist/_app/version.json +1 -1
  72. package/ui/dist/index.html +12 -12
  73. package/CHANGELOG.md +0 -35
  74. package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
  75. package/components/identity.basic/source/lib/credentials.test.ts +0 -18
  76. package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
  77. package/components/identity.clients/source/lib/canonical.test.ts +0 -43
  78. package/components/identity.clients/source/lib/cimd.test.ts +0 -122
  79. package/components/identity.clients/source/lib/redirect.test.ts +0 -47
  80. package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
  81. package/components/identity.credentials/source/list.test.ts +0 -70
  82. package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
  83. package/components/identity.federation/source/lib/discovery.test.ts +0 -60
  84. package/components/identity.federation/source/list.test.ts +0 -41
  85. package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
  86. package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
  87. package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
  88. package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
  89. package/components/identity.passkeys/source/errors.test.ts +0 -34
  90. package/components/identity.passkeys/source/webauthn.test.ts +0 -26
  91. package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
  92. package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
  93. package/components/identity.tokens/source/authenticate.test.ts +0 -112
  94. package/components/identity.tokens/source/decrypt.test.ts +0 -216
  95. package/components/identity.tokens/source/encrypt.test.ts +0 -150
  96. package/components/identity.tokens/source/issue.test.ts +0 -73
  97. package/components/identity.tokens/source/lib/form.test.ts +0 -25
  98. package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
  99. package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
  100. package/context.toa.yaml +0 -31
  101. package/cucumber.mjs +0 -7
  102. package/documentation/.assets/ia3-dark.jpg +0 -0
  103. package/documentation/.assets/ia3-light.jpg +0 -0
  104. package/documentation/.assets/overview-dark.jpg +0 -0
  105. package/documentation/.assets/overview-light.jpg +0 -0
  106. package/documentation/.assets/role-scopes-dark.jpg +0 -0
  107. package/documentation/.assets/role-scopes-light.jpg +0 -0
  108. package/documentation/.assets/rtd-dark.jpg +0 -0
  109. package/documentation/.assets/rtd-light.jpg +0 -0
  110. package/documentation/access.md +0 -350
  111. package/documentation/authorities.md +0 -51
  112. package/documentation/cache.md +0 -72
  113. package/documentation/components.md +0 -472
  114. package/documentation/consent.md +0 -101
  115. package/documentation/credentials.md +0 -88
  116. package/documentation/dev.md +0 -30
  117. package/documentation/discovery.md +0 -81
  118. package/documentation/flow.md +0 -44
  119. package/documentation/help.md +0 -122
  120. package/documentation/identity.md +0 -304
  121. package/documentation/introspection.md +0 -123
  122. package/documentation/io.md +0 -167
  123. package/documentation/ip.md +0 -24
  124. package/documentation/map.md +0 -123
  125. package/documentation/mcp.md +0 -183
  126. package/documentation/notes/desync.jpg +0 -0
  127. package/documentation/notes/peers.md +0 -59
  128. package/documentation/notes/sse.md +0 -71
  129. package/documentation/notes/throttling.md +0 -122
  130. package/documentation/oauth.md +0 -180
  131. package/documentation/octets.md +0 -334
  132. package/documentation/passkeys.md +0 -11
  133. package/documentation/protocol.md +0 -120
  134. package/documentation/query.md +0 -324
  135. package/documentation/require.md +0 -15
  136. package/documentation/rpc.md +0 -154
  137. package/documentation/tracing.md +0 -70
  138. package/documentation/tree.md +0 -199
  139. package/features/access.feature +0 -596
  140. package/features/annotation.feature +0 -32
  141. package/features/auth.assert.feature +0 -55
  142. package/features/auth.bearer.feature +0 -120
  143. package/features/auth.claims.feature +0 -171
  144. package/features/auth.incept.feature +0 -166
  145. package/features/auth.input.feature +0 -59
  146. package/features/authorities.basic.feature +0 -141
  147. package/features/authorities.feature +0 -71
  148. package/features/authorities.federation.feature +0 -100
  149. package/features/authorities.tokens.feature +0 -117
  150. package/features/body.feature +0 -76
  151. package/features/cache.feature +0 -368
  152. package/features/configuration.feature +0 -206
  153. package/features/cors.feature +0 -127
  154. package/features/credentials.feature +0 -106
  155. package/features/debug.feature +0 -34
  156. package/features/dev.feature +0 -90
  157. package/features/directives.feature +0 -61
  158. package/features/discovery.feature +0 -213
  159. package/features/discovery.ui.feature +0 -213
  160. package/features/dynamic.feature +0 -192
  161. package/features/errors.feature +0 -258
  162. package/features/etag.feature +0 -239
  163. package/features/flow.feature +0 -148
  164. package/features/help.feature +0 -512
  165. package/features/identity.bans.feature +0 -200
  166. package/features/identity.basic.feature +0 -666
  167. package/features/identity.feature +0 -240
  168. package/features/identity.federation.feature +0 -396
  169. package/features/identity.otp.feature +0 -142
  170. package/features/identity.roles.feature +0 -568
  171. package/features/identity.tokens.custom.feature +0 -430
  172. package/features/identity.tokens.feature +0 -131
  173. package/features/interruptions.feature +0 -20
  174. package/features/introspection.feature +0 -565
  175. package/features/introspection.map.feature +0 -108
  176. package/features/io.feature +0 -204
  177. package/features/io.throttle.feature +0 -166
  178. package/features/map.feature +0 -360
  179. package/features/mcp.feature +0 -753
  180. package/features/methods.feature +0 -48
  181. package/features/oauth.clients.feature +0 -195
  182. package/features/oauth.discovery.feature +0 -164
  183. package/features/oauth.grants.feature +0 -301
  184. package/features/octets.cloudinary.feature +0 -233
  185. package/features/octets.download.feature +0 -194
  186. package/features/octets.entries.feature +0 -83
  187. package/features/octets.feature +0 -306
  188. package/features/octets.head.feature +0 -40
  189. package/features/octets.location.feature +0 -83
  190. package/features/octets.meta.feature +0 -117
  191. package/features/octets.workflows.feature +0 -565
  192. package/features/passkeys.feature +0 -66
  193. package/features/probes.feature +0 -18
  194. package/features/query.feature +0 -389
  195. package/features/realtime.feature +0 -34
  196. package/features/require.feature +0 -66
  197. package/features/response.feature +0 -103
  198. package/features/routes.feature +0 -224
  199. package/features/rpc.feature +0 -429
  200. package/features/server.feature +0 -21
  201. package/features/site/_app/immutable/asset.js +0 -1
  202. package/features/site/favicon.ico +0 -0
  203. package/features/site/index.html +0 -10
  204. package/features/steps/.env.example +0 -5
  205. package/features/steps/Captures.ts +0 -20
  206. package/features/steps/Cloudinary.ts +0 -12
  207. package/features/steps/Common.ts +0 -38
  208. package/features/steps/Components.ts +0 -115
  209. package/features/steps/Database.ts +0 -106
  210. package/features/steps/Gateway.ts +0 -240
  211. package/features/steps/HTTP.ts +0 -96
  212. package/features/steps/IDP.ts +0 -361
  213. package/features/steps/Identity.ts +0 -54
  214. package/features/steps/OTP.ts +0 -42
  215. package/features/steps/Parameters.ts +0 -162
  216. package/features/steps/Probe.ts +0 -38
  217. package/features/steps/Realtime.ts +0 -175
  218. package/features/steps/Workspace.ts +0 -48
  219. package/features/steps/components/audit/manifest.toa.yaml +0 -20
  220. package/features/steps/components/audit/operations/record.js +0 -5
  221. package/features/steps/components/echo/manifest.toa.yaml +0 -59
  222. package/features/steps/components/echo/operations/affect.js +0 -3
  223. package/features/steps/components/echo/operations/compute.js +0 -3
  224. package/features/steps/components/echo/operations/echo.js +0 -3
  225. package/features/steps/components/echo/operations/error.js +0 -7
  226. package/features/steps/components/echo/operations/identity.js +0 -3
  227. package/features/steps/components/echo/operations/parameters.js +0 -3
  228. package/features/steps/components/echo/operations/ping.js +0 -3
  229. package/features/steps/components/echo/operations/unwrap.js +0 -3
  230. package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
  231. package/features/steps/components/echo.beacon/operations/hello.js +0 -3
  232. package/features/steps/components/greeter/manifest.toa.yaml +0 -5
  233. package/features/steps/components/greeter/operations/greet.js +0 -3
  234. package/features/steps/components/notify/manifest.toa.yaml +0 -20
  235. package/features/steps/components/notify/operations/send.js +0 -5
  236. package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
  237. package/features/steps/components/octets.tester/operations/authority.js +0 -3
  238. package/features/steps/components/octets.tester/operations/bar.js +0 -9
  239. package/features/steps/components/octets.tester/operations/baz.js +0 -9
  240. package/features/steps/components/octets.tester/operations/concat.js +0 -5
  241. package/features/steps/components/octets.tester/operations/echo.js +0 -5
  242. package/features/steps/components/octets.tester/operations/err.js +0 -14
  243. package/features/steps/components/octets.tester/operations/foo.js +0 -5
  244. package/features/steps/components/octets.tester/operations/id.js +0 -5
  245. package/features/steps/components/octets.tester/operations/identity.js +0 -5
  246. package/features/steps/components/octets.tester/operations/lenna.png +0 -0
  247. package/features/steps/components/octets.tester/operations/redirect.js +0 -17
  248. package/features/steps/components/octets.tester/operations/yex.js +0 -14
  249. package/features/steps/components/octets.tester/operations/yield.js +0 -11
  250. package/features/steps/components/orders/manifest.toa.yaml +0 -30
  251. package/features/steps/components/orders/operations/create.js +0 -7
  252. package/features/steps/components/pots/manifest.toa.yaml +0 -91
  253. package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
  254. package/features/steps/components/pricing/manifest.toa.yaml +0 -13
  255. package/features/steps/components/pricing/operations/quote.js +0 -3
  256. package/features/steps/components/sequences/manifest.toa.yaml +0 -11
  257. package/features/steps/components/sequences/operations/numbers.js +0 -5
  258. package/features/steps/components/sequences/operations/tokens.js +0 -14
  259. package/features/steps/components/users/manifest.toa.yaml +0 -30
  260. package/features/steps/components/users/operations/create.js +0 -11
  261. package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
  262. package/features/steps/map.ts +0 -30
  263. package/features/steps/tsconfig.json +0 -9
  264. package/features/streams.feature +0 -35
  265. package/features/timestamps.feature +0 -41
  266. package/features/timing.feature +0 -49
  267. package/features/tracing.feature +0 -123
  268. package/schemas/annotation.cos.yaml +0 -125
  269. package/schemas/call.cos.yaml +0 -18
  270. package/schemas/directive.cos.yaml +0 -7
  271. package/schemas/method.cos.yaml +0 -23
  272. package/schemas/node.cos.yaml +0 -22
  273. package/schemas/query.cos.yaml +0 -31
  274. package/schemas/querystring.cos.yaml +0 -19
  275. package/schemas/range.cos.yaml +0 -10
  276. package/schemas/route.cos.yaml +0 -6
  277. package/source/Annotation.ts +0 -89
  278. package/source/Branch.test.ts +0 -40
  279. package/source/Branch.ts +0 -44
  280. package/source/Composition.ts +0 -51
  281. package/source/Context.ts +0 -11
  282. package/source/Directive.test.ts +0 -199
  283. package/source/Directive.ts +0 -248
  284. package/source/Discovery/Explorer.ts +0 -34
  285. package/source/Discovery/Site.test.ts +0 -147
  286. package/source/Discovery/Site.ts +0 -202
  287. package/source/Discovery/index.ts +0 -3
  288. package/source/Discovery/tree.test.ts +0 -175
  289. package/source/Discovery/tree.ts +0 -77
  290. package/source/Discovery/trunk.ts +0 -33
  291. package/source/Endpoint.test.ts +0 -67
  292. package/source/Endpoint.ts +0 -157
  293. package/source/Factory.ts +0 -42
  294. package/source/Gateway.ts +0 -390
  295. package/source/HTTP/Context.ts +0 -143
  296. package/source/HTTP/Probe.ts +0 -99
  297. package/source/HTTP/Server.ts +0 -430
  298. package/source/HTTP/Timing.ts +0 -14
  299. package/source/HTTP/address.test.ts +0 -28
  300. package/source/HTTP/address.ts +0 -16
  301. package/source/HTTP/exceptions.ts +0 -99
  302. package/source/HTTP/formats/form.ts +0 -21
  303. package/source/HTTP/formats/index.ts +0 -36
  304. package/source/HTTP/formats/json.ts +0 -14
  305. package/source/HTTP/formats/msgpack.ts +0 -14
  306. package/source/HTTP/formats/text.ts +0 -10
  307. package/source/HTTP/formats/yaml.test.ts +0 -22
  308. package/source/HTTP/formats/yaml.ts +0 -40
  309. package/source/HTTP/index.ts +0 -6
  310. package/source/HTTP/messages.test.ts +0 -196
  311. package/source/HTTP/messages.ts +0 -186
  312. package/source/HTTP/types.ts +0 -39
  313. package/source/Interception.ts +0 -37
  314. package/source/Introspection.ts +0 -179
  315. package/source/MCP/Server.ts +0 -335
  316. package/source/MCP/discover.ts +0 -51
  317. package/source/MCP/errors.ts +0 -80
  318. package/source/MCP/index.ts +0 -1
  319. package/source/MCP/schema.test.ts +0 -91
  320. package/source/MCP/schema.ts +0 -94
  321. package/source/MCP/tools.ts +0 -144
  322. package/source/MCP/types.ts +0 -84
  323. package/source/Mapping.ts +0 -101
  324. package/source/Query.test.ts +0 -54
  325. package/source/Query.ts +0 -277
  326. package/source/RPC/Context.ts +0 -75
  327. package/source/RPC/Dispatcher.ts +0 -150
  328. package/source/RPC/errors.test.ts +0 -77
  329. package/source/RPC/errors.ts +0 -82
  330. package/source/RPC/index.ts +0 -1
  331. package/source/RPC/names.test.ts +0 -141
  332. package/source/RPC/names.ts +0 -176
  333. package/source/RPC/types.ts +0 -34
  334. package/source/RTD/Context.ts +0 -16
  335. package/source/RTD/Directives.ts +0 -126
  336. package/source/RTD/Endpoint.ts +0 -27
  337. package/source/RTD/Match.ts +0 -11
  338. package/source/RTD/Method.ts +0 -39
  339. package/source/RTD/Node.ts +0 -169
  340. package/source/RTD/Route.ts +0 -93
  341. package/source/RTD/Tree.ts +0 -137
  342. package/source/RTD/expiration.test.ts +0 -81
  343. package/source/RTD/factory.ts +0 -105
  344. package/source/RTD/index.ts +0 -8
  345. package/source/RTD/segment.test.ts +0 -35
  346. package/source/RTD/segment.ts +0 -51
  347. package/source/RTD/syntax/index.ts +0 -2
  348. package/source/RTD/syntax/parse.test.ts +0 -196
  349. package/source/RTD/syntax/parse.ts +0 -171
  350. package/source/RTD/syntax/types.ts +0 -69
  351. package/source/RTD/walk.test.ts +0 -147
  352. package/source/Remotes.test.ts +0 -79
  353. package/source/Remotes.ts +0 -39
  354. package/source/Tenant.ts +0 -73
  355. package/source/const.ts +0 -45
  356. package/source/deployment.ts +0 -96
  357. package/source/directives/auth/Anonymous.test.ts +0 -70
  358. package/source/directives/auth/Anonymous.ts +0 -36
  359. package/source/directives/auth/Anyone.ts +0 -23
  360. package/source/directives/auth/Assert.ts +0 -43
  361. package/source/directives/auth/Authorization.test.ts +0 -24
  362. package/source/directives/auth/Authorization.ts +0 -388
  363. package/source/directives/auth/Delegate.test.ts +0 -36
  364. package/source/directives/auth/Delegate.ts +0 -54
  365. package/source/directives/auth/Echo.ts +0 -24
  366. package/source/directives/auth/Federation.ts +0 -104
  367. package/source/directives/auth/Id.ts +0 -37
  368. package/source/directives/auth/Incept.ts +0 -117
  369. package/source/directives/auth/Input.ts +0 -92
  370. package/source/directives/auth/Role.test.ts +0 -147
  371. package/source/directives/auth/Role.ts +0 -99
  372. package/source/directives/auth/Rule.ts +0 -59
  373. package/source/directives/auth/Scheme.ts +0 -31
  374. package/source/directives/auth/create.ts +0 -11
  375. package/source/directives/auth/index.ts +0 -3
  376. package/source/directives/auth/schemes.test.ts +0 -18
  377. package/source/directives/auth/schemes.ts +0 -39
  378. package/source/directives/auth/split.ts +0 -14
  379. package/source/directives/auth/types.ts +0 -75
  380. package/source/directives/cache/Cache.ts +0 -92
  381. package/source/directives/cache/Control.ts +0 -81
  382. package/source/directives/cache/Exact.ts +0 -7
  383. package/source/directives/cache/etag.ts +0 -38
  384. package/source/directives/cache/index.ts +0 -3
  385. package/source/directives/cache/types.ts +0 -9
  386. package/source/directives/cors/CORS.test.ts +0 -75
  387. package/source/directives/cors/CORS.ts +0 -88
  388. package/source/directives/cors/index.ts +0 -3
  389. package/source/directives/dev/Development.ts +0 -41
  390. package/source/directives/dev/Faulty.ts +0 -31
  391. package/source/directives/dev/Sleep.ts +0 -53
  392. package/source/directives/dev/Stub.ts +0 -14
  393. package/source/directives/dev/Throw.ts +0 -14
  394. package/source/directives/dev/index.ts +0 -3
  395. package/source/directives/dev/types.ts +0 -5
  396. package/source/directives/flow/Compose.ts +0 -98
  397. package/source/directives/flow/Fetch.ts +0 -86
  398. package/source/directives/flow/Flow.ts +0 -43
  399. package/source/directives/flow/index.ts +0 -3
  400. package/source/directives/flow/types.ts +0 -7
  401. package/source/directives/help/Family.ts +0 -122
  402. package/source/directives/help/Help.test.ts +0 -227
  403. package/source/directives/help/Help.ts +0 -47
  404. package/source/directives/help/Parameters.ts +0 -47
  405. package/source/directives/help/described.ts +0 -57
  406. package/source/directives/help/index.ts +0 -45
  407. package/source/directives/index.ts +0 -33
  408. package/source/directives/io/Directive.ts +0 -17
  409. package/source/directives/io/IO.ts +0 -118
  410. package/source/directives/io/Input.ts +0 -55
  411. package/source/directives/io/Message.ts +0 -1
  412. package/source/directives/io/Output.ts +0 -81
  413. package/source/directives/io/Status.test.ts +0 -88
  414. package/source/directives/io/Status.ts +0 -47
  415. package/source/directives/io/Throttle.ts +0 -30
  416. package/source/directives/io/index.ts +0 -3
  417. package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
  418. package/source/directives/io/lib/throttle/Configuration.ts +0 -68
  419. package/source/directives/io/lib/throttle/Keys.ts +0 -53
  420. package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
  421. package/source/directives/io/lib/throttle/Quotas.ts +0 -190
  422. package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
  423. package/source/directives/io/lib/throttle/Sync.ts +0 -93
  424. package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
  425. package/source/directives/io/lib/throttle/Warning.ts +0 -29
  426. package/source/directives/io/lib/throttle/components/Component.ts +0 -7
  427. package/source/directives/io/lib/throttle/components/IP.ts +0 -30
  428. package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
  429. package/source/directives/io/lib/throttle/components/Path.ts +0 -8
  430. package/source/directives/io/lib/throttle/components/Route.ts +0 -19
  431. package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
  432. package/source/directives/io/lib/throttle/components/index.ts +0 -19
  433. package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
  434. package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
  435. package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
  436. package/source/directives/io/lib/throttle/index.ts +0 -4
  437. package/source/directives/io/schemas.test.ts +0 -40
  438. package/source/directives/io/schemas.ts +0 -16
  439. package/source/directives/map/Authority.ts +0 -15
  440. package/source/directives/map/Buffer.ts +0 -15
  441. package/source/directives/map/Claims.ts +0 -63
  442. package/source/directives/map/Directive.ts +0 -4
  443. package/source/directives/map/Headers.ts +0 -60
  444. package/source/directives/map/Language.ts +0 -45
  445. package/source/directives/map/Languages.ts +0 -17
  446. package/source/directives/map/Map.ts +0 -85
  447. package/source/directives/map/Mapping.ts +0 -45
  448. package/source/directives/map/Properties.ts +0 -15
  449. package/source/directives/map/Segments.ts +0 -52
  450. package/source/directives/map/index.ts +0 -3
  451. package/source/directives/mcp/MCP.ts +0 -33
  452. package/source/directives/mcp/Tool.test.ts +0 -56
  453. package/source/directives/mcp/Tool.ts +0 -32
  454. package/source/directives/mcp/index.ts +0 -6
  455. package/source/directives/oauth/Discovery.ts +0 -66
  456. package/source/directives/oauth/documents.ts +0 -110
  457. package/source/directives/oauth/index.ts +0 -3
  458. package/source/directives/octets/Context.ts +0 -23
  459. package/source/directives/octets/Delete.ts +0 -96
  460. package/source/directives/octets/Directive.ts +0 -21
  461. package/source/directives/octets/Get.ts +0 -88
  462. package/source/directives/octets/Octets.ts +0 -82
  463. package/source/directives/octets/Put.ts +0 -186
  464. package/source/directives/octets/Workflow.ts +0 -60
  465. package/source/directives/octets/bytes.test.ts +0 -33
  466. package/source/directives/octets/bytes.ts +0 -18
  467. package/source/directives/octets/index.ts +0 -3
  468. package/source/directives/octets/schemas.test.ts +0 -20
  469. package/source/directives/octets/schemas.ts +0 -15
  470. package/source/directives/octets/types.ts +0 -9
  471. package/source/directives/octets/workflows/Execution.ts +0 -130
  472. package/source/directives/octets/workflows/Workflow.ts +0 -51
  473. package/source/directives/octets/workflows/index.ts +0 -1
  474. package/source/directives/require/Directive.ts +0 -5
  475. package/source/directives/require/Headers.ts +0 -19
  476. package/source/directives/require/Require.ts +0 -27
  477. package/source/directives/require/index.ts +0 -3
  478. package/source/discovery.ts +0 -1
  479. package/source/exceptions.ts +0 -47
  480. package/source/index.ts +0 -12
  481. package/source/io.ts +0 -4
  482. package/source/manifest.test.ts +0 -56
  483. package/source/manifest.ts +0 -56
  484. package/source/octets.d.ts +0 -17
  485. package/source/root.ts +0 -59
  486. package/source/schemas.test.ts +0 -31
  487. package/source/schemas.ts +0 -15
  488. package/source/service.ts +0 -94
  489. package/source/shortcuts.ts +0 -14
  490. package/source/userland.ts +0 -47
  491. package/transpiled/Annotation.d.ts +0 -70
  492. package/transpiled/Annotation.js +0 -2
  493. package/transpiled/Annotation.js.map +0 -1
  494. package/transpiled/RTD/syntax/parse.d.ts +0 -4
  495. package/transpiled/RTD/syntax/parse.js +0 -112
  496. package/transpiled/RTD/syntax/parse.js.map +0 -1
  497. package/transpiled/RTD/syntax/types.d.ts +0 -52
  498. package/transpiled/RTD/syntax/types.js +0 -11
  499. package/transpiled/RTD/syntax/types.js.map +0 -1
  500. package/transpiled/const.d.ts +0 -36
  501. package/transpiled/const.js +0 -37
  502. package/transpiled/const.js.map +0 -1
  503. package/transpiled/deployment.d.ts +0 -6
  504. package/transpiled/deployment.js +0 -76
  505. package/transpiled/deployment.js.map +0 -1
  506. package/transpiled/manifest.d.ts +0 -3
  507. package/transpiled/manifest.js +0 -39
  508. package/transpiled/manifest.js.map +0 -1
  509. package/transpiled/schemas.d.ts +0 -9
  510. package/transpiled/schemas.js +0 -9
  511. package/transpiled/schemas.js.map +0 -1
  512. package/transpiled/shortcuts.d.ts +0 -3
  513. package/transpiled/shortcuts.js +0 -13
  514. package/transpiled/shortcuts.js.map +0 -1
  515. package/tsconfig.json +0 -13
  516. package/tsconfig.tsbuildinfo +0 -1
  517. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
  518. package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
  519. package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
  520. package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
  521. package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
  522. package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
  523. package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
  524. package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
  525. package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
  526. package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
@@ -1,753 +0,0 @@
1
- @security
2
- Feature: Model Context Protocol
3
-
4
- A tool is a procedure a method is published as. A method says so with `mcp:tool`, and a
5
- default denies: a tree holds everything an application serves and most of it is machinery
6
- a model has no business reading. What the tool is called and what it is for is
7
- `help:method`, which is what describes the method everywhere else as well. What a tool
8
- takes and answers is what the method says of itself, and what a caller may do with it is
9
- what `auth` says.
10
-
11
- What a tool is, is stated on the route and nowhere else. The operation states what it is
12
- too, and that is not this: one operation mounted on two routes is two tools. A `title`
13
- beside the description is what a person is shown where a client lists what it may call.
14
-
15
- Two revisions are answered from one endpoint that remembers nothing between requests: the
16
- modern one, where every request carries its own version and capabilities, and the one
17
- before it, which opens with `initialize`. Neither is given a session, and neither is given
18
- a stream.
19
-
20
- Background:
21
- Given the annotation:
22
- """yaml
23
- mcp:
24
- name: Teapots
25
- instructions: A pot is read by its id.
26
- anonymous: true
27
- """
28
- And the `pots` is running with the following manifest:
29
- """yaml
30
- exposition:
31
- /:
32
- io:output: [id, title, volume]
33
- GET:
34
- mcp:tool: true
35
- help:method:
36
- description: All the pots, newest first.
37
- endpoint: enumerate
38
- POST:
39
- mcp:tool: true
40
- help:method:
41
- description: Start a new pot brewing.
42
- endpoint: create
43
- /:id:
44
- GET:
45
- mcp:tool: true
46
- help:method:
47
- description: One pot, by its id.
48
- endpoint: observe
49
- /large:
50
- GET:
51
- query:
52
- criteria: volume>=100
53
- mcp:tool: true
54
- help:method:
55
- title: Large pots
56
- description: The pots that hold a hundred or more, newest first.
57
- endpoint: enumerate
58
- /unpublished:
59
- GET: enumerate
60
- /guarded:
61
- isolated: true
62
- GET:
63
- auth:role: admin
64
- mcp:tool: true
65
- help:method:
66
- description: Every pot there is, for whoever may see them all.
67
- endpoint: enumerate
68
- """
69
- And the `pots` database contains:
70
- | _id | title | volume |
71
- | 4c4759e6f9c74da989d64511df42d6f4 | First pot | 100 |
72
-
73
- Scenario: What the server is
74
- When the following request is received:
75
- """
76
- POST /.mcp HTTP/1.1
77
- host: nex.toa.io
78
- accept: application/yaml
79
- content-type: application/json
80
- mcp-protocol-version: 2026-07-28
81
- mcp-method: server/discover
82
-
83
- {"jsonrpc": "2.0", "id": 1, "method": "server/discover",
84
- "params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
85
- "io.modelcontextprotocol/clientCapabilities": {}}}}
86
- """
87
- Then the following reply is sent:
88
- """
89
- 200 OK
90
- cache-control: no-store
91
-
92
- jsonrpc: '2.0'
93
- id: 1
94
- result:
95
- supportedVersions:
96
- - '2026-07-28'
97
- - '2025-11-25'
98
- capabilities:
99
- tools: {}
100
- instructions: A pot is read by its id.
101
- ttlMs: 1800000
102
- cacheScope: public
103
- resultType: complete
104
- """
105
-
106
- Scenario: What a client of an earlier revision opens with
107
- No session is made, and none is named back.
108
-
109
- When the following request is received:
110
- """
111
- POST /.mcp HTTP/1.1
112
- host: nex.toa.io
113
- accept: application/yaml
114
- content-type: application/json
115
-
116
- {"jsonrpc": "2.0", "id": 1, "method": "initialize",
117
- "params": {"protocolVersion": "2025-11-25", "capabilities": {},
118
- "clientInfo": {"name": "Inspector", "version": "2.5.0"}}}
119
- """
120
- Then the following reply is sent:
121
- """
122
- 200 OK
123
-
124
- jsonrpc: '2.0'
125
- id: 1
126
- result:
127
- protocolVersion: '2025-11-25'
128
- capabilities:
129
- tools: {}
130
- serverInfo:
131
- name: Teapots
132
- instructions: A pot is read by its id.
133
- """
134
- And the reply does not contain:
135
- """
136
- mcp-session-id
137
- """
138
- When the following request is received:
139
- """
140
- POST /.mcp HTTP/1.1
141
- host: nex.toa.io
142
- content-type: application/json
143
-
144
- {"jsonrpc": "2.0", "method": "notifications/initialized"}
145
- """
146
- Then the following reply is sent:
147
- """
148
- 202 Accepted
149
- """
150
-
151
- Scenario: What the tools are
152
- Every method that is published and the caller may reach. One the caller may not, and
153
- one that is published as nothing at all, are both absent.
154
-
155
- When the following request is received:
156
- """
157
- POST /.mcp HTTP/1.1
158
- host: nex.toa.io
159
- accept: application/yaml
160
- content-type: application/json
161
- mcp-protocol-version: 2026-07-28
162
- mcp-method: tools/list
163
-
164
- {"jsonrpc": "2.0", "id": 2, "method": "tools/list",
165
- "params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
166
- "io.modelcontextprotocol/clientCapabilities": {}}}}
167
- """
168
- Then the following reply is sent:
169
- """
170
- 200 OK
171
-
172
- jsonrpc: '2.0'
173
- id: 2
174
- result:
175
- tools:
176
- - name: pots.GET
177
- description: All the pots, newest first.
178
- inputSchema:
179
- type: object
180
- properties:
181
- query:
182
- type: object
183
- properties:
184
- criteria:
185
- type: string
186
- limit:
187
- type: integer
188
- minimum: 1
189
- maximum: 100
190
- default: 10
191
- additionalProperties: false
192
- annotations:
193
- readOnlyHint: true
194
- - name: pots.POST
195
- description: Start a new pot brewing.
196
- inputSchema:
197
- type: object
198
- properties:
199
- title:
200
- type: string
201
- maxLength: 64
202
- volume:
203
- type: number
204
- required:
205
- - title
206
- - volume
207
- additionalProperties: false
208
- - name: pots._id.GET
209
- description: One pot, by its id.
210
- inputSchema:
211
- type: object
212
- properties:
213
- id:
214
- type: string
215
- required:
216
- - id
217
- additionalProperties: false
218
- - name: pots.large.GET
219
- title: Large pots
220
- description: The pots that hold a hundred or more, newest first.
221
- annotations:
222
- readOnlyHint: true
223
- ttlMs: 1800000
224
- cacheScope: private
225
- resultType: complete
226
- """
227
- And the reply does not contain:
228
- """
229
- pots.guarded.GET
230
- """
231
- And the reply does not contain:
232
- """
233
- pots.unpublished.GET
234
- """
235
- And the reply does not contain:
236
- """
237
- Put a pot on to brew.
238
- """
239
-
240
- Scenario: A method that is published as nothing is not called by guessing its name
241
- A route the application did not publish is served over HTTP exactly as before. What it
242
- does not have is a name here, and naming it anyway reaches nothing.
243
-
244
- When the following request is received:
245
- """
246
- POST /.mcp HTTP/1.1
247
- host: nex.toa.io
248
- accept: application/yaml
249
- content-type: application/json
250
- mcp-protocol-version: 2026-07-28
251
- mcp-method: tools/call
252
- mcp-name: pots.unpublished.GET
253
-
254
- {"jsonrpc": "2.0", "id": 30, "method": "tools/call",
255
- "params": {"name": "pots.unpublished.GET", "arguments": {},
256
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
257
- "io.modelcontextprotocol/clientCapabilities": {}}}}
258
- """
259
- Then the following reply is sent:
260
- """
261
- 404 Not Found
262
-
263
- jsonrpc: '2.0'
264
- id: null
265
- error:
266
- code: -32601
267
- """
268
-
269
- Scenario: A tool that takes an identity is not listed to nobody
270
- `tools/list` answers what this caller may reach, and it is the description that decides
271
- — the same one `OPTIONS` answers. A model is not shown a tool it would be refused.
272
-
273
- Given the annotation:
274
- """yaml
275
- mcp:
276
- name: Pots
277
- anonymous: true
278
- /:
279
- anonymous: true
280
- /pots/:id:
281
- isolated: true
282
- GET:
283
- anonymous: true
284
- mcp:tool: true
285
- help:method: One pot, by its id.
286
- dev:stub: []
287
- PATCH:
288
- auth:id: id
289
- mcp:tool: true
290
- help:method: Change your own pot.
291
- dev:stub: []
292
- """
293
- When the following request is received:
294
- """
295
- POST /.mcp HTTP/1.1
296
- host: nex.toa.io
297
- accept: application/yaml
298
- content-type: application/json
299
- mcp-protocol-version: 2026-07-28
300
- mcp-method: tools/list
301
-
302
- {"jsonrpc": "2.0", "id": 3, "method": "tools/list",
303
- "params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
304
- "io.modelcontextprotocol/clientCapabilities": {}}}}
305
- """
306
- Then the following reply is sent:
307
- """
308
- 200 OK
309
-
310
- - name: pots._id.GET
311
- """
312
- And the reply does not contain:
313
- """
314
- pots._id.PATCH
315
- """
316
-
317
- Scenario: A credential does not hide an anonymous tool
318
- A client here always presents one, and what refuses a credentialed request at an
319
- `anonymous` route is that the reply would not be cacheable — which a tool's is not.
320
-
321
- # developer:secret
322
- Given the `identity.basic` database contains:
323
- | _id | authority | username | password |
324
- | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
325
- And the `identity.bans` database is empty
326
- When the following request is received:
327
- """
328
- POST /.mcp HTTP/1.1
329
- host: nex.toa.io
330
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
331
- accept: application/yaml
332
- content-type: application/json
333
- mcp-protocol-version: 2026-07-28
334
- mcp-method: tools/list
335
-
336
- {"jsonrpc": "2.0", "id": 20, "method": "tools/list",
337
- "params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
338
- "io.modelcontextprotocol/clientCapabilities": {}}}}
339
- """
340
- Then the following reply is sent:
341
- """
342
- 200 OK
343
-
344
- jsonrpc: '2.0'
345
- id: 20
346
- result:
347
- tools:
348
- - name: pots.GET
349
- """
350
-
351
- Scenario: A tool takes what the procedure takes
352
- When the following request is received:
353
- """
354
- POST /.mcp HTTP/1.1
355
- host: nex.toa.io
356
- accept: application/yaml
357
- content-type: application/json
358
- mcp-protocol-version: 2026-07-28
359
- mcp-method: tools/call
360
- mcp-name: pots._id.GET
361
-
362
- {"jsonrpc": "2.0", "id": 3, "method": "tools/call",
363
- "params": {"name": "pots._id.GET",
364
- "arguments": {"id": "4c4759e6f9c74da989d64511df42d6f4"},
365
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
366
- "io.modelcontextprotocol/clientCapabilities": {}}}}
367
- """
368
- Then the following reply is sent:
369
- """
370
- 200 OK
371
-
372
- jsonrpc: '2.0'
373
- id: 3
374
- result:
375
- structuredContent:
376
- id: 4c4759e6f9c74da989d64511df42d6f4
377
- title: First pot
378
- volume: 100
379
- resultType: complete
380
- """
381
-
382
- Scenario: What is left of the arguments is the input
383
- When the following request is received:
384
- """
385
- POST /.mcp HTTP/1.1
386
- host: nex.toa.io
387
- accept: application/yaml
388
- content-type: application/json
389
- mcp-protocol-version: 2026-07-28
390
- mcp-method: tools/call
391
- mcp-name: pots.POST
392
-
393
- {"jsonrpc": "2.0", "id": 4, "method": "tools/call",
394
- "params": {"name": "pots.POST", "arguments": {"title": "Kettle", "volume": 1.7},
395
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
396
- "io.modelcontextprotocol/clientCapabilities": {}}}}
397
- """
398
- Then the following reply is sent:
399
- """
400
- 200 OK
401
-
402
- jsonrpc: '2.0'
403
- id: 4
404
- result:
405
- structuredContent:
406
- id:
407
- """
408
-
409
- Scenario: A name nothing answers to
410
-
411
- When the following request is received:
412
- """
413
- POST /.mcp HTTP/1.1
414
- host: nex.toa.io
415
- accept: application/yaml
416
- content-type: application/json
417
- mcp-protocol-version: 2026-07-28
418
- mcp-method: tools/call
419
- mcp-name: kettles.GET
420
-
421
- {"jsonrpc": "2.0", "id": 5, "method": "tools/call",
422
- "params": {"name": "kettles.GET", "arguments": {},
423
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
424
- "io.modelcontextprotocol/clientCapabilities": {}}}}
425
- """
426
- Then the following reply is sent:
427
- """
428
- 404 Not Found
429
- """
430
-
431
- Scenario: A method this server does not answer
432
- The status is what tells a client that this endpoint is here and the method is not.
433
-
434
- When the following request is received:
435
- """
436
- POST /.mcp HTTP/1.1
437
- host: nex.toa.io
438
- accept: application/yaml
439
- content-type: application/json
440
- mcp-protocol-version: 2026-07-28
441
- mcp-method: prompts/list
442
-
443
- {"jsonrpc": "2.0", "id": 6, "method": "prompts/list",
444
- "params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
445
- "io.modelcontextprotocol/clientCapabilities": {}}}}
446
- """
447
- Then the following reply is sent:
448
- """
449
- 404 Not Found
450
-
451
- jsonrpc: '2.0'
452
- id: 6
453
- error:
454
- code: -32601
455
- """
456
-
457
- Scenario: A header saying one thing and a body another
458
- What routes a request and what answers it must not be told two different things.
459
-
460
- When the following request is received:
461
- """
462
- POST /.mcp HTTP/1.1
463
- host: nex.toa.io
464
- accept: application/yaml
465
- content-type: application/json
466
- mcp-protocol-version: 2026-07-28
467
- mcp-method: tools/call
468
- mcp-name: pots.GET
469
-
470
- {"jsonrpc": "2.0", "id": 7, "method": "tools/call",
471
- "params": {"name": "pots.POST", "arguments": {},
472
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
473
- "io.modelcontextprotocol/clientCapabilities": {}}}}
474
- """
475
- Then the following reply is sent:
476
- """
477
- 400 Bad Request
478
-
479
- jsonrpc: '2.0'
480
- id: 7
481
- error:
482
- code: -32020
483
- """
484
-
485
- Scenario: A revision neither served
486
- When the following request is received:
487
- """
488
- POST /.mcp HTTP/1.1
489
- host: nex.toa.io
490
- accept: application/yaml
491
- content-type: application/json
492
- mcp-protocol-version: 1900-01-01
493
- mcp-method: tools/list
494
-
495
- {"jsonrpc": "2.0", "id": 8, "method": "tools/list", "params": {}}
496
- """
497
- Then the following reply is sent:
498
- """
499
- 400 Bad Request
500
-
501
- jsonrpc: '2.0'
502
- id: 8
503
- error:
504
- code: -32022
505
- data:
506
- supported:
507
- - '2026-07-28'
508
- - '2025-11-25'
509
- requested: '1900-01-01'
510
- """
511
-
512
- Scenario: What the endpoint does not serve
513
- A stream is what these were for, and this endpoint has none.
514
-
515
- When the following request is received:
516
- """
517
- GET /.mcp HTTP/1.1
518
- host: nex.toa.io
519
- """
520
- Then the following reply is sent:
521
- """
522
- 405 Method Not Allowed
523
- allow: POST
524
- """
525
-
526
- Scenario: Without the annotation nothing answers there
527
- Given the annotation:
528
- """yaml
529
- {}
530
- """
531
- When the following request is received:
532
- """
533
- POST /.mcp HTTP/1.1
534
- host: nex.toa.io
535
- content-type: application/json
536
-
537
- {"jsonrpc": "2.0", "id": 9, "method": "tools/list", "params": {}}
538
- """
539
- Then the following reply is sent:
540
- """
541
- 404 Not Found
542
- """
543
-
544
- Scenario: A tool the caller may not call
545
- What `auth` makes of a call is a refusal of the call, not of the credential: the model
546
- named a record that is not the caller's, which it may correct itself by naming another.
547
- A challenge here would send the client to ask for a scope that would not help.
548
-
549
- # developer:secret, who is not an `admin` and so may not reach `pots.guarded.GET`
550
- Given the `identity.basic` database contains:
551
- | _id | authority | username | password |
552
- | efe3a65ebbee47ed95a73edd911ea328 | nex | developer | $2b$10$ZRSKkgZoGnrcTNA5w5eCcu3pxDzdTduhteVYXcp56AaNcilNkwJ.O |
553
- And the `identity.bans` database is empty
554
- When the following request is received:
555
- """
556
- POST /.mcp HTTP/1.1
557
- host: nex.toa.io
558
- authorization: Basic ZGV2ZWxvcGVyOnNlY3JldA==
559
- accept: application/yaml
560
- content-type: application/json
561
- mcp-protocol-version: 2026-07-28
562
- mcp-method: tools/call
563
- mcp-name: pots.guarded.GET
564
-
565
- {"jsonrpc": "2.0", "id": 31, "method": "tools/call",
566
- "params": {"name": "pots.guarded.GET", "arguments": {},
567
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
568
- "io.modelcontextprotocol/clientCapabilities": {}}}}
569
- """
570
- Then the following reply is sent:
571
- """
572
- 200 OK
573
-
574
- jsonrpc: '2.0'
575
- id: 31
576
- result:
577
- isError: true
578
- """
579
- And the reply does not contain:
580
- """
581
- insufficient_scope
582
- """
583
-
584
- Scenario: An argument the schemas would not take
585
- What the arguments are refused for is the model's to correct by sending others, so it
586
- is a result and not an error of the protocol.
587
-
588
- When the following request is received:
589
- """
590
- POST /.mcp HTTP/1.1
591
- host: nex.toa.io
592
- accept: application/yaml
593
- content-type: application/json
594
- mcp-protocol-version: 2026-07-28
595
- mcp-method: tools/call
596
- mcp-name: pots._id.GET
597
-
598
- {"jsonrpc": "2.0", "id": 32, "method": "tools/call",
599
- "params": {"name": "pots._id.GET",
600
- "arguments": {"id": "not-an-id"},
601
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
602
- "io.modelcontextprotocol/clientCapabilities": {}}}}
603
- """
604
- Then the following reply is sent:
605
- """
606
- 200 OK
607
-
608
- jsonrpc: '2.0'
609
- id: 32
610
- result:
611
- isError: true
612
- """
613
-
614
- Scenario: What the operation refused with
615
- A refusal is a value a model reads and may correct itself by, so it is a result rather
616
- than an error of the protocol.
617
-
618
- Given the `echo` is running with the following manifest:
619
- """yaml
620
- exposition:
621
- /:
622
- io:output: true
623
- GET:
624
- mcp:tool: true
625
- help:method:
626
- description: Refuses, with what it was given.
627
- endpoint: error
628
- """
629
- When the following request is received:
630
- """
631
- POST /.mcp HTTP/1.1
632
- host: nex.toa.io
633
- accept: application/yaml
634
- content-type: application/json
635
- mcp-protocol-version: 2026-07-28
636
- mcp-method: tools/call
637
- mcp-name: echo.GET
638
-
639
- {"jsonrpc": "2.0", "id": 10, "method": "tools/call",
640
- "params": {"name": "echo.GET", "arguments": {},
641
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
642
- "io.modelcontextprotocol/clientCapabilities": {}}}}
643
- """
644
- Then the following reply is sent:
645
- """
646
- 200 OK
647
-
648
- jsonrpc: '2.0'
649
- id: 10
650
- result:
651
- content:
652
- - type: text
653
- text: message
654
- isError: true
655
- resultType: complete
656
- """
657
-
658
- Scenario: An operation that declares no output
659
- A schema the revision would have the reply validated against is worse said emptily than
660
- left unsaid — and the reply is answered all the same.
661
-
662
- Given the `echo` is running with the following manifest:
663
- """yaml
664
- exposition:
665
- /:
666
- io:output: true
667
- GET:
668
- mcp:tool: true
669
- help:method:
670
- description: Answers with what it was given.
671
- endpoint: echo
672
- """
673
- When the following request is received:
674
- """
675
- POST /.mcp HTTP/1.1
676
- host: nex.toa.io
677
- accept: application/yaml
678
- content-type: application/json
679
- mcp-protocol-version: 2026-07-28
680
- mcp-method: tools/call
681
- mcp-name: echo.GET
682
-
683
- {"jsonrpc": "2.0", "id": 11, "method": "tools/call",
684
- "params": {"name": "echo.GET", "arguments": {"greeting": "hello"},
685
- "_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
686
- "io.modelcontextprotocol/clientCapabilities": {}}}}
687
- """
688
- Then the following reply is sent:
689
- """
690
- 200 OK
691
-
692
- jsonrpc: '2.0'
693
- id: 11
694
- result:
695
- structuredContent:
696
- greeting: hello
697
- resultType: complete
698
- """
699
-
700
- Scenario: An origin that is not listed
701
- The revision requires this against DNS rebinding, and an empty list admits none.
702
-
703
- When the following request is received:
704
- """
705
- POST /.mcp HTTP/1.1
706
- host: nex.toa.io
707
- origin: https://elsewhere.example
708
- accept: application/yaml
709
- content-type: application/json
710
- mcp-protocol-version: 2026-07-28
711
- mcp-method: tools/list
712
-
713
- {"jsonrpc": "2.0", "id": 12, "method": "tools/list",
714
- "params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
715
- "io.modelcontextprotocol/clientCapabilities": {}}}}
716
- """
717
- Then the following reply is sent:
718
- """
719
- 403 Forbidden
720
- """
721
-
722
- Scenario: Without a credential
723
- A request without one is where the authorization flow starts, so the refusal carries
724
- the document that says where to get a token.
725
-
726
- Given the annotation:
727
- """yaml
728
- authorities:
729
- nex: nex.toa.io
730
- oauth:
731
- authorize: https://app.nex.toa.io/oauth/authorize
732
- resources: ['/.mcp']
733
- mcp:
734
- name: Teapots
735
- """
736
- When the following request is received:
737
- """
738
- POST /.mcp HTTP/1.1
739
- host: nex.toa.io
740
- accept: application/yaml
741
- content-type: application/json
742
- mcp-protocol-version: 2026-07-28
743
- mcp-method: tools/list
744
-
745
- {"jsonrpc": "2.0", "id": 13, "method": "tools/list",
746
- "params": {"_meta": {"io.modelcontextprotocol/protocolVersion": "2026-07-28",
747
- "io.modelcontextprotocol/clientCapabilities": {}}}}
748
- """
749
- Then the following reply is sent:
750
- """
751
- 401 Unauthorized
752
- www-authenticate: Bearer resource_metadata="https://nex.toa.io/.well-known/oauth-protected-resource/.mcp"
753
- """