@toa.io/extensions.exposition 1.0.0-alpha.282 → 1.0.0-alpha.284

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 (667) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/components/exposition.octets/manifest.toa.yaml +11 -0
  3. package/components/exposition.octets/types/index.d.ts +3 -0
  4. package/components/exposition.octets/types/toa.d.ts +41 -0
  5. package/components/identity.bans/operations/transit.js +1 -1
  6. package/components/identity.bans/tsconfig.json +1 -1
  7. package/components/identity.bans/tsconfig.tsbuildinfo +1 -1
  8. package/components/identity.bans/types/index.d.ts +3 -0
  9. package/components/identity.bans/types/toa.d.ts +34 -0
  10. package/components/identity.basic/manifest.toa.yaml +13 -2
  11. package/components/identity.basic/operations/add.js +1 -1
  12. package/components/identity.basic/operations/authenticate.js +1 -1
  13. package/components/identity.basic/operations/check.js +1 -1
  14. package/components/identity.basic/operations/delete.js +1 -1
  15. package/components/identity.basic/operations/incept.js +18 -2
  16. package/components/identity.basic/operations/info.js +1 -1
  17. package/components/identity.basic/operations/lib/credentials.js +1 -1
  18. package/components/identity.basic/operations/transit.js +3 -2
  19. package/components/identity.basic/source/add.ts +3 -3
  20. package/components/identity.basic/source/authenticate.ts +2 -2
  21. package/components/identity.basic/source/check.ts +1 -1
  22. package/components/identity.basic/source/delete.ts +2 -2
  23. package/components/identity.basic/source/incept.ts +31 -3
  24. package/components/identity.basic/source/info.ts +1 -1
  25. package/components/identity.basic/source/transit.ts +6 -4
  26. package/components/identity.basic/tsconfig.json +1 -1
  27. package/components/identity.basic/tsconfig.tsbuildinfo +1 -1
  28. package/components/identity.basic/types/index.d.ts +22 -0
  29. package/components/identity.basic/types/toa.d.ts +121 -0
  30. package/components/identity.clients/manifest.toa.yaml +243 -0
  31. package/components/identity.clients/operations/describe.js +44 -0
  32. package/components/identity.clients/operations/lib/Context.js +2 -0
  33. package/components/identity.clients/operations/lib/Entity.js +2 -0
  34. package/components/identity.clients/operations/lib/canonical.js +24 -0
  35. package/components/identity.clients/operations/lib/cimd.js +86 -0
  36. package/components/identity.clients/operations/lib/errors.js +5 -0
  37. package/components/identity.clients/operations/lib/index.js +7 -0
  38. package/components/identity.clients/operations/lib/redirect.js +32 -0
  39. package/components/identity.clients/operations/register.js +84 -0
  40. package/components/identity.clients/source/describe.ts +65 -0
  41. package/components/identity.clients/source/lib/Context.ts +38 -0
  42. package/components/identity.clients/source/lib/Entity.ts +31 -0
  43. package/components/identity.clients/source/lib/canonical.test.ts +43 -0
  44. package/components/identity.clients/source/lib/canonical.ts +27 -0
  45. package/components/identity.clients/source/lib/cimd.test.ts +120 -0
  46. package/components/identity.clients/source/lib/cimd.ts +107 -0
  47. package/components/identity.clients/source/lib/errors.ts +4 -0
  48. package/components/identity.clients/source/lib/index.ts +6 -0
  49. package/components/identity.clients/source/lib/redirect.test.ts +41 -0
  50. package/components/identity.clients/source/lib/redirect.ts +35 -0
  51. package/components/identity.clients/source/register.ts +125 -0
  52. package/components/identity.clients/tsconfig.json +10 -0
  53. package/components/identity.clients/tsconfig.tsbuildinfo +1 -0
  54. package/components/identity.clients/types/index.d.ts +3 -0
  55. package/components/identity.clients/types/toa.d.ts +109 -0
  56. package/components/identity.credentials/operations/list.js +1 -1
  57. package/components/identity.credentials/source/list.ts +2 -1
  58. package/components/identity.credentials/tsconfig.json +4 -2
  59. package/components/identity.credentials/tsconfig.tsbuildinfo +1 -1
  60. package/components/identity.credentials/types/index.d.ts +3 -0
  61. package/components/identity.credentials/types/toa.d.ts +30 -0
  62. package/components/identity.federation/manifest.toa.yaml +37 -1
  63. package/components/identity.federation/operations/authenticate.js +7 -3
  64. package/components/identity.federation/operations/create.js +1 -1
  65. package/components/identity.federation/operations/decode.js +1 -1
  66. package/components/identity.federation/operations/delete.js +1 -1
  67. package/components/identity.federation/operations/incept.js +6 -2
  68. package/components/identity.federation/operations/lib/Configuration.js +1 -1
  69. package/components/identity.federation/operations/lib/Ctx.js +1 -1
  70. package/components/identity.federation/operations/lib/Payload.js +1 -1
  71. package/components/identity.federation/operations/lib/decode.js +23 -9
  72. package/components/identity.federation/operations/lib/discovery.js +1 -1
  73. package/components/identity.federation/operations/lib/errors.js +5 -1
  74. package/components/identity.federation/operations/lib/exchange.js +12 -7
  75. package/components/identity.federation/operations/lib/index.js +2 -1
  76. package/components/identity.federation/operations/lib/jose.js +1 -1
  77. package/components/identity.federation/operations/lib/principal.js +14 -0
  78. package/components/identity.federation/operations/lib/resolve.js +1 -1
  79. package/components/identity.federation/operations/list.js +1 -1
  80. package/components/identity.federation/operations/types/Scheme.js +1 -1
  81. package/components/identity.federation/operations/types/configuration.js +1 -1
  82. package/components/identity.federation/operations/types/context.js +1 -1
  83. package/components/identity.federation/operations/types/entity.js +1 -1
  84. package/components/identity.federation/operations/types/index.js +1 -1
  85. package/components/identity.federation/source/authenticate.ts +9 -3
  86. package/components/identity.federation/source/incept.ts +7 -1
  87. package/components/identity.federation/source/lib/Ctx.ts +2 -2
  88. package/components/identity.federation/source/lib/decode.ts +25 -9
  89. package/components/identity.federation/source/lib/errors.ts +5 -0
  90. package/components/identity.federation/source/lib/exchange.ts +11 -7
  91. package/components/identity.federation/source/lib/index.ts +1 -0
  92. package/components/identity.federation/source/lib/principal.ts +17 -0
  93. package/components/identity.federation/source/types/configuration.ts +1 -1
  94. package/components/identity.federation/source/types/context.ts +6 -2
  95. package/components/identity.federation/tsconfig.json +4 -2
  96. package/components/identity.federation/tsconfig.tsbuildinfo +1 -1
  97. package/components/identity.federation/types/index.d.ts +3 -0
  98. package/components/identity.federation/types/toa.d.ts +127 -0
  99. package/components/identity.grants/manifest.toa.yaml +245 -0
  100. package/components/identity.grants/operations/authorize.js +54 -0
  101. package/components/identity.grants/operations/exchange.js +89 -0
  102. package/components/identity.grants/operations/lib/code.js +30 -0
  103. package/components/identity.grants/operations/lib/identify.js +15 -0
  104. package/components/identity.grants/operations/lib/index.js +3 -0
  105. package/components/identity.grants/operations/list.js +18 -0
  106. package/components/identity.grants/operations/revoke.js +25 -0
  107. package/components/identity.grants/source/authorize.ts +90 -0
  108. package/components/identity.grants/source/exchange.ts +130 -0
  109. package/components/identity.grants/source/lib/code.ts +39 -0
  110. package/components/identity.grants/source/lib/identify.ts +16 -0
  111. package/components/identity.grants/source/lib/index.ts +3 -0
  112. package/components/identity.grants/source/list.ts +28 -0
  113. package/components/identity.grants/source/revoke.ts +38 -0
  114. package/components/identity.grants/tsconfig.json +10 -0
  115. package/components/identity.grants/tsconfig.tsbuildinfo +1 -0
  116. package/components/identity.grants/types/index.d.ts +60 -0
  117. package/components/identity.grants/types/toa.d.ts +108 -0
  118. package/components/identity.keys/manifest.toa.yaml +1 -0
  119. package/components/identity.keys/operations/create.js +1 -1
  120. package/components/identity.keys/operations/disable.js +1 -1
  121. package/components/identity.keys/operations/revoke.js +1 -1
  122. package/components/identity.keys/source/create.ts +1 -1
  123. package/components/identity.keys/source/revoke.ts +1 -1
  124. package/components/identity.keys/tsconfig.json +1 -1
  125. package/components/identity.keys/tsconfig.tsbuildinfo +1 -1
  126. package/components/identity.keys/types/index.d.ts +3 -0
  127. package/components/identity.keys/types/toa.d.ts +47 -0
  128. package/components/identity.otp/operations/authenticate.js +1 -1
  129. package/components/identity.otp/operations/issue.js +1 -1
  130. package/components/identity.otp/operations/lib/Context.js +1 -1
  131. package/components/identity.otp/operations/lib/Entity.js +1 -1
  132. package/components/identity.otp/operations/lib/index.js +1 -1
  133. package/components/identity.otp/source/lib/Context.ts +4 -2
  134. package/components/identity.otp/tsconfig.json +1 -1
  135. package/components/identity.otp/tsconfig.tsbuildinfo +1 -1
  136. package/components/identity.otp/types/index.d.ts +3 -0
  137. package/components/identity.otp/types/toa.d.ts +56 -0
  138. package/components/identity.passkeys/manifest.toa.yaml +3 -0
  139. package/components/identity.passkeys/operations/authenticate.js +1 -1
  140. package/components/identity.passkeys/operations/challenge.js +1 -1
  141. package/components/identity.passkeys/operations/create.js +1 -1
  142. package/components/identity.passkeys/operations/delete.js +1 -1
  143. package/components/identity.passkeys/operations/lib/const.js +1 -1
  144. package/components/identity.passkeys/operations/list.js +1 -1
  145. package/components/identity.passkeys/operations/types/Configuration.js +1 -1
  146. package/components/identity.passkeys/operations/types/Context.js +1 -1
  147. package/components/identity.passkeys/operations/types/Passkey.js +1 -1
  148. package/components/identity.passkeys/operations/types/index.js +1 -1
  149. package/components/identity.passkeys/operations/use.js +1 -1
  150. package/components/identity.passkeys/source/authenticate.ts +1 -1
  151. package/components/identity.passkeys/source/challenge.ts +1 -1
  152. package/components/identity.passkeys/source/create.ts +1 -1
  153. package/components/identity.passkeys/source/types/Context.ts +2 -1
  154. package/components/identity.passkeys/source/use.ts +1 -1
  155. package/components/identity.passkeys/tsconfig.json +1 -1
  156. package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -1
  157. package/components/identity.passkeys/types/index.d.ts +3 -0
  158. package/components/identity.passkeys/types/toa.d.ts +120 -0
  159. package/components/identity.roles/operations/grant.js +1 -1
  160. package/components/identity.roles/operations/lib/Entity.js +1 -1
  161. package/components/identity.roles/operations/list.js +1 -1
  162. package/components/identity.roles/operations/principal.js +29 -5
  163. package/components/identity.roles/source/principal.ts +33 -5
  164. package/components/identity.roles/tsconfig.json +1 -1
  165. package/components/identity.roles/tsconfig.tsbuildinfo +1 -1
  166. package/components/identity.roles/types/index.d.ts +3 -0
  167. package/components/identity.roles/types/toa.d.ts +43 -0
  168. package/components/identity.tokens/manifest.toa.yaml +34 -3
  169. package/components/identity.tokens/operations/authenticate.js +9 -1
  170. package/components/identity.tokens/operations/decrypt.js +3 -3
  171. package/components/identity.tokens/operations/encrypt.js +1 -1
  172. package/components/identity.tokens/operations/issue.js +3 -2
  173. package/components/identity.tokens/operations/lib/form.js +24 -0
  174. package/components/identity.tokens/operations/lib/index.js +2 -2
  175. package/components/identity.tokens/operations/lib/jose.js +1 -1
  176. package/components/identity.tokens/operations/lib/key.js +1 -1
  177. package/components/identity.tokens/operations/lib/pad.js +1 -1
  178. package/components/identity.tokens/operations/revoke.js +1 -1
  179. package/components/identity.tokens/source/authenticate.test.ts +8 -5
  180. package/components/identity.tokens/source/authenticate.ts +12 -1
  181. package/components/identity.tokens/source/decrypt.test.ts +1 -1
  182. package/components/identity.tokens/source/decrypt.ts +4 -3
  183. package/components/identity.tokens/source/encrypt.test.ts +1 -1
  184. package/components/identity.tokens/source/encrypt.ts +2 -1
  185. package/components/identity.tokens/source/issue.test.ts +71 -0
  186. package/components/identity.tokens/source/issue.ts +4 -2
  187. package/components/identity.tokens/source/lib/form.test.ts +25 -0
  188. package/components/identity.tokens/source/lib/form.ts +31 -0
  189. package/components/identity.tokens/source/lib/index.ts +2 -1
  190. package/components/identity.tokens/tsconfig.json +1 -1
  191. package/components/identity.tokens/tsconfig.tsbuildinfo +1 -1
  192. package/components/identity.tokens/types/index.d.ts +61 -0
  193. package/components/identity.tokens/types/toa.d.ts +113 -0
  194. package/documentation/access.md +13 -0
  195. package/documentation/cache.md +10 -1
  196. package/documentation/components.md +3 -0
  197. package/documentation/consent.md +101 -0
  198. package/documentation/identity.md +3 -1
  199. package/documentation/introspection.md +13 -5
  200. package/documentation/io.md +42 -2
  201. package/documentation/map.md +8 -0
  202. package/documentation/mcp.md +180 -0
  203. package/documentation/oauth.md +180 -0
  204. package/documentation/protocol.md +4 -0
  205. package/documentation/rpc.md +140 -0
  206. package/documentation/tree.md +3 -0
  207. package/features/auth.bearer.feature +120 -0
  208. package/features/cache.feature +46 -0
  209. package/features/identity.basic.feature +44 -0
  210. package/features/identity.federation.feature +2 -5
  211. package/features/introspection.feature +333 -0
  212. package/features/mcp.feature +687 -0
  213. package/features/oauth.clients.feature +195 -0
  214. package/features/oauth.discovery.feature +164 -0
  215. package/features/oauth.grants.feature +299 -0
  216. package/features/octets.cloudinary.feature +1 -0
  217. package/features/rpc.feature +429 -0
  218. package/features/steps/Cloudinary.ts +13 -0
  219. package/features/steps/Components.ts +0 -4
  220. package/features/steps/Gateway.ts +23 -2
  221. package/features/steps/Parameters.ts +22 -7
  222. package/features/steps/Realtime.ts +3 -0
  223. package/features/steps/components/echo/manifest.toa.yaml +3 -0
  224. package/features/steps/components/octets.tester/manifest.toa.yaml +2 -0
  225. package/features/steps/components/octets.tester/operations/redirect.js +6 -1
  226. package/features/steps/components/pots/manifest.toa.yaml +2 -0
  227. package/features/steps/components/users/manifest.toa.yaml +1 -0
  228. package/package.json +8 -6
  229. package/readme.md +6 -0
  230. package/schemas/annotation.cos.yaml +63 -0
  231. package/schemas/call.cos.yaml +18 -0
  232. package/source/Annotation.ts +54 -0
  233. package/source/Directive.test.ts +15 -15
  234. package/source/Directive.ts +77 -9
  235. package/source/Endpoint.test.ts +67 -0
  236. package/source/Endpoint.ts +31 -11
  237. package/source/Factory.ts +6 -2
  238. package/source/Gateway.ts +73 -11
  239. package/source/HTTP/Context.ts +7 -0
  240. package/source/HTTP/Server.ts +15 -5
  241. package/source/HTTP/exceptions.ts +2 -2
  242. package/source/HTTP/formats/form.ts +21 -0
  243. package/source/HTTP/formats/index.ts +17 -2
  244. package/source/HTTP/messages.test.ts +25 -1
  245. package/source/HTTP/messages.ts +20 -4
  246. package/source/Interception.ts +8 -2
  247. package/source/Introspection.ts +102 -0
  248. package/source/MCP/Server.ts +275 -0
  249. package/source/MCP/discover.ts +52 -0
  250. package/source/MCP/errors.ts +81 -0
  251. package/source/MCP/index.ts +1 -0
  252. package/source/MCP/schema.test.ts +85 -0
  253. package/source/MCP/schema.ts +87 -0
  254. package/source/MCP/tools.ts +156 -0
  255. package/source/MCP/types.ts +81 -0
  256. package/source/Query.ts +48 -8
  257. package/source/RPC/Context.ts +78 -0
  258. package/source/RPC/Dispatcher.ts +130 -0
  259. package/source/RPC/errors.test.ts +52 -0
  260. package/source/RPC/errors.ts +83 -0
  261. package/source/RPC/index.ts +1 -0
  262. package/source/RPC/names.test.ts +122 -0
  263. package/source/RPC/names.ts +182 -0
  264. package/source/RPC/types.ts +34 -0
  265. package/source/RTD/Directives.ts +52 -2
  266. package/source/RTD/Endpoint.ts +2 -1
  267. package/source/RTD/Method.ts +14 -11
  268. package/source/RTD/Node.ts +38 -7
  269. package/source/RTD/Route.ts +30 -3
  270. package/source/RTD/Tree.ts +37 -1
  271. package/source/RTD/expiration.test.ts +1 -1
  272. package/source/RTD/walk.test.ts +110 -0
  273. package/source/const.ts +15 -0
  274. package/source/deployment.ts +11 -1
  275. package/source/directives/auth/Anonymous.test.ts +38 -0
  276. package/source/directives/auth/Anonymous.ts +12 -0
  277. package/source/directives/auth/Anyone.ts +4 -0
  278. package/source/directives/auth/Authorization.ts +108 -22
  279. package/source/directives/auth/Delegate.test.ts +36 -0
  280. package/source/directives/auth/Delegate.ts +14 -0
  281. package/source/directives/auth/Echo.ts +5 -0
  282. package/source/directives/auth/Incept.ts +16 -10
  283. package/source/directives/auth/Role.ts +13 -0
  284. package/source/directives/auth/Rule.ts +29 -0
  285. package/source/directives/auth/Scheme.ts +5 -0
  286. package/source/directives/auth/schemes.test.ts +8 -4
  287. package/source/directives/auth/schemes.ts +22 -9
  288. package/source/directives/auth/types.ts +26 -2
  289. package/source/directives/cache/Cache.ts +14 -5
  290. package/source/directives/cache/Control.ts +0 -3
  291. package/source/directives/dev/Development.ts +1 -1
  292. package/source/directives/flow/Fetch.ts +1 -1
  293. package/source/directives/flow/Flow.ts +1 -1
  294. package/source/directives/index.ts +5 -2
  295. package/source/directives/io/Directive.ts +1 -1
  296. package/source/directives/io/IO.ts +34 -3
  297. package/source/directives/io/Input.ts +3 -2
  298. package/source/directives/io/Output.ts +10 -4
  299. package/source/directives/io/Status.test.ts +84 -0
  300. package/source/directives/io/Status.ts +46 -0
  301. package/source/directives/io/Throttle.ts +1 -1
  302. package/source/directives/io/lib/throttle/Quotas.ts +2 -2
  303. package/source/directives/map/Headers.ts +11 -0
  304. package/source/directives/map/Map.ts +10 -1
  305. package/source/directives/map/Mapping.ts +23 -0
  306. package/source/directives/map/Segments.ts +12 -0
  307. package/source/directives/mcp/MCP.ts +33 -0
  308. package/source/directives/mcp/Tool.test.ts +66 -0
  309. package/source/directives/mcp/Tool.ts +28 -0
  310. package/source/directives/mcp/index.ts +6 -0
  311. package/source/directives/oauth/Discovery.ts +70 -0
  312. package/source/directives/oauth/documents.ts +113 -0
  313. package/source/directives/oauth/index.ts +3 -0
  314. package/source/directives/octets/Delete.ts +1 -1
  315. package/source/directives/octets/Get.ts +1 -1
  316. package/source/directives/octets/Octets.ts +1 -1
  317. package/source/directives/octets/Workflow.ts +1 -1
  318. package/source/directives/octets/workflows/Execution.ts +1 -1
  319. package/source/directives/require/Directive.ts +1 -1
  320. package/source/directives/require/Headers.ts +1 -1
  321. package/source/directives/require/Require.ts +2 -2
  322. package/source/index.ts +6 -0
  323. package/source/octets.d.ts +17 -0
  324. package/source/schemas.ts +2 -0
  325. package/source/userland.ts +47 -0
  326. package/transpiled/Annotation.d.ts +41 -0
  327. package/transpiled/Directive.d.ts +18 -1
  328. package/transpiled/Directive.js +50 -6
  329. package/transpiled/Directive.js.map +1 -1
  330. package/transpiled/Endpoint.d.ts +9 -0
  331. package/transpiled/Endpoint.js +27 -11
  332. package/transpiled/Endpoint.js.map +1 -1
  333. package/transpiled/Factory.js +6 -2
  334. package/transpiled/Factory.js.map +1 -1
  335. package/transpiled/Gateway.d.ts +19 -2
  336. package/transpiled/Gateway.js +51 -9
  337. package/transpiled/Gateway.js.map +1 -1
  338. package/transpiled/HTTP/Context.d.ts +6 -0
  339. package/transpiled/HTTP/Context.js +6 -0
  340. package/transpiled/HTTP/Context.js.map +1 -1
  341. package/transpiled/HTTP/Server.d.ts +8 -1
  342. package/transpiled/HTTP/Server.js +4 -3
  343. package/transpiled/HTTP/Server.js.map +1 -1
  344. package/transpiled/HTTP/exceptions.d.ts +1 -1
  345. package/transpiled/HTTP/exceptions.js +2 -2
  346. package/transpiled/HTTP/exceptions.js.map +1 -1
  347. package/transpiled/HTTP/formats/form.d.ts +9 -0
  348. package/transpiled/HTTP/formats/form.js +18 -0
  349. package/transpiled/HTTP/formats/form.js.map +1 -0
  350. package/transpiled/HTTP/formats/index.d.ts +10 -2
  351. package/transpiled/HTTP/formats/index.js +10 -0
  352. package/transpiled/HTTP/formats/index.js.map +1 -1
  353. package/transpiled/HTTP/messages.d.ts +12 -0
  354. package/transpiled/HTTP/messages.js +12 -4
  355. package/transpiled/HTTP/messages.js.map +1 -1
  356. package/transpiled/Interception.d.ts +4 -1
  357. package/transpiled/Interception.js +4 -2
  358. package/transpiled/Interception.js.map +1 -1
  359. package/transpiled/Introspection.d.ts +40 -0
  360. package/transpiled/Introspection.js +50 -1
  361. package/transpiled/Introspection.js.map +1 -1
  362. package/transpiled/MCP/Server.d.ts +41 -0
  363. package/transpiled/MCP/Server.js +180 -0
  364. package/transpiled/MCP/Server.js.map +1 -0
  365. package/transpiled/MCP/discover.d.ts +13 -0
  366. package/transpiled/MCP/discover.js +29 -0
  367. package/transpiled/MCP/discover.js.map +1 -0
  368. package/transpiled/MCP/errors.d.ts +24 -0
  369. package/transpiled/MCP/errors.js +67 -0
  370. package/transpiled/MCP/errors.js.map +1 -0
  371. package/transpiled/MCP/index.d.ts +1 -0
  372. package/transpiled/MCP/index.js +2 -0
  373. package/transpiled/MCP/index.js.map +1 -0
  374. package/transpiled/MCP/schema.d.ts +18 -0
  375. package/transpiled/MCP/schema.js +64 -0
  376. package/transpiled/MCP/schema.js.map +1 -0
  377. package/transpiled/MCP/tools.d.ts +31 -0
  378. package/transpiled/MCP/tools.js +121 -0
  379. package/transpiled/MCP/tools.js.map +1 -0
  380. package/transpiled/MCP/types.d.ts +64 -0
  381. package/transpiled/MCP/types.js +13 -0
  382. package/transpiled/MCP/types.js.map +1 -0
  383. package/transpiled/Query.d.ts +7 -0
  384. package/transpiled/Query.js +38 -7
  385. package/transpiled/Query.js.map +1 -1
  386. package/transpiled/RPC/Context.d.ts +11 -0
  387. package/transpiled/RPC/Context.js +63 -0
  388. package/transpiled/RPC/Context.js.map +1 -0
  389. package/transpiled/RPC/Dispatcher.d.ts +19 -0
  390. package/transpiled/RPC/Dispatcher.js +100 -0
  391. package/transpiled/RPC/Dispatcher.js.map +1 -0
  392. package/transpiled/RPC/errors.d.ts +18 -0
  393. package/transpiled/RPC/errors.js +67 -0
  394. package/transpiled/RPC/errors.js.map +1 -0
  395. package/transpiled/RPC/index.d.ts +1 -0
  396. package/transpiled/RPC/index.js +2 -0
  397. package/transpiled/RPC/index.js.map +1 -0
  398. package/transpiled/RPC/names.d.ts +30 -0
  399. package/transpiled/RPC/names.js +121 -0
  400. package/transpiled/RPC/names.js.map +1 -0
  401. package/transpiled/RPC/types.d.ts +27 -0
  402. package/transpiled/RPC/types.js +8 -0
  403. package/transpiled/RPC/types.js.map +1 -0
  404. package/transpiled/RTD/Directives.d.ts +41 -2
  405. package/transpiled/RTD/Endpoint.d.ts +2 -1
  406. package/transpiled/RTD/Method.d.ts +8 -3
  407. package/transpiled/RTD/Method.js +12 -10
  408. package/transpiled/RTD/Method.js.map +1 -1
  409. package/transpiled/RTD/Node.d.ts +20 -2
  410. package/transpiled/RTD/Node.js +22 -4
  411. package/transpiled/RTD/Node.js.map +1 -1
  412. package/transpiled/RTD/Route.d.ts +2 -1
  413. package/transpiled/RTD/Route.js +27 -2
  414. package/transpiled/RTD/Route.js.map +1 -1
  415. package/transpiled/RTD/Tree.d.ts +3 -1
  416. package/transpiled/RTD/Tree.js +26 -0
  417. package/transpiled/RTD/Tree.js.map +1 -1
  418. package/transpiled/const.d.ts +12 -0
  419. package/transpiled/const.js +12 -0
  420. package/transpiled/const.js.map +1 -1
  421. package/transpiled/deployment.js +6 -0
  422. package/transpiled/deployment.js.map +1 -1
  423. package/transpiled/directives/auth/Anonymous.d.ts +6 -0
  424. package/transpiled/directives/auth/Anonymous.js +10 -0
  425. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  426. package/transpiled/directives/auth/Anyone.d.ts +1 -0
  427. package/transpiled/directives/auth/Anyone.js +3 -0
  428. package/transpiled/directives/auth/Anyone.js.map +1 -1
  429. package/transpiled/directives/auth/Authorization.d.ts +28 -2
  430. package/transpiled/directives/auth/Authorization.js +87 -19
  431. package/transpiled/directives/auth/Authorization.js.map +1 -1
  432. package/transpiled/directives/auth/Delegate.d.ts +5 -0
  433. package/transpiled/directives/auth/Delegate.js +10 -0
  434. package/transpiled/directives/auth/Delegate.js.map +1 -1
  435. package/transpiled/directives/auth/Echo.d.ts +2 -0
  436. package/transpiled/directives/auth/Echo.js +4 -0
  437. package/transpiled/directives/auth/Echo.js.map +1 -1
  438. package/transpiled/directives/auth/Incept.d.ts +1 -1
  439. package/transpiled/directives/auth/Incept.js +13 -8
  440. package/transpiled/directives/auth/Incept.js.map +1 -1
  441. package/transpiled/directives/auth/Role.d.ts +2 -0
  442. package/transpiled/directives/auth/Role.js +9 -0
  443. package/transpiled/directives/auth/Role.js.map +1 -1
  444. package/transpiled/directives/auth/Rule.d.ts +5 -0
  445. package/transpiled/directives/auth/Rule.js +20 -0
  446. package/transpiled/directives/auth/Rule.js.map +1 -1
  447. package/transpiled/directives/auth/Scheme.d.ts +2 -0
  448. package/transpiled/directives/auth/Scheme.js +4 -0
  449. package/transpiled/directives/auth/Scheme.js.map +1 -1
  450. package/transpiled/directives/auth/schemes.d.ts +16 -4
  451. package/transpiled/directives/auth/schemes.js +20 -8
  452. package/transpiled/directives/auth/schemes.js.map +1 -1
  453. package/transpiled/directives/auth/types.d.ts +20 -2
  454. package/transpiled/directives/cache/Cache.d.ts +1 -1
  455. package/transpiled/directives/cache/Cache.js +10 -3
  456. package/transpiled/directives/cache/Cache.js.map +1 -1
  457. package/transpiled/directives/cache/Control.js +0 -2
  458. package/transpiled/directives/cache/Control.js.map +1 -1
  459. package/transpiled/directives/dev/Development.d.ts +1 -1
  460. package/transpiled/directives/dev/Development.js +1 -1
  461. package/transpiled/directives/dev/Development.js.map +1 -1
  462. package/transpiled/directives/flow/Flow.d.ts +1 -1
  463. package/transpiled/directives/flow/Flow.js +1 -1
  464. package/transpiled/directives/flow/Flow.js.map +1 -1
  465. package/transpiled/directives/index.js +4 -2
  466. package/transpiled/directives/index.js.map +1 -1
  467. package/transpiled/directives/io/Directive.d.ts +1 -1
  468. package/transpiled/directives/io/IO.d.ts +7 -1
  469. package/transpiled/directives/io/IO.js +25 -3
  470. package/transpiled/directives/io/IO.js.map +1 -1
  471. package/transpiled/directives/io/Input.d.ts +3 -2
  472. package/transpiled/directives/io/Input.js +2 -1
  473. package/transpiled/directives/io/Input.js.map +1 -1
  474. package/transpiled/directives/io/Output.d.ts +5 -3
  475. package/transpiled/directives/io/Output.js +8 -3
  476. package/transpiled/directives/io/Output.js.map +1 -1
  477. package/transpiled/directives/io/Status.d.ts +19 -0
  478. package/transpiled/directives/io/Status.js +34 -0
  479. package/transpiled/directives/io/Status.js.map +1 -0
  480. package/transpiled/directives/io/Throttle.d.ts +1 -1
  481. package/transpiled/directives/io/Throttle.js +1 -1
  482. package/transpiled/directives/io/Throttle.js.map +1 -1
  483. package/transpiled/directives/io/lib/throttle/Quotas.d.ts +1 -1
  484. package/transpiled/directives/io/lib/throttle/Quotas.js +2 -2
  485. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -1
  486. package/transpiled/directives/map/Headers.d.ts +2 -0
  487. package/transpiled/directives/map/Headers.js +8 -0
  488. package/transpiled/directives/map/Headers.js.map +1 -1
  489. package/transpiled/directives/map/Map.d.ts +3 -1
  490. package/transpiled/directives/map/Map.js +7 -1
  491. package/transpiled/directives/map/Map.js.map +1 -1
  492. package/transpiled/directives/map/Mapping.d.ts +13 -0
  493. package/transpiled/directives/map/Mapping.js +20 -0
  494. package/transpiled/directives/map/Mapping.js.map +1 -1
  495. package/transpiled/directives/map/Segments.d.ts +3 -0
  496. package/transpiled/directives/map/Segments.js +9 -0
  497. package/transpiled/directives/map/Segments.js.map +1 -1
  498. package/transpiled/directives/mcp/MCP.d.ts +15 -0
  499. package/transpiled/directives/mcp/MCP.js +23 -0
  500. package/transpiled/directives/mcp/MCP.js.map +1 -0
  501. package/transpiled/directives/mcp/Tool.d.ts +13 -0
  502. package/transpiled/directives/mcp/Tool.js +23 -0
  503. package/transpiled/directives/mcp/Tool.js.map +1 -0
  504. package/transpiled/directives/mcp/index.d.ts +4 -0
  505. package/transpiled/directives/mcp/index.js +4 -0
  506. package/transpiled/directives/mcp/index.js.map +1 -0
  507. package/transpiled/directives/oauth/Discovery.d.ts +23 -0
  508. package/transpiled/directives/oauth/Discovery.js +55 -0
  509. package/transpiled/directives/oauth/Discovery.js.map +1 -0
  510. package/transpiled/directives/oauth/documents.d.ts +9 -0
  511. package/transpiled/directives/oauth/documents.js +82 -0
  512. package/transpiled/directives/oauth/documents.js.map +1 -0
  513. package/transpiled/directives/oauth/index.d.ts +2 -0
  514. package/transpiled/directives/oauth/index.js +3 -0
  515. package/transpiled/directives/oauth/index.js.map +1 -0
  516. package/transpiled/directives/octets/Octets.d.ts +1 -1
  517. package/transpiled/directives/octets/Octets.js +1 -1
  518. package/transpiled/directives/octets/Octets.js.map +1 -1
  519. package/transpiled/directives/require/Directive.d.ts +1 -1
  520. package/transpiled/directives/require/Headers.d.ts +1 -1
  521. package/transpiled/directives/require/Headers.js +1 -1
  522. package/transpiled/directives/require/Headers.js.map +1 -1
  523. package/transpiled/directives/require/Require.d.ts +1 -1
  524. package/transpiled/directives/require/Require.js +2 -2
  525. package/transpiled/directives/require/Require.js.map +1 -1
  526. package/transpiled/index.d.ts +2 -0
  527. package/transpiled/schemas.d.ts +2 -0
  528. package/transpiled/schemas.js +1 -0
  529. package/transpiled/schemas.js.map +1 -1
  530. package/transpiled/userland.d.ts +39 -0
  531. package/transpiled/userland.js +7 -0
  532. package/transpiled/userland.js.map +1 -0
  533. package/tsconfig.tsbuildinfo +1 -1
  534. package/components/identity.bans/operations/transit.d.ts +0 -14
  535. package/components/identity.bans/operations/transit.js.map +0 -1
  536. package/components/identity.basic/operations/add.d.ts +0 -3
  537. package/components/identity.basic/operations/add.js.map +0 -1
  538. package/components/identity.basic/operations/authenticate.d.ts +0 -13
  539. package/components/identity.basic/operations/authenticate.js.map +0 -1
  540. package/components/identity.basic/operations/check.d.ts +0 -7
  541. package/components/identity.basic/operations/check.js.map +0 -1
  542. package/components/identity.basic/operations/delete.d.ts +0 -7
  543. package/components/identity.basic/operations/delete.js.map +0 -1
  544. package/components/identity.basic/operations/incept.d.ts +0 -12
  545. package/components/identity.basic/operations/incept.js.map +0 -1
  546. package/components/identity.basic/operations/info.d.ts +0 -10
  547. package/components/identity.basic/operations/info.js.map +0 -1
  548. package/components/identity.basic/operations/lib/credentials.d.ts +0 -5
  549. package/components/identity.basic/operations/lib/credentials.js.map +0 -1
  550. package/components/identity.basic/operations/transit.d.ts +0 -14
  551. package/components/identity.basic/operations/transit.js.map +0 -1
  552. package/components/identity.basic/operations/types.d.ts +0 -61
  553. package/components/identity.basic/operations/types.js +0 -2
  554. package/components/identity.basic/operations/types.js.map +0 -1
  555. package/components/identity.basic/source/types.ts +0 -69
  556. package/components/identity.credentials/operations/list.d.ts +0 -51
  557. package/components/identity.credentials/operations/list.js.map +0 -1
  558. package/components/identity.federation/operations/authenticate.d.ts +0 -16
  559. package/components/identity.federation/operations/authenticate.js.map +0 -1
  560. package/components/identity.federation/operations/create.d.ts +0 -8
  561. package/components/identity.federation/operations/create.js.map +0 -1
  562. package/components/identity.federation/operations/decode.d.ts +0 -3
  563. package/components/identity.federation/operations/decode.js.map +0 -1
  564. package/components/identity.federation/operations/delete.d.ts +0 -8
  565. package/components/identity.federation/operations/delete.js.map +0 -1
  566. package/components/identity.federation/operations/incept.d.ts +0 -11
  567. package/components/identity.federation/operations/incept.js.map +0 -1
  568. package/components/identity.federation/operations/lib/Configuration.d.ts +0 -39
  569. package/components/identity.federation/operations/lib/Configuration.js.map +0 -1
  570. package/components/identity.federation/operations/lib/Ctx.d.ts +0 -8
  571. package/components/identity.federation/operations/lib/Ctx.js.map +0 -1
  572. package/components/identity.federation/operations/lib/Payload.d.ts +0 -5
  573. package/components/identity.federation/operations/lib/Payload.js.map +0 -1
  574. package/components/identity.federation/operations/lib/decode.d.ts +0 -3
  575. package/components/identity.federation/operations/lib/decode.js.map +0 -1
  576. package/components/identity.federation/operations/lib/discovery.d.ts +0 -5
  577. package/components/identity.federation/operations/lib/discovery.js.map +0 -1
  578. package/components/identity.federation/operations/lib/errors.d.ts +0 -70
  579. package/components/identity.federation/operations/lib/errors.js.map +0 -1
  580. package/components/identity.federation/operations/lib/exchange.d.ts +0 -3
  581. package/components/identity.federation/operations/lib/exchange.js.map +0 -1
  582. package/components/identity.federation/operations/lib/index.d.ts +0 -4
  583. package/components/identity.federation/operations/lib/index.js.map +0 -1
  584. package/components/identity.federation/operations/lib/jose.d.ts +0 -1
  585. package/components/identity.federation/operations/lib/jose.js.map +0 -1
  586. package/components/identity.federation/operations/lib/resolve.d.ts +0 -3
  587. package/components/identity.federation/operations/lib/resolve.js.map +0 -1
  588. package/components/identity.federation/operations/list.d.ts +0 -7
  589. package/components/identity.federation/operations/list.js.map +0 -1
  590. package/components/identity.federation/operations/types/Scheme.d.ts +0 -1
  591. package/components/identity.federation/operations/types/Scheme.js.map +0 -1
  592. package/components/identity.federation/operations/types/configuration.d.ts +0 -22
  593. package/components/identity.federation/operations/types/configuration.js.map +0 -1
  594. package/components/identity.federation/operations/types/context.d.ts +0 -35
  595. package/components/identity.federation/operations/types/context.js.map +0 -1
  596. package/components/identity.federation/operations/types/entity.d.ts +0 -9
  597. package/components/identity.federation/operations/types/entity.js.map +0 -1
  598. package/components/identity.federation/operations/types/index.d.ts +0 -4
  599. package/components/identity.federation/operations/types/index.js.map +0 -1
  600. package/components/identity.keys/operations/create.d.ts +0 -22
  601. package/components/identity.keys/operations/create.js.map +0 -1
  602. package/components/identity.keys/operations/disable.d.ts +0 -5
  603. package/components/identity.keys/operations/disable.js.map +0 -1
  604. package/components/identity.keys/operations/revoke.d.ts +0 -15
  605. package/components/identity.keys/operations/revoke.js.map +0 -1
  606. package/components/identity.otp/operations/authenticate.d.ts +0 -12
  607. package/components/identity.otp/operations/authenticate.js.map +0 -1
  608. package/components/identity.otp/operations/issue.d.ts +0 -12
  609. package/components/identity.otp/operations/issue.js.map +0 -1
  610. package/components/identity.otp/operations/lib/Context.d.ts +0 -14
  611. package/components/identity.otp/operations/lib/Context.js.map +0 -1
  612. package/components/identity.otp/operations/lib/Entity.d.ts +0 -6
  613. package/components/identity.otp/operations/lib/Entity.js.map +0 -1
  614. package/components/identity.otp/operations/lib/index.d.ts +0 -1
  615. package/components/identity.otp/operations/lib/index.js.map +0 -1
  616. package/components/identity.passkeys/operations/authenticate.d.ts +0 -16
  617. package/components/identity.passkeys/operations/authenticate.js.map +0 -1
  618. package/components/identity.passkeys/operations/challenge.d.ts +0 -35
  619. package/components/identity.passkeys/operations/challenge.js.map +0 -1
  620. package/components/identity.passkeys/operations/create.d.ts +0 -19
  621. package/components/identity.passkeys/operations/create.js.map +0 -1
  622. package/components/identity.passkeys/operations/delete.d.ts +0 -8
  623. package/components/identity.passkeys/operations/delete.js.map +0 -1
  624. package/components/identity.passkeys/operations/lib/const.d.ts +0 -1
  625. package/components/identity.passkeys/operations/lib/const.js.map +0 -1
  626. package/components/identity.passkeys/operations/list.d.ts +0 -7
  627. package/components/identity.passkeys/operations/list.js.map +0 -1
  628. package/components/identity.passkeys/operations/types/Configuration.d.ts +0 -6
  629. package/components/identity.passkeys/operations/types/Configuration.js.map +0 -1
  630. package/components/identity.passkeys/operations/types/Context.d.ts +0 -15
  631. package/components/identity.passkeys/operations/types/Context.js.map +0 -1
  632. package/components/identity.passkeys/operations/types/Passkey.d.ts +0 -12
  633. package/components/identity.passkeys/operations/types/Passkey.js.map +0 -1
  634. package/components/identity.passkeys/operations/types/index.d.ts +0 -2
  635. package/components/identity.passkeys/operations/types/index.js.map +0 -1
  636. package/components/identity.passkeys/operations/use.d.ts +0 -16
  637. package/components/identity.passkeys/operations/use.js.map +0 -1
  638. package/components/identity.roles/operations/grant.d.ts +0 -10
  639. package/components/identity.roles/operations/grant.js.map +0 -1
  640. package/components/identity.roles/operations/lib/Entity.d.ts +0 -5
  641. package/components/identity.roles/operations/lib/Entity.js.map +0 -1
  642. package/components/identity.roles/operations/list.d.ts +0 -2
  643. package/components/identity.roles/operations/list.js.map +0 -1
  644. package/components/identity.roles/operations/principal.d.ts +0 -13
  645. package/components/identity.roles/operations/principal.js.map +0 -1
  646. package/components/identity.tokens/operations/authenticate.d.ts +0 -9
  647. package/components/identity.tokens/operations/authenticate.js.map +0 -1
  648. package/components/identity.tokens/operations/decrypt.d.ts +0 -15
  649. package/components/identity.tokens/operations/decrypt.js.map +0 -1
  650. package/components/identity.tokens/operations/encrypt.d.ts +0 -8
  651. package/components/identity.tokens/operations/encrypt.js.map +0 -1
  652. package/components/identity.tokens/operations/issue.d.ts +0 -24
  653. package/components/identity.tokens/operations/issue.js.map +0 -1
  654. package/components/identity.tokens/operations/lib/index.d.ts +0 -3
  655. package/components/identity.tokens/operations/lib/index.js.map +0 -1
  656. package/components/identity.tokens/operations/lib/jose.d.ts +0 -1
  657. package/components/identity.tokens/operations/lib/jose.js.map +0 -1
  658. package/components/identity.tokens/operations/lib/key.d.ts +0 -1
  659. package/components/identity.tokens/operations/lib/key.js.map +0 -1
  660. package/components/identity.tokens/operations/lib/pad.d.ts +0 -1
  661. package/components/identity.tokens/operations/lib/pad.js.map +0 -1
  662. package/components/identity.tokens/operations/lib/types.d.ts +0 -88
  663. package/components/identity.tokens/operations/lib/types.js +0 -2
  664. package/components/identity.tokens/operations/lib/types.js.map +0 -1
  665. package/components/identity.tokens/operations/revoke.d.ts +0 -2
  666. package/components/identity.tokens/operations/revoke.js.map +0 -1
  667. package/components/identity.tokens/source/lib/types.ts +0 -102
@@ -0,0 +1,101 @@
1
+ # Consent
2
+
3
+ The one endpoint of the [authorization server](oauth.md) that needs a person, and so the one this
4
+ extension does not serve. An application serves it at the URL its `exposition.oauth.authorize`
5
+ names.
6
+
7
+ The page is reached by a client opening it in the user's browser. It authenticates the user, shows
8
+ them who is asking, and on their assent redirects back to the client with a code.
9
+
10
+ ## What the page receives
11
+
12
+ ```
13
+ GET https://app.example.com/oauth/authorize
14
+ ?response_type=code
15
+ &client_id=https%3A%2F%2Fclaude.ai%2Foauth%2Fclaude-code-client-metadata
16
+ &redirect_uri=http%3A%2F%2Flocalhost%3A3118%2Fcallback
17
+ &code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM
18
+ &code_challenge_method=S256
19
+ &state=af0ifjsldkj
20
+ &resource=https%3A%2F%2Fapi.example.com%2Fmcp
21
+ &scope=app:notes
22
+ ```
23
+
24
+ `state` is the client's and is returned untouched. `code_challenge`, `code_challenge_method`,
25
+ `client_id`, `redirect_uri` and `resource` are passed on as they arrived.
26
+
27
+ ## What the page does
28
+
29
+ The user is authenticated by whatever means the application already offers. The page then holds
30
+ that identity's own `Token`, and makes two calls with it.
31
+
32
+ Who is asking:
33
+
34
+ ```http
35
+ GET /identity/clients/https%3A%2F%2Fclaude.ai%2Foauth%2Fclaude-code-client-metadata/ HTTP/1.1
36
+ authorization: Token …
37
+ ```
38
+
39
+ ```yaml
40
+ client_id: https://claude.ai/oauth/claude-code-client-metadata
41
+ client_name: Claude Code
42
+ client_uri: https://claude.ai
43
+ logo_uri: https://claude.ai/logo.png
44
+ redirect_uris: [http://localhost/callback, http://127.0.0.1/callback]
45
+ ```
46
+
47
+ The page displays `client_name`, and **the host of `redirect_uri`**. A loopback redirect is
48
+ indistinguishable from any other local process, so the user is told where the code will be sent.
49
+
50
+ On assent:
51
+
52
+ ```http
53
+ POST /identity/grants/:identity/ HTTP/1.1
54
+ authorization: Token …
55
+ content-type: application/json
56
+
57
+ {"client": "…", "redirect": "…", "challenge": "…", "method": "S256",
58
+ "scope": ["app:notes"], "resource": ["https://api.example.com/mcp"]}
59
+ ```
60
+
61
+ ```http
62
+ 201 Created
63
+ cache-control: no-store
64
+
65
+ {"code": "SplxlOBeZQQYbYS6WxSbIA", "expires_in": 60}
66
+ ```
67
+
68
+ `:identity` is the id of the identity that consents, which is the one the page authenticated.
69
+
70
+ ## What the page answers
71
+
72
+ On assent, a redirect carrying the code, the client's `state`, and the issuer:
73
+
74
+ ```
75
+ 302 Found
76
+ location: http://localhost:3118/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=af0ifjsldkj&iss=https%3A%2F%2Fapi.example.com
77
+ ```
78
+
79
+ A single-page application does this with `location.assign`; nothing requires a server redirect.
80
+
81
+ `iss` is [RFC 9207](https://www.rfc-editor.org/rfc/rfc9207), and the metadata declares that it is
82
+ sent, so a client rejects a response without it. Its value is the `issuer` of
83
+ `/.well-known/oauth-authorization-server`, which the page may read.
84
+
85
+ On refusal, a redirect saying so, not an error page:
86
+
87
+ ```
88
+ 302 Found
89
+ location: http://localhost:3118/callback?error=access_denied&state=af0ifjsldkj&iss=https%3A%2F%2Fapi.example.com
90
+ ```
91
+
92
+ ## Errors
93
+
94
+ `400` with `error` and `error_description` is answered when the client is unknown, when the
95
+ redirect is not one that client may receive a code at, or when the challenge method is not `S256`.
96
+ A redirect that was not registered must not be redirected to; the page states the refusal itself.
97
+
98
+ ## Consent is asked every time
99
+
100
+ A grant is recorded, and `GET /identity/grants/:identity/` lists what a user allowed, but it is
101
+ not consulted to skip this page.
@@ -83,7 +83,9 @@ the request path.
83
83
 
84
84
  ### Bearer scheme
85
85
 
86
- OpenID tokens issued by trusted providers.
86
+ OpenID tokens issued by trusted providers, and access tokens issued by
87
+ [this authorization server](oauth.md) to OAuth clients. Both are presented the same way, and each
88
+ provider says which credentials are its own; a credential neither claims is refused.
87
89
  For more information, refer
88
90
  to [OpenID Connect Core 1.0](https://openid.net/specs/openid-connect-core-1_0.html),
89
91
  [RFC6750](https://datatracker.ietf.org/doc/html/rfc6750).
@@ -1,14 +1,21 @@
1
1
  # Resource introspection
2
2
 
3
3
  Any resource can be introspected by sending an `OPTIONS` request to the resource's path.
4
- The response will contain the resource's input and output schemas for each supported method.
4
+
5
+ What it answers is what the route's directives leave of what the operation declared, for each
6
+ method the request may reach. A method it may not is not there, nor in `Allow`; a resource whose
7
+ every method it may not reach is `403`.
5
8
 
6
9
  Introspection properties:
7
10
 
8
- - `route` route parameters
11
+ - `description` what the route states this method is, from [`mcp:tool`](mcp.md#what-a-tool-is).
12
+ The operation states what it is too, and that is not this: it is written without knowledge of
13
+ any route, and the same operation mounted twice is two methods
14
+ - `route` route parameters, including what `map:segments` names differently
9
15
  - `query` query parameters
10
- - `input` input schema
11
- - `output` output schema
16
+ - `headers` properties `map:headers` reads from a request header, and which header
17
+ - `input` input schema, restricted by `io:input`, without what the gateway fills itself
18
+ - `output` output schema, restricted by `io:output`; absent where the reply is not sent at all
12
19
  - `errors` error codes
13
20
 
14
21
  ```http
@@ -18,9 +25,10 @@ accept: application/yaml
18
25
 
19
26
  ```http
20
27
  200 OK
21
- Allow: GET, POST, OPTIONS
28
+ Allow: GET, POST
22
29
 
23
30
  GET:
31
+ description: Every pot there is, newest first.
24
32
  route:
25
33
  id:
26
34
  type: string
@@ -1,7 +1,7 @@
1
1
  # I/O restrictions
2
2
 
3
3
  The Exposition comes with `io` directives to control access to the operation's input and output
4
- properties.
4
+ properties, and to let an operation state the status of its reply.
5
5
 
6
6
  ## Input
7
7
 
@@ -53,7 +53,41 @@ GET:
53
53
  io:output: false
54
54
  ```
55
55
 
56
- Output restrictions are not applied to stream responses and errors.
56
+ Output restrictions are not applied to stream responses, nor to a reply the gateway built out of an
57
+ exception — an operation that returns an error is answered with a code and a message of the
58
+ gateway's own, and a list of permitted properties has nothing to say about those. A reply the
59
+ operation returned is restricted whatever status it carries, see [Status](#status).
60
+
61
+ ## Status
62
+
63
+ The `io:status` optional directive names a property of the reply that carries the status of the
64
+ response. The property is removed from the body.
65
+
66
+ ```yaml
67
+ POST:
68
+ endpoint: register
69
+ io:status: status
70
+ io:output: [client_id, client_name, error, error_description]
71
+ ```
72
+
73
+ ```javascript
74
+ return { status: 400, error: 'invalid_redirect_uri' }
75
+ ```
76
+
77
+ ```http
78
+ 400 Bad Request
79
+
80
+ error: invalid_redirect_uri
81
+ ```
82
+
83
+ A reply that does not carry the property is answered with the status it would have been. A property
84
+ that is not a number is an error.
85
+
86
+ This is for an outcome the operation knows and the transport does not — a protocol that states its
87
+ error as a body rather than as a status of its own, or a request that created where it might have
88
+ updated. Such an operation returns no error: both replies are its output, and `io:output` permits
89
+ the properties of both. An operation that does return an error is unaffected — that reply is the
90
+ gateway's, and is not restricted.
57
91
 
58
92
  ## Throttling
59
93
 
@@ -125,3 +159,9 @@ io:throttle:
125
159
 
126
160
  An address may probe for twenty missing paths at once, and thereafter for one every thirty seconds.
127
161
  Requests that find something are served and never counted against it.
162
+
163
+ ## Introspection
164
+
165
+ What these admit is what [`OPTIONS`](introspection.md) states: `io:input` restricts the input
166
+ schema, `io:output` the output schema, and a method declaring no `io:output` states no output at
167
+ all — nothing of the reply is sent.
@@ -113,3 +113,11 @@ the names of the claims.
113
113
 
114
114
  If the claim is not present in the token or the request is not authenticated using
115
115
  the [`Bearer` scheme](identity.md#bearer-scheme), the input properties are not set.
116
+
117
+ ## Introspection
118
+
119
+ A property a mapping fills is not the caller's to send, so [`OPTIONS`](introspection.md) takes it
120
+ out of the input. `map:headers` states it under `headers`, naming the header it is read from, and
121
+ `map:segments` under `route`, named as the property rather than as the segment. The rest —
122
+ `map:claims`, `map:authority`, `map:language`, `map:buffer` — come from the request itself, and a
123
+ caller has nowhere to put one.
@@ -0,0 +1,180 @@
1
+ # Model Context Protocol
2
+
3
+ An application annotates it, and the methods it names as tools are what a model may call.
4
+
5
+ ```yaml
6
+ exposition:
7
+ mcp:
8
+ name: Teapots
9
+ instructions: A pot is read by its id. A pot that is brewing cannot be emptied.
10
+ origins: [https://claude.ai]
11
+ ```
12
+
13
+ <dl>
14
+ <dt><code>name</code></dt>
15
+ <dd>Required. What the server calls itself, which a client shows a user.</dd>
16
+ <dt><code>instructions</code></dt>
17
+ <dd>What a model is told before it calls anything here.</dd>
18
+ <dt><code>origins</code></dt>
19
+ <dd>Browser origins the endpoint answers. A request carrying an <code>Origin</code> that is not
20
+ listed is <code>403</code>, and an empty list admits none; a request carrying none is unaffected.</dd>
21
+ <dt><code>anonymous</code></dt>
22
+ <dd>Whether the endpoint answers without a credential. It does not unless it says so.</dd>
23
+ </dl>
24
+
25
+ Without the annotation `/.mcp` is a path like any other, and nothing answers there. The path is
26
+ fixed: one an application could choose is one it could collide with a route of its own.
27
+
28
+ ## What a tool is
29
+
30
+ A tool is an RTD method that says it is one, named as the [procedure](rpc.md#the-name) it is:
31
+
32
+ ```yaml
33
+ /pots:
34
+ GET:
35
+ mcp:tool: Every pot there is, newest first.
36
+ endpoint: enumerate
37
+ /hot:
38
+ GET:
39
+ query: { criteria: temperature=gt=80 }
40
+ mcp:tool: The pots that are too hot to pour.
41
+ endpoint: enumerate
42
+ ```
43
+
44
+ A default denies, and a tree holds everything an application serves — its identity endpoints, its
45
+ uploads, the machinery of the authorization flow the model already came through. Publishing all of
46
+ it would spend a model's context on what it has no business calling.
47
+
48
+ The value is what the tool is, and stating it is what publishes it — there is no way to publish one
49
+ that says nothing, because a tool a model cannot read the purpose of is one it cannot choose.
50
+
51
+ An operation [states what it is](/documentation/component/declaration.md) as well, and that is not
52
+ this: it is written without knowledge of any route, and a tool is an operation and a route together.
53
+ The two routes above are one operation and two tools, and one sentence is not true of both. The
54
+ operation's own is the Introspection's to read, and the gateway does not use it.
55
+
56
+ A declaration is inherited by everything below it, as every directive is, and the nearer one wins.
57
+ Since what it carries is what one method is, it belongs on a method: a node stating one would say
58
+ the same thing of everything under it.
59
+
60
+ A route whose name a client [cannot spell](rpc.md#what-has-a-name) is refused where the directive
61
+ is built, rather than served as a tool that is quietly never listed.
62
+
63
+ `tools/list` answers every published method this caller may reach — a method whose directives refuse
64
+ them is not listed, and a route with [no name](rpc.md#what-has-a-name) is not either. `tools/call`
65
+ answers `404` to a name that is not published, whether or not a route would have taken it: what an
66
+ application did not publish is not reachable by guessing what it would have been called.
67
+
68
+ `annotations` are read from the verb: `GET` and `HEAD` are `readOnlyHint`, `DELETE` is
69
+ `destructiveHint`, `PUT` and `DELETE` are `idempotentHint`.
70
+
71
+ ## What a tool takes
72
+
73
+ `inputSchema` is the procedure's `params`, which is what the method
74
+ [says of itself](introspection.md): a route variable by the name the template gives it, the
75
+ querystring under `query`, and what is left is the body. `io:input` restricts it, and a property
76
+ `map` fills is not there — a call carries no headers of its own.
77
+
78
+ ```yaml
79
+ type: object
80
+ properties:
81
+ id: { type: string, pattern: ^[a-fA-F0-9]{32}$ }
82
+ query:
83
+ type: object
84
+ properties:
85
+ criteria: { type: string }
86
+ sort: { type: string }
87
+ limit: { type: integer, minimum: 1, maximum: 100, default: 10 }
88
+ omit: { type: integer, minimum: 0, maximum: 1000, default: 0 }
89
+ required: [id]
90
+ additionalProperties: false
91
+ ```
92
+
93
+ ## What a tool answers
94
+
95
+ `content` carries one `text` block holding the reply's JSON, and `structuredContent` the reply
96
+ itself. A reply of nothing is an empty `content`.
97
+
98
+ `outputSchema` is what the operation declares, restricted by `io:output`. An operation's `output` is
99
+ optional and normalizes to `{}`, which describes nothing, and none is stated for it — an
100
+ application that wants the schema declares the operation's `output`.
101
+
102
+ An operation that refuses answers a result with `isError: true` carrying its message, not an error
103
+ of the protocol: it is something a model reads and may correct itself by.
104
+
105
+ ## Two revisions
106
+
107
+ Both are answered from one endpoint that remembers nothing between requests.
108
+ [`2026-07-28`](https://modelcontextprotocol.io/specification/2026-07-28) carries the version and
109
+ the client's capabilities in every request; `2025-11-25` opens with `initialize`. Which one a
110
+ request is, is read from `MCP-Protocol-Version`, or from
111
+ `_meta['io.modelcontextprotocol/protocolVersion']` where the header is absent; `initialize` is one
112
+ by itself, and a request naming no version is of a revision that sent none.
113
+
114
+ | method | |
115
+ | --- | --- |
116
+ | `server/discover` | what is served, and who serves it |
117
+ | `tools/list` | every tool this caller may reach, in a stable order |
118
+ | `tools/call` | the call the tool is |
119
+ | `initialize` | the same as `server/discover`, in the shape a client of `2025-11-25` reads |
120
+ | `notifications/initialized` | `202`, and nothing done |
121
+ | `ping` | `{}` |
122
+
123
+ `POST` only, one message per request; `GET` and `DELETE` are `405`. An `Mcp-Session-Id` is ignored
124
+ and none is minted, a `Last-Event-ID` is ignored, and `accept` is negotiated as everywhere else.
125
+
126
+ Of the modern revision, `MCP-Protocol-Version` and `Mcp-Method` are required, and `Mcp-Name` for a
127
+ `tools/call`; each must say what the body says. `_meta` states the protocol version and the client's
128
+ capabilities. Every result carries `resultType` and names the server in its own `_meta`, and a
129
+ `server/discover` or a `tools/list` carries how long it may be held: half an hour, `public` for the
130
+ first and `private` for the second, which is filtered by the identity that asked.
131
+
132
+ Neither `listChanged` nor a subscription is declared: both are a stream held open, and this endpoint
133
+ holds none.
134
+
135
+ ## Authorization
136
+
137
+ The endpoint is a protected resource, and an application advertises it as one:
138
+
139
+ ```yaml
140
+ exposition:
141
+ oauth:
142
+ authorize: https://app.example.com/oauth/authorize
143
+ resources: ['/.mcp']
144
+ ```
145
+
146
+ Its RFC 9728 document is then read at `/.well-known/oauth-protected-resource/.mcp`, and the
147
+ canonical URI of the resource is `https://api.example.com/.mcp`. See [OAuth](oauth.md).
148
+
149
+ A request without a credential is `401`, carrying the challenge that names that document — which is
150
+ where the flow starts. A call the identity is not authorized to make is `403` with
151
+ `error="insufficient_scope"`. Each tool is authorized as the resource it is, against the path and
152
+ the verb its name states.
153
+
154
+ A route that is [`anonymous`](access.md#anonymous) is reached here whatever the client presented:
155
+ the rule that refuses a credentialed request is about a cacheable reply, and what a tool answers is
156
+ not one. So a resource that is public over HTTP is a public tool, and nothing in a manifest has to
157
+ say it twice.
158
+
159
+ ## What refuses
160
+
161
+ | | |
162
+ | --- | --- |
163
+ | `-32700` | the body is not readable |
164
+ | `-32600` | the body is not one JSON-RPC message |
165
+ | `-32601` | no method of that name, at `404` |
166
+ | `-32602` | the arguments do not fit, or `_meta` states too little |
167
+ | `-32603` | anything the gateway did not mean to answer |
168
+ | `-32020` | a header says one thing and the body another |
169
+ | `-32022` | a revision neither served, naming both |
170
+
171
+ The codes MCP reserves for itself are `-32020` to `-32099`, and it has an implementation use none of
172
+ `-32000` to `-32019` — which is where [JSON-RPC](rpc.md#what-refuses) has this gateway's own, so none
173
+ of those is answered here.
174
+
175
+ ## References
176
+
177
+ - [The specification](https://modelcontextprotocol.io/specification/2026-07-28)
178
+ - [JSON-RPC](rpc.md), where a procedure gets its name
179
+ - [Introspection](introspection.md), which is what a tool's schemas are
180
+ - [Features](../features/mcp.feature)
@@ -0,0 +1,180 @@
1
+ # OAuth 2.1 Authorization Server
2
+
3
+ An application exposes an authorization server by annotating one, and none without it. A client
4
+ authorized this way holds a token of the identity that consented, and presents it as `Bearer`.
5
+
6
+ ## Annotation
7
+
8
+ ```yaml
9
+ exposition:
10
+ authorities:
11
+ local: api.example.com
12
+ oauth:
13
+ authorize: https://app.example.com/oauth/authorize
14
+ resources: ['/.mcp']
15
+ scopes: [app:notes, app:notes:read]
16
+ registration: closed
17
+ ```
18
+
19
+ <dl>
20
+ <dt><code>authorize</code></dt>
21
+ <dd>Required. The absolute URL of the consent page. The application serves it; see
22
+ <a href="consent.md">Consent</a>.</dd>
23
+ <dt><code>resources</code></dt>
24
+ <dd>Paths advertised as protected resources, each with a document of its own and named by the
25
+ challenge a request to it is refused with. <code>/.mcp</code> is where
26
+ <a href="mcp.md">MCP</a> is served. A token is not yet bound to one, see
27
+ <a href="#audience">Audience</a>.</dd>
28
+ <dt><code>scopes</code></dt>
29
+ <dd>Advertised as what a client may ask for. Each is a <a href="access.md#roles">role</a>, or a
30
+ scope within one.</dd>
31
+ <dt><code>registration</code></dt>
32
+ <dd><code>open</code> advertises the registration endpoint, <code>closed</code> does not.
33
+ Defaults to <code>closed</code>.</dd>
34
+ </dl>
35
+
36
+ The issuer is the authority's configured host, over `https` unless the host is a loopback one.
37
+
38
+ ## Discovery
39
+
40
+ Two documents are served, at the paths their specifications fix, to anyone.
41
+
42
+ `/.well-known/oauth-authorization-server` is
43
+ [RFC 8414](https://www.rfc-editor.org/rfc/rfc8414) metadata:
44
+
45
+ ```yaml
46
+ issuer: https://api.example.com
47
+ authorization_endpoint: https://app.example.com/oauth/authorize
48
+ token_endpoint: https://api.example.com/identity/grants/
49
+ registration_endpoint: https://api.example.com/identity/clients/
50
+ response_types_supported: [code]
51
+ grant_types_supported: [authorization_code]
52
+ code_challenge_methods_supported: [S256]
53
+ token_endpoint_auth_methods_supported: [none]
54
+ client_id_metadata_document_supported: true
55
+ authorization_response_iss_parameter_supported: true
56
+ ```
57
+
58
+ `/.well-known/oauth-protected-resource` is
59
+ [RFC 9728](https://www.rfc-editor.org/rfc/rfc9728) metadata. Each configured resource has one of
60
+ its own, at the path the well-known segment is followed by: `/.mcp` is read at
61
+ `/.well-known/oauth-protected-resource/.mcp`.
62
+
63
+ ```yaml
64
+ resource: https://api.example.com/.mcp
65
+ authorization_servers: [https://api.example.com]
66
+ bearer_methods_supported: [header]
67
+ ```
68
+
69
+ `/.well-known/openid-configuration` answers with the authorization server metadata, for a client
70
+ that reads only that.
71
+
72
+ A reply of `401` carries the challenge that names the document:
73
+
74
+ ```http
75
+ 401 Unauthorized
76
+ www-authenticate: Bearer resource_metadata="https://api.example.com/.well-known/oauth-protected-resource/.mcp", scope="app:notes"
77
+ ```
78
+
79
+ ## Clients
80
+
81
+ A `client_id` that is an `https` URL is a
82
+ [Client ID Metadata Document](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-client-id-metadata-document-00):
83
+ the client publishes what it is at that URL, and the document is read from there. Only origins
84
+ `identity.clients` is configured to trust are read, and an empty list reads none:
85
+
86
+ ```yaml
87
+ configuration:
88
+ identity.clients:
89
+ trust:
90
+ - https://claude.ai
91
+ ```
92
+
93
+ Anything else was registered through
94
+ [RFC 7591](https://www.rfc-editor.org/rfc/rfc7591), which `registration: open` advertises:
95
+
96
+ ```http
97
+ POST /identity/clients/ HTTP/1.1
98
+ content-type: application/json
99
+
100
+ {"client_name": "Claude", "redirect_uris": ["https://claude.ai/api/mcp/auth_callback"]}
101
+ ```
102
+
103
+ ```http
104
+ 201 Created
105
+
106
+ {"client_id": "c8f3a1e4d8c9b2f6a0e5d7c3b1a9f8e2", "client_name": "Claude", …}
107
+ ```
108
+
109
+ A registration is addressed by a hash of what it says, so the same metadata is one client however
110
+ many times it arrives. A registration cannot be changed: a revision is a different client.
111
+
112
+ Only public clients are supported. `token_endpoint_auth_method` other than `none` is refused.
113
+
114
+ `redirect_uris` are matched exactly, except for a loopback address, where the port is ignored
115
+ ([RFC 8252 §7.3](https://datatracker.ietf.org/doc/html/rfc8252#section-7.3)).
116
+
117
+ `GET /identity/clients/:id/` returns a client to any authenticated identity, which is what the
118
+ consent page reads.
119
+
120
+ ## Token endpoint
121
+
122
+ `POST /identity/grants/`, anonymous, `application/x-www-form-urlencoded`.
123
+
124
+ ```http
125
+ POST /identity/grants/ HTTP/1.1
126
+ content-type: application/x-www-form-urlencoded
127
+
128
+ grant_type=authorization_code&code=SplxlO&code_verifier=dBjftJeZ&redirect_uri=…&client_id=…
129
+ ```
130
+
131
+ ```http
132
+ 200 OK
133
+ cache-control: no-store
134
+
135
+ {"access_token": "…", "token_type": "Bearer", "expires_in": 2592000}
136
+ ```
137
+
138
+ `code_verifier` is required: the code was issued against its `S256` hash
139
+ ([RFC 7636](https://www.rfc-editor.org/rfc/rfc7636)). A code may be redeemed once, and is spent
140
+ whether or not the verifier matches. Every refusal is `invalid_grant`.
141
+
142
+ A code is valid for `identity.grants.lifetime` seconds, 60 by default. A token is valid for
143
+ `identity.grants.token` seconds, 30 days by default; `0` is until it is revoked.
144
+
145
+ ## Grants
146
+
147
+ A grant is what a user allowed a client. One is held per identity per client.
148
+
149
+ `GET /identity/grants/:identity/` lists them. `DELETE /identity/grants/:identity/:id/` revokes one,
150
+ which disables the key its token was issued under: the token stops being one within
151
+ `identity.tokens.cache.ttl`.
152
+
153
+ ## Tokens
154
+
155
+ An access token is a token of the identity that consented, carrying the
156
+ [roles](access.md#roles) that identity holds, or the subset the client asked for as `scope`. It is
157
+ presented as `Bearer`, which `identity.federation` also answers to — see
158
+ [Bearer scheme](identity.md#bearer-scheme).
159
+
160
+ A `scope` a client asks for is not checked against `scopes_supported`: it is granted if the
161
+ consenting identity holds it, and refused as `invalid_scope` otherwise. What is advertised says
162
+ what an application means to offer, not what the server will refuse.
163
+
164
+ ## Audience
165
+
166
+ `resource` ([RFC 8707](https://www.rfc-editor.org/rfc/rfc8707)) is accepted at both endpoints and
167
+ recorded on the grant. **It does not yet restrict the token.** An access token carries the rights
168
+ of the identity that consented, over every path that identity may reach, whichever resource it was
169
+ asked for.
170
+
171
+ Restricting it is a `permissions` argument at the `identity.tokens.issue` call in
172
+ `identity.grants.exchange` — `{'/.mcp': ['*']}` for a resource at `/.mcp` — enforced by
173
+ `permits()`, which is already what reads a token's permissions on every request. It waits on the
174
+ resource that will check the audience itself.
175
+
176
+ ## References
177
+
178
+ - [OAuth 2.1](https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1)
179
+ - [Consent](consent.md), the page an application serves
180
+ - [Features](../features/oauth.grants.feature)
@@ -9,6 +9,10 @@ The following media types are supported for both requests and responses:
9
9
  - `application/msgpack` using [msgpackr](https://github.com/kriszyp/msgpackr)
10
10
  - `text/plain`
11
11
 
12
+ A request may also be sent as `application/x-www-form-urlencoded`. A form is read and never
13
+ written, so it is not a format a response is negotiated to. A name repeated in a form is read as
14
+ the list it is.
15
+
12
16
  The response format is determined by content negotiation
13
17
  using [negotiator](https://github.com/jshttp/negotiator).
14
18