Files
Rohit Ghumare ed6d0c0196 feat: add agent skills track and stateless MCP curriculum (#422)
* feat(phase-13/22): teach portable agent skill contracts

Agent skills need a portable contract before host-specific metadata and runtime policy can be reasoned about.

* fix(phase-13/23): make the ecosystem capstone accurate

The capstone should model current A2A operations, portable artifact metadata, and deterministic trace timing.

* feat(phase-13/24): teach skill discovery and disclosure

A useful skill catalog needs explicit scope precedence and bounded progressive disclosure before instructions are loaded.

* feat(phase-13/25): teach invocation policy and routing

Human, model, application, and skill activation need separate policy decisions before relevance ranking can be trusted.

* feat(phase-13/26): teach skill sandbox and trust boundaries

Skill instructions are untrusted input, so authority must remain host-owned and every filesystem, network, and command boundary must fail closed.

* feat(phase-13/27): add the skill release gate

A distributable skill needs adversarial structure, routing, safety, artifact, provenance, installation, and portability evidence before release.

* feat(skills): install and render complete skill bundles

Progressive-disclosure skills must keep companion references, scripts, assets, and evals intact across discovery, installation, and lesson rendering.

* docs(curriculum): index the agent skills mini-course

The expanded Phase 13 sequence needs consistent lesson links, durations, translations, and shared terminology across every learner entry point.

* feat(certification/11): teach stateless MCP integration

Certification learners need the same stateless wire model as the production curriculum.

* feat(phase-11/14): modernize MCP protocol contracts

The foundational MCP lesson must no longer teach the removed session lifecycle.

* fix(phase-13/01): align tool terms with stateless MCP

The tool interface introduction should point to the current protocol vocabulary.

* feat(phase-13/06): teach stateless MCP fundamentals

Learners need the current per-request contract before building clients or servers.

* feat(phase-13/07): build a stateless MCP server

The server lab should model the protocol that new implementations actually ship.

* feat(phase-13/08): build a stateless MCP client

The client lab must negotiate every request without relying on session state.

* feat(phase-13/09): teach current Streamable HTTP

Transport examples need the current POST-only lifecycle and notification behavior.

* feat(phase-13/10): teach stateless resources and prompts

Resource and prompt discovery must reflect stateless cache and result contracts.

* feat(phase-13/11): teach per-request sampling

Sampling calls must carry current capabilities and stateless response semantics.

* feat(phase-13/12): teach roots and elicitation retries

Elicitation retries and roots handling need current capability and MRTR boundaries.

* feat(phase-13/13): teach stateless MCP tasks

Task storage and subscriptions must survive cross-instance stateless requests.

* feat(phase-13/14): update MCP Apps contracts

Apps learners need current bridge, subscription, and discovery boundaries.

* feat(phase-13/15): update MCP threat boundaries

Threat modeling must cover current routing and MRTR state boundaries.

* feat(phase-13/16): update MCP OAuth contracts

OAuth examples must bind issuers and resources while using current errors.

* feat(phase-13/17): update gateway and registry contracts

Registry admission must separate publication identity from runtime discovery.

* feat(phase-13/18): teach production MCP authentication

Production auth should implement real PKCE, CIMD, and resource-bound caching.

* docs(phase-13/22): add a runnable skill quickstart

Beginners need an exact repository-root path from bundle inspection to host use.

* fix(phase-13/23): make the capstone stateless

The ecosystem capstone must compose the same current contracts taught upstream.

* docs(phase-13/24): clarify host discovery limits

Learners should distinguish known context budgets from host fallback behavior.

* docs(phase-13/26): clarify sandbox prerequisites

The safety lab needs explicit prerequisites and a viable conceptual fallback.

* docs(phase-13/27): add real-host release evidence

A production claim should require installed-host evidence beyond deterministic fixtures.

* docs(phase-16/02): update MCP legacy comparison

The interoperability comparison should use the current stateless MCP lifecycle.

* feat(phase-19/13): modernize the MCP registry capstone

The production capstone must separate Registry publication from stateless runtime discovery.

* docs(curriculum): index agent skills and stateless MCP

Learners need one coherent route through the skills track and current MCP sequence.

* feat(skills): add a focused agent skills learner path

A dedicated route removes placement and navigation friction for focused learners.

* feat(mcp): add production engineering track

* fix(cert-11): harden MCP integration contract

* fix(phase-11-14): classify MCP handler failures

* fix(mcp-07): validate JSON-RPC request identifiers

* fix(mcp-08): reuse strict response decoding

* fix(mcp-09): harden HTTP transport boundaries

* fix(mcp-11): isolate returned tool descriptors

* fix(mcp-12): make continuation state single-use

* fix(mcp-14): align lesson response metadata

* fix(mcp-15): expire and consume continuation state

* fix(mcp-16): bind OAuth enrollment and code exchange

* fix(mcp-18): enforce redirect and code lifetimes

* fix(mcp-23): validate task identifiers

* fix(skills-24): clarify discovery boundaries

* fix(skills-25): deny unknown invocation actors

* fix(skills-26): validate approval policy shape

* fix(mcp-28): terminate unsafe cursor pagination

* fix(mcp-29): preserve completed request state

* fix(mcp-30): require secure remote endpoints

* fix(mcp-31): strengthen conformance checks

* fix(agent-skills): align route prerequisites

* fix(scripts): harden skill bundle installation

* fix(site): validate learning and artifact boundaries

* fix(course): address review edge cases

* fix(mcp): tighten notification and redirect validation

* fix(mcp): secure reproducible lesson state

* fix(mcp): use required lesson header comments
2026-08-23 18:01:53 +01:00

3.5 KiB

name, description, version, phase, lesson, tags
name description version phase lesson tags
elicitation-form-designer Design explicit resource scope and stateless MCP 2026-07-28 elicitation with authorization, safe forms, and signed retry state. 2.0.0 13 12
mcp
elicitation
mrtr
scope
authorization

Design a user-input step for an MCP operation targeting protocol revision 2026-07-28.

Produce:

  1. Scope contract. Put the workspace, directory, or resource URI in visible tool arguments or server configuration. State which authenticated principals may use it.
  2. Boundary checks. Define URI normalization, path-component containment, symbolic-link policy, and the operating-system sandbox.
  3. Trigger condition. Name the exact ambiguity, confirmation, or external interaction that requires user input.
  4. Discovery and capability gate. Return exact supportedVersions, capabilities, ttlMs, and cacheScope from server/discover. If tools are advertised, include mandatory deterministic tools/list descriptors with a valid object inputSchema, server identity metadata, and cache hints. Treat elicitation: {} and explicit elicitation.form as form support. Reject missing or URL-only support with -32021 and data.requiredCapabilities.elicitation.form; use -32022 with exact supported and requested data for an unsupported version.
  5. MRTR result. Return resultType: "input_required" with a stable inputRequests key and elicitation/create request.
  6. Interaction design. For form mode, provide a plain message and restricted flat schema. For URL mode, show the HTTPS destination and out-of-band completion rule.
  7. Retry contract. Require a fresh JSON-RPC id, original method and arguments, current inputResponses, per-request _meta, and exact requestState echo. An id-less notification never receives a JSON-RPC result or error; an accepted Streamable HTTP notification receives 202 with no body.
  8. Branch handling. Map accept, decline, and cancel to different safe outcomes.
  9. State protection. Bind HMAC or authenticated encryption to the authenticated principal, original argument digest, candidate set, operation phase, expiry, and one-time nonce. Consume the nonce atomically in a bounded, TTL-pruned replay store shared by every handler instance.
  10. Final revalidation. Re-check authorization, live record state, and containment immediately before mutation.

Hard rejects:

  • Treating deprecated Roots as authorization, containment, or sandboxing.
  • Using roots/list or notifications/roots/list_changed in a new 2026-07-28 design.
  • Sending a reverse elicitation/create request instead of returning it through MRTR.
  • Collecting passwords, API keys, access tokens, or payment credentials in form mode.
  • Sending an elicitation mode absent from current per-request capabilities.
  • Treating clientInfo as an authenticated user identity.
  • Performing a destructive action before validated acceptance and final authorization checks.
  • Unsigned requestState that carries candidates or permission-relevant data.

Refusal rules:

  • Refuse repeated prompts after explicit decline.
  • Refuse elicitation for a value the server can derive or validate without the user.
  • Refuse a URL that contains credentials, user secrets, or a pre-authenticated bearer value.
  • Refuse a request that uses hidden protocol-session state, initialize, or Mcp-Session-Id.

Output a one-page design with scope, authorization, containment, interaction mode, schema or URL, MRTR wire shape, state fields, response branches, replay policy, and final revalidation checklist.