Skip to main content
Glama

AI Design Blueprint Doctrine

Server Details

The industry standard reference for safe, observable, and steerable AI agent UX. Browse and search the 10 Blueprint principles, principle clusters, curated implementation examples, and application guides. 13 public tools require no credentials. Tools for learning path, coaching context, and handoffs require a Firebase Bearer token. Validation and usage summary tools require a Pro or Teams membership.

Ownership verified
Status
Healthy
Uptime
99.6% over 59 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 29 tools

Disambiguation4/5

Most tools have clearly distinct purposes: the five validators differ by artifact type (architecture/surface/spec) and depth (single/consensus/certify), handoffs split cleanly by audience, and me.* tools are individually scoped. The main soft spot is the trio of *.search (principles/guides/examples) tools, which an agent could plausibly mix up when a user describes a topic, though the descriptions do explicitly steer between them.

Naming Consistency4/5

A consistent namespace.action convention (architect.validate, clusters.get, me.add_evidence, handoffs.operator) holds across essentially the whole surface, with verbs (get/list/search/validate/certify/report) used predictably. Minor deviation: architect.validate_consensus breaks the short verb form, and validate/certify are domain verbs rather than generic CRUD, but the pattern is readable throughout.

Tool Count3/5

29 tools is on the heavy side; the content surface alone contributes eleven tools (principles/guides/examples/clusters/assets each with get/list/search variants). Each tool is justified by a distinct sub-domain, but the breadth is borderline and the search/list/search-per-entity pattern inflates the count relative to its core job.

Completeness4/5

Coverage is broad and cohesive: three validation lenses plus consensus and certification, full doctrine browsing (principles, clusters, guides, examples, assets), user learning-path/evidence/coaching, sessions and team events, handoffs, and value/feedback signals. There are no obvious dead ends, though lifecycle operations (e.g., updating or removing sessions/evidence/feedback) are absent and the server is largely read/validate/write-once.

Available Tools

29 tools
architect.certifyCertify Production-Ready ArchitectureAInspect

Pro/Teams: second-pass adversarial certification of an architect.validate run that scored production_ready (A or B first-pass tier). ON CLIENT TIMEOUT: DO NOT RETRY THIS TOOL. RECOVERY FIRST: the run_id is emitted in the FIRST notifications/progress event at t=0s (BEFORE the LLM call begins). Capture it. On timeout, call me.validation_history(run_id='<that-id>') to fetch the persisted cert verdict; the server-side run completes independently within a 6-minute budget. This is the canonical recovery path. Use it before considering any retry. Long-running LLM call (60-180s typical; exceeds Claude Code's ~60s idle budget); MCP clients commonly close the call before the server returns. Retrying re-runs the LLM call AND burns one of your 3 cert retry-budget attempts. Mints the certified production_ready badge when both reviewers sign off; caps the run to C/emerging when the second pass surfaces a missed production_blocker. MANDATORY DOCTRINE RULE (load-bearing): the badge certifies the EXACT code that produced the validate run_id, NOT 'this codebase' in general. If you modify, fix, or iterate the code between architect.validate and architect.certify, even by a single character, cert rejects with code_fingerprint_mismatch. Fixing the code voids the run. The recovery path is always: edit code → architect.validate → fresh run_id → architect.certify on the fresh run. Do NOT cert from a stale run_id after iteration; ask the user to re-validate first. WHEN TO CALL: only after architect.validate returned tier=production_ready AND the user wants the certified badge AND the code has not been touched since the validate run. NOT for tier=draft/emerging/not_applicable runs (typed rejections fire, see below). NOT idempotent across attempts: each call is one of the 3 attempts in the retry budget. BEHAVIOR: atomic one-shot single LLM call, ~60-180s server-side at high reasoning effort (small payloads finish faster; observed p99 ~250s; server-side budget is 6 min, above the observed range). Exceeds typical MCP-client tool-call idle budget (~60s in Claude Code), so the FIRST notifications/progress event fires at t=0 carrying the run_id. The run is atomic by contract: no in_progress lifecycle, no cancellation, no resume. Updates the persisted run's result_json (public review URL + me.validation_history(run_id=...) reflect the cert outcome). ELIGIBILITY GATE (typed rejection enum on failure): caller must own the run, tier=production_ready, less than 24h old, not already certified, within cert retry budget (max 3 attempts), no other cert call in flight for the same run_id, code fingerprint must match the validated code, AND the submitted payload must be cert-payload-complete (see Payload Completeness below; cert rejects pre-LLM with payload_incomplete when an imported module's surface isn't visible in the validate payload that produced this run_id). Rejection reasons (typed Literal): auth_required, paid_plan_required, run_not_found, not_run_owner, not_eligible_tier, not_agentic_component (tier=not_applicable runs), already_certified, certification_age_exceeded, retry_budget_exhausted, code_fingerprint_mismatch, code_fingerprint_missing, code_not_on_file (caller omitted code argument AND the 24h cert-retry hold for this run has expired or was never written. Recovery: re-run architect.certify from the same MCP session that ran architect.validate, passing the code explicitly; a standard production_ready run holds the code for 24 hours only, then an automatic clean-up deletes it), payload_incomplete (submitted/validated payload imports modules whose contents aren't visible; cert refuses pre-LLM to prevent a false-precision downgrade. Recovery: re-validate with verbatim public-surface stubs for every imported module, then re-cert on the fresh run_id. Empirically validated: PR #157 iter8/iter9 cert rejections were exactly this class: code on disk was correct, the submitted payload merely omitted module visibility), cert_consensus_score_below_threshold (consensus_median<75, consensus runs only), cert_consensus_unstable_blocker (any principle mode_stability<80%, consensus runs only), run_state_corrupt, cert_persistence_failed, cert_in_flight (a prior architect.certify call on this run_id is still running. Poll me.validation_history for the verdict; do not retry until it resolves). PAYLOAD COMPLETENESS (load-bearing for cert eligibility): the cert reviewer reads the EXACT payload that produced the validate run_id. Imported modules whose surface isn't present in the payload cause pre-LLM payload_incomplete refusal. Avoidance: when validating with intent to cert, bundle public-surface stubs for every imported module: from sqlalchemy.exc import SQLAlchemyError → include a stub class; from app.db import models → include a class models: namespace stub with the columns/methods you reference; module-level imports of dataclass, Literal, json, datetime, timezone MUST also be in the payload (cert correctly catches when they're omitted, as the code would NameError on import). 'Submit Like Production': the payload should be the code as it would actually run, not a compressed sketch. The stubs cover IMPORTED dependencies only; the certified code's own enforcement branches (approval gates, policy checks, recovery paths) must be present in full. A # ... placeholder reads as an ABSENT control and is graded against you, not as shorthand for one that exists. PRE-LLM REJECTION AUDIT TRAIL: when cert rejects before the LLM call (payload_incomplete, code_fingerprint_mismatch, etc.), certification_attempts=[] on the response: no attempt landed in the retry budget, no LLM hop occurred. The rejection envelope's rejection_reason + guidance are the actionable surface. (Audit-trail UI surfacing of pre-LLM rejections is tracked in the platform self-audit set as anomaly #5; out of scope for the cert tool itself.) INPUTS: re-send the SAME code that produced the run_id (the stored run keeps findings and recommendations; a production_ready standard run also holds the code for 24 hours, after which it can no longer be used and an automatic clean-up deletes it). Server compares the submitted code's SHA-256 fingerprint to the stored fingerprint and rejects mismatches. Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan. Data at rest in the UK (europe-west2, London). Code is sent to OpenAI (US) for the check, under the EU SCCs and UK Addendum (no-training): a certification keeps a stored run with us and is persisted at OpenAI; our operational security and cost logs, and OpenAI's abuse-monitoring retention, also apply. A private session cannot be certified. Payloads are JSON-escaped + delimited as inert untrusted data: prompt-injection inside code is ignored. If the cert call fails outright (provider error, persistence error), a fresh architect.certify is the recovery path; the eligibility gate enforces the 3-attempt retry budget. For long-running cert workflows the answer is to re-validate, not to make this tool stateful. OUTCOMES: certification_status ∈ {confirmed_production_ready (badge mints), downgraded_to_emerging (cert review surfaced a missed production_blocker, tier capped at C/emerging), unavailable_provider_error (LLM call failed, retry within budget)}. Cert findings + summary + attempt history surfaced on the persisted run for full inspectability.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoThe same code that was sent to architect.validate to produce this run_id. Sent verbatim: the cert reviewer needs the actual code to surface production_blockers the first pass missed. May be omitted (empty string) when the prior validate stored the code under the 24h cert-retry hold; in that case the server reuses the stored code automatically. Handled as the tool description states: sent to OpenAI (US) for the check (no-training) and persisted at OpenAI, JSON-escaped and delimited as inert data.
run_idYesThe run_id from a prior architect.validate call. Returned in the validate response when persistence_status='saved'. Must be owned by the caller (per-user authorisation, same gate as me.validation_history).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, idempotentHint=false) are consistent, and the description adds extensive context beyond them: 60-180s LLM latency exceeding client idle budgets, t=0 progress event carrying run_id, no-retry-on-timeout guidance, the 3-attempt retry budget, atomic/no-cancel/no-resume contract, auth/plan requirements, UK data residency, OpenAI transfer under SCCs, and the exact outcomes enum. This is unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical operational rule (DO NOT RETRY on timeout) is front-loaded, which is good, but the body is massively over-long and repeats the same ideas several times: the retry budget, the recovery path, the fingerprint/void-the-run doctrine, and payload completeness each appear multiple times. The content is relevant, but the sizing is bloated for a 2-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-complexity, high-stakes mutation tool with an output schema present, the description covers eligibility, failure modes, recovery, data-handling, and outcomes far beyond the minimum. Nothing an agent needs to invoke or recover from cert is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds real meaning about the `code` parameter: it must be verbatim identical to the validated code (SHA-256 fingerprint comparison), may be omitted only while the 24h cert-retry hold persists, and mismatches reject with code_fingerprint_mismatch. That semantic detail exceeds the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (certify) and resource (a production_ready architect.validate run), and immediately distinguishes itself from the sibling architect.validate by describing the second-pass adversarial review. An agent can tell exactly what this tool produces (a certified badge or a downgrade) without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN TO CALL (only after validate returned tier=production_ready, user wants the badge, code untouched), explicit NOT-for cases (draft/emerging/not_applicable), and an explicit alternative/recovery (`me.validation_history(run_id=...)`). The eligibility gate and typed rejection enum further pin down exactly when it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

architect.validateValidate Agent ArchitectureAInspect

Pro/Teams: first-pass doctrine review of agentic code/workflow against the 10-principle AI Design Blueprint doctrine. ON CLIENT TIMEOUT: DO NOT RETRY THIS TOOL. Long-running LLM call (60-180s typical); MCP clients commonly close the call before the server returns. Retrying re-runs the 60-180s LLM call from scratch and burns compute. RECOVERY: the run_id is emitted in the FIRST notifications/progress event at t=0s (before the LLM call begins), capture it. On timeout, call me.validation_history(run_id='<that-id>') to fetch the persisted result; the server-side run completes independently within a 6-minute budget. Edge case: if the connection closed before the first progress notification (very rare; sub-second window), call me.validation_history(repository='<same value you passed here>') to find your most recent run. TASK-AUGMENTED INVOCATION (MCP 2025-11-25, SEP-1686): clients that advertise the tasks capability can task-augment this call by including task: {ttl: <ms>} inside the JSON-RPC request's params (NOT as a tool argument; alongside arguments, _meta, etc.). The server returns a CreateTaskResult immediately (taskId equals the run_id above) and runs the validation in the background. Spec-correct long-running pattern: poll via tasks/get for state, fetch the terminal payload via tasks/result, listen for notifications/tasks/status for push updates, and cancel via tasks/cancel. _meta.progressToken from the original request stays valid for the entire task lifetime. Sync (non-augmented) calls behave exactly as before, backwards-compatible by construction. The me.validation_history(run_id=...) recovery path remains the canonical recovery handle for clients that don't yet advertise the tasks capability. Returns code_classification (autonomous_agentic_workflow vs non_agentic_component), per-principle findings (verdict, severity_score 0-100, severity_class, code-cited evidence, recommendation), severity-weighted readiness (score|null, grade|null, tier ∈ {production_ready, emerging, draft, not_applicable}), recommended examples, reproducibility envelope (model, seed, doctrine_fingerprint, prompt_template_fingerprint), persistence_status with shareable run_id/badge_url/review_url. Those two URLs 404 until the run's owner publishes it: runs are private by default. Read public_review in the response before embedding either one. WHEN TO CALL: the user wants a governance audit, readiness score, or production_ready badge on an agent/workflow they just built or changed. WHEN NOT TO CALL: non-agentic plumbing (math utilities, type aliases, event-loop helpers, single-shot request/response handlers) returns tier=not_applicable with score=null/grade=null, that's not a failure, the doctrine simply doesn't grade non-agentic code, and architect.certify will refuse with not_agentic_component. Submit the OWNING agentic workflow instead. BEHAVIOR: long-running LLM call (~60-180s typical at high reasoning effort, single-pass; server-side budget 6 min). Mints run_id at t=0; first notifications/progress event carries run_id as recovery handle; keepalive every 30s. Persists ValidationRun + UserValidationRun + AIValidationRunLog + LLMUsageLog atomically; on rollback, badge/review URLs are stripped. Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan. Data at rest in the UK; OpenAI (US) processing (no-training); prompt-injection in code is inert. INPUTS: send FULL file contents verbatim as implementation_context (NO truncation, NO ... placeholders, NO comment removal, the architect treats your ... as literal code and hallucinates bugs that don't exist). If too large, split into MULTIPLE calls scoped by file/module; never truncate one call. When one call carries several files, keep each file whole, its own import lines included: merging files under one shared import block reads as code that uses names it never imported, and is reported as a defect. Pass repository="" to group runs into a project trend. Pass private_session=true to skip the stored run (persistence + recovery disabled); operational security + cost logs are still kept. focus_area narrows scope; unmatched focus_area fails explicitly rather than silently widening. PAYLOAD COMPLETENESS (load-bearing if you intend to architect.certify this run): the validate first-pass is permissive, it scores on doctrine alignment + structural patterns visible in the submitted code. Cert's adversarial second-pass is rigorous: it scores on cert-payload-completeness as well as code correctness. A run that scores 100/A at validate can cert-reject pre-LLM with payload_incomplete when imported modules' surfaces aren't visible. To validate with INTENT TO CERT, also bundle verbatim public-surface stubs for every imported module: from sqlalchemy.exc import SQLAlchemyError → include a stub class; from app.db import models → include a class models: namespace stub with the columns/methods the code references; module-level imports of dataclass, Literal, json, datetime, timezone MUST also be in the payload (cert correctly catches when they're omitted, the module would NameError on import as submitted). 'Submit Like Production': the payload should be the code as it would actually run. TWO COMPLETENESS AXES. (1) IMPORTS: stub the public surface of every dependency (above). (2) ENFORCEMENT BRANCHES: the code under cert itself (approval gates, policy checks, recovery paths) must be the REAL logic, fully written. A placeholder body (# ... execute approved action ..., pass # TODO, a bare ...) is graded as a MISSING control, not shorthand; cert scores what would actually run. Never sketch the agent you are certifying. Empirically reconfirmed PR #157 iter8 → iter9 cert downgrades. SCORE VARIANCE DISCLOSURE (anomaly #10: empirically documented): validate scores are POINT ESTIMATES with an observed empirical variance band of ~20-67 pts on BYTE-IDENTICAL input. Runs against the same repository, same code, same deterministic seed (the seed is derived from input: same input → same seed) can produce materially different scores AND different top-blocker rankings, because OpenAI's reasoning models at reasoning_effort=high are not strictly deterministic even with the seed parameter pinned. The reproducibility_mode='best_effort' field on every response is the platform's honest disclosure of this property. For decisions where stability matters more than speed, call architect.validate_consensus (N=3-5 aggregated, median verdict + per-principle stability metrics) instead: collapses the variance, surfaces unstable principles explicitly. A single validate run is a single roll; consensus is the right tool when one score isn't enough. ITERATION LOOP: repository keying. Pass the SAME repository value across calls to chain iteration rounds; the validator auto-resolves the most recent prior run on (user, repository, scope) as prior_run_baseline and the LLM grades the new submission with iteration context (per-principle severity deltas surface in the response). Changing the repository string between calls, even subtly with an iter-2 suffix, silently severs the chain and yields a fresh blind first-shot. Round numbering belongs in task or commit messages, never in repository. See the architect-validation-orchestration skill in the agent-asset pack for the full validate → consensus → certify sequence. VERIFICATION LAYERS (the two-layer doctrine this platform practices on itself): validate verifies DOCTRINE ALIGNMENT against the 10-principle Blueprint, design patterns, hand-off explicitness, operational-state inspectability, race/blocker handling at the architectural level. validate does NOT guarantee runtime correctness. cert verifies PAYLOAD COMPLETENESS and runs an adversarial second pass over the submitted code: catches production_blockers the first pass missed, name-errors on import, missing module surfaces, etc. cert does NOT verify runtime correctness either. Passing validate is a NECESSARY condition for production_ready, not a sufficient one. Runtime correctness (does this actually execute and behave?) is verified at the THIRD layer: your tests, types, walks. The platform's own recursive-integrity practice: every PR runs validate against its own primitives, then cert. Real bugs surfaced via this practice in PR #157, NULL-UUID false-positive (iter3) and tie-breaker mismatch (iter5), that 25 unit tests had missed. Two-layer verification is the discipline, not 'either/or'. TYPED FAILURES: timed_out, rate_limited, dependency_unavailable, schema_mismatch (each carries retryable + next_action). NEXT STEP: if tier=production_ready (A or B grade), the response carries certification_status='not_evaluated', call architect.certify(run_id, code) to mint the certified production_ready badge (separate ~60-150s adversarial review, eligibility-gated). See Payload Completeness above for the common pre-cert pitfall.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNoWhat the agent or workflow is trying to accomplish. Adds evaluation context.
filesNoList of file paths relevant to the implementation context.
goalsNoSpecific safety or quality goals to evaluate against (e.g. 'prevent irreversible actions', 'explicit approvals').
languageNoProgramming language of the code being evaluated (e.g. 'python', 'typescript').
focus_areaNoNarrow the evaluation to a specific principle cluster or slug (e.g. 'delegation', 'visibility', 'establish-trust-through-inspectability').
repositoryNoIteration key. SAME value across calls auto-resolves the most recent prior run as `prior_run_baseline` for iteration-aware grading (per-principle severity deltas, regressions/improvements). CHANGING the value (even subtly with an `iter-2` suffix) silently severs the chain and yields a fresh blind first-shot. Round numbering belongs in `task`, not here. Empirical evidence of why anchoring matters: PR #157 iter1 33/F vs iter2 100/A on byte-identical baseline-race primitives (+67 spread); invoice-payment-manager #158 38/F vs #159 74/C (+36 spread), same code, score variance from non-deterministic LLM at reasoning_effort=high; the baseline anchor collapses this onto a stable arc.
session_idNoOptional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions): foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way.
example_limitNoMaximum number of curated examples to include in recommendations.
private_sessionNoSet to true to skip the stored run AND prior-run anchoring AND run_id recovery for this call. Operational security and cost logs are still kept, per the Privacy Policy. The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Use for private one-shots that don't participate in the iteration arc. Default false.
implementation_contextYesThe artifact under review. SEND FULL FILE CONTENTS VERBATIM: the architect cites per-line evidence (identifiers, branch ordering, structural choices); any compression destroys evidence and produces hallucinated findings on code that isn't there. CONCRETE DON'TS: do NOT replace docstrings/comments with `...`; do NOT condense multi-line statements; do NOT replace dict/set comprehensions with `{...}`; do NOT remove explanatory comments to save tokens. If the file is large, split into MULTIPLE architect.validate calls scoped by file/module: never truncate one call. Architecture summaries (high-level prose) accepted ONLY for greenfield (no code yet); never as a substitute for code that already exists.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, but the description adds far more: 60-180s LLM latency with server-side 6-min budget, run_id minted at t=0 in the first progress event, 30s keepalive, atomic persistence of four records with URL stripping on rollback, plan/auth gating, UK data residency with US OpenAI processing, and a disclosed ~20-67pt score-variance band. This is unusually rich behavioral context, not a restatement of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is structured with caps headers and is front-loaded with the timeout warning, which is the highest-value content. However at roughly 1,500 words it is heavily redundant: run_id recovery is stated twice, payload-completeness guidance appears in three separate sections (PAYLOAD COMPLETENESS, TWO COMPLETENESS AXES, and the NEXT STEP back-reference), and score-variance is restated in both the description and the repository schema field. The size is defensible given the timeout/cost stakes, but the repetition is not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description still summarizes code_classification, per-principle findings, readiness tiering, the reproducibility envelope, and persistence_status, plus the private-by-default 404 caveat on badge/review URLs. For a long-running, authenticated, iterative, recovery-sensitive tool, nothing an agent needs in order to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real semantics beyond the schema: repository is an iteration key where any suffix silently severs the prior_run_baseline chain, focus_area fails explicitly rather than widening on an unmatched value, and private_session also disables run_id recovery and prior-run anchoring. The implementation_context DO/DON'T guidance (no `...` placeholders, split by file rather than truncate, stub imported module surfaces) meaningfully extends the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb (first-pass doctrine review) and resource (agentic code/workflow) scoped against a named doctrine (10-principle AI Design Blueprint). It explicitly distinguishes itself from siblings: cert = adversarial second pass on payload completeness, validate_consensus = N=3-5 aggregated median, me.validation_history = recovery handle. An agent can route between these without opening any other schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN TO CALL ('user wants a governance audit, readiness score, or production_ready badge') and WHEN NOT TO CALL ('non-agentic plumbing ... returns tier=not_applicable ... submit the OWNING agentic workflow instead'). It also names the preferred alternative for the stability case ('for decisions where stability matters more than speed, call architect.validate_consensus'), which is textbook when/when-not/alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

architect.validate_consensusValidate Agent Architecture (Consensus Mode)AInspect

Pro/Teams: N-shot CONSENSUS doctrine review of agentic code. ON CLIENT TIMEOUT: DO NOT RETRY THIS TOOL. Long-running (~80-120s for N=3 parallel LLM calls); MCP clients often close the call before the server returns. Retrying re-runs N × 60-180s LLM calls from scratch and burns N× compute. RECOVERY: same heartbeat pattern as architect.validate, the run_id is emitted in the FIRST progress event at t=0s (before LLM children fire); on timeout, call me.validation_history(run_id='<that-id>') to fetch the persisted consensus envelope. Runs N parallel architect.validate calls with private_session=True, then aggregates them to a per-principle MODE verdict + median severity + per-principle stability + score range/stdev. Returns one ConsensusValidationResponse with the headline median score, the honest variance band, and a representative full ValidationResponse (the child whose score is closest to the median). WHEN TO CALL: the user wants an HONEST first-pass score on agentic code, with the architect's variance surfaced. The single-shot architect.validate re-asserts the prior persisted run's verdict via baseline-anchor injection: same code can score 60/C anchored vs 98/A unanchored. Consensus mode is the unanchored honest read. WHEN NOT TO CALL: when you NEED the iteration delta against a prior run (regressions/improvements panel), for that, call architect.validate which keeps baseline injection on. CHAIN RESUME: each child runs with private_session=True (no anchor) on purpose, but the CONSOLIDATED outer row IS persisted with lifecycle_status='completed', the next single-shot architect.validate on the same repository auto-resolves it as prior_run_baseline. Consensus checkpoint becomes the new anchor. See the architect-validation-orchestration skill in the agent-asset pack for the full validate → consensus → certify sequence. BEHAVIOR: N (default 3, max 5) parallel LLM calls run concurrently; wallclock ~80-120s for N=3 (max child latency, not sum). Cost = N × LLM bill. Each child runs with private_session=True so the doctrine prompt's prior-run baseline injection is suppressed (no anchor bias). One CONSOLIDATED UserValidationRun row is written carrying the consensus envelope; the N children themselves do NOT persist (private_session contract). AUTH: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan. Same paid-plan gate as architect.validate. INPUTS: same shape as architect.validate. n is the only extra arg (range 2..5). private_session is implicit (always true for children); the OUTER consolidated row IS persisted unless the tool itself is called inside another private context: but no such wrapper exists today. OUTPUT: response carries score_consensus_median (headline), score_stdev (honest uncertainty), score_range (min, max), mode_stability_min_pct (the cert-eligibility gate's input, ≥ 80% means the consensus is stable), per_principle (mode + distribution + severity median per principle), and representative_response (the closest-to-median child's full ValidationResponse so existing UI components render unchanged). TYPED FAILURES: same as architect.validate (timed_out, rate_limited, dependency_unavailable). Plus consensus-specific: consensus_quorum_failed when fewer than 2 child runs succeeded (≥ 2 required to compute a meaningful median).

ParametersJSON Schema
NameRequiredDescriptionDefault
nNoNumber of parallel child runs. Default 3 (the variance signal is visible at N=3; cost = 3× LLM bill). Capped server-side by Settings.consensus_n_max (default 5).
taskNoWhat the agent or workflow is trying to accomplish.
filesNoList of file paths relevant to the implementation.
goalsNoSpecific safety or quality goals to evaluate against.
languageNoProgramming language of the code (e.g. 'python').
focus_areaNoOptional: narrow the review to a principle cluster or slug.
repositoryNoIteration key. Consensus children all run unanchored (`private_session=True`), but the consolidated row IS persisted under this key: discoverable as prior baseline for the next single-shot `architect.validate`. Same value across calls keeps the iteration arc inspectable.
example_limitNoMax curated examples per child run.
implementation_contextYesThe artifact under review. SEND FULL FILE CONTENTS VERBATIM: same constraint as architect.validate. Truncation produces hallucinated findings on code that isn't there.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the annotations. It discloses the long-running nature (~80-120s), the N parallel LLM calls, the cost multiplier (N × LLM bill), the private_session=True behavior for children, the persistence contract (children do not persist, the consolidated row does), the auth gate, and the typed failure modes including consensus_quorum_failed. It even warns about MCP client timeout behavior and provides a recovery path. This is exemplary behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every section earns its place: timeout warning, recovery, when-to-call, when-not-to-call, behavior, auth, inputs, outputs, typed failures. It is front-loaded with the most critical operational warning (DO NOT RETRY ON TIMEOUT) and structured with clear section labels. It could be slightly tighter, but the density of actionable information justifies the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters, an output schema, and significant operational risk, the description is complete. It explains the output fields (score_consensus_median, score_stdev, score_range, mode_stability_min_pct, per_principle, representative_response), the failure modes, the auth requirements, the persistence semantics, and the relationship to the sibling architect.validate. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the semantics of key parameters: n (range 2..5, default 3, cost implication), repository (iteration key, persisted as prior baseline), and implementation_context (send full file contents verbatim, truncation causes hallucinated findings). It also clarifies that private_session is implicit for children. The only minor gap is that it doesn't enumerate every parameter, but the schema already covers them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'N-shot CONSENSUS doctrine review of agentic code.' It clearly distinguishes consensus mode from the single-shot architect.validate by explaining the anchoring difference (60/C anchored vs 98/A unanchored). The tool's purpose is unmistakable and differentiated from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit WHEN TO CALL and WHEN NOT TO CALL sections. It names the alternative (architect.validate) and the exact condition that selects it: use consensus when the user wants an honest unanchored first-pass score; use single-shot validate when iteration delta against a prior run is needed. It also gives recovery guidance on timeout, which is a usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

assets.listList Agent AssetsA
Read-onlyIdempotent
Inspect

Public: list downloadable doctrine and agent asset artifacts (skill packs, rule packs, MCP setup snippets) the user can drop into their AI coding tool to import the Blueprint as native skill/rule files. Returns a list of assets with name, format (one of: zip / md / markdown / mdc / json / toml / text, the full vocabulary), pack_version, download_url, and platform target (Claude Code, Cursor, Codex, Gemini, Qwen). The response also carries count (length of assets) for symmetry with principles.list / clusters.list / guides.list. WHEN TO CALL: the user asks how to bring the Blueprint into their coding agent, or wants to install it as a local skill/rule file. WHEN NOT TO CALL: for the live MCP tools themselves, those are already available through this server. For doctrine content, prefer principles.list/get and guides.list/get. BEHAVIOR: read-only, idempotent, no auth required. Asset artefacts are regenerated on every deploy from the canonical doctrine.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint, idempotentHint, and destructiveHint, but the description adds valuable context beyond annotations: 'no auth required' and 'Asset artefacts are regenerated on every deploy from the canonical doctrine.' These behavior disclosures help the agent understand side effects and access requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is detailed and front-loaded with the core purpose, then expands logically into output format, when-to-call, and behavior. It is slightly dense with the full enumeration of formats and platforms, but each clause carries useful information, so no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with an output schema and full annotations, the description covers purpose, output shape, usage boundaries, and behavioral traits comprehensively. An agent has everything it needs to decide whether and how to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is nothing for the description to add. Per the baseline for 0 parameters, the score is 4; the description appropriately focuses on output and usage rather than parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('list downloadable doctrine and agent asset artifacts') and clearly states the tool's purpose: to import the Blueprint as native skill/rule files into AI coding tools. It also distinguishes itself from siblings by explicitly routing doctrine content to principles.list/get and guides.list/get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'WHEN TO CALL' and 'WHEN NOT TO CALL' sections give precise criteria for use, including when to avoid it (for live MCP tools) and what alternatives to prefer (principles/guides). This leaves no ambiguity about selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clusters.getGet ClusterA
Read-onlyIdempotent
Inspect

Get one principle cluster by stable slug. Returns the cluster definition, shared rationale, and the full set of member principles (slug + title) so the caller can pivot into principles.get without a second list call. WHEN TO CALL: the user has already named a specific cluster (e.g. 'delegation', 'visibility', 'trust', 'orchestration') OR you have a slug from a prior clusters.list / principles.list response and need its full definition + member principles. The response embeds member principle slugs + titles already, so DO NOT loop principles.get over each member to get a cluster overview: read the response. WHEN NOT TO CALL: the user is describing a topic, failure mode, or keyword in natural language (call principles.search instead); the user wants to discover which clusters exist (call clusters.list); the user wants the definition of one specific principle (call principles.get directly). Idempotent + cacheable per slug. Returns 404-shaped error_payload on unknown slug: the slug must match exactly the value emitted by clusters.list, with no normalization.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesStable slug of the principle cluster (e.g. 'delegation', 'visibility', 'trust', 'orchestration').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavior beyond the annotations: the 404-shaped error_payload on unknown slug, the requirement for exact slug matching with no normalization, and cacheability per slug. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized with clear sections: returns, when to call, when not to call, and caveats. Each sentence serves a distinct purpose, and the most actionable facts (return contents and routing) come first. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter, a rich output schema, and annotations covering idempotency/read-only behavior, the description is complete. It covers selection criteria, exact-match requirements, error behavior, and the relationship to sibling tools, leaving no gap an agent would need to resolve elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already describes the slug with examples, so the baseline is 3. The description adds meaningful parameter semantics by warning that the slug must exactly match the value emitted by clusters.list and that no normalization is applied, which is not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description starts with a specific verb and resource: 'Get one principle cluster by stable slug.' It enumerates exactly what is returned (cluster definition, shared rationale, member principles) and distinguishes itself from clusters.list and principles.get by naming them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The WHEN TO CALL section gives concrete triggers including example slugs and the prior-list-response case. The WHEN NOT TO CALL section names three alternatives with exact routing conditions: principles.search for natural language, clusters.list for discovery, and principles.get for a single principle. This is exemplary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clusters.listList ClustersA
Read-onlyIdempotent
Inspect

List all principle clusters with their stable slugs and linked principle titles. Use this to discover which clusters exist before drilling in with clusters.get or filtering principles.list by cluster. Prefer clusters.get when you already know the cluster slug and need full detail.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful content expectations (stable slugs, linked principle titles) but no additional behavioral traits like pagination, rate limits, or auth needs. It does not contradict annotations, but the added behavioral context is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the primary action. The second sentence adds necessary guidance on when to use alternatives. No redundant information or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters), the presence of an output schema, and strong annotations, the description fully covers the use case, including context for when to use this list tool versus related tools. It is complete and self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema's property map is empty. Per the baseline for 0 params, a score of 4 is appropriate — the description isn't required to explain parameters, and it doesn't attempt to, which is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all principle clusters with their stable slugs and linked principle titles' — a specific verb and resource. It distinguishes from siblings by naming clusters.get and principles.list as alternatives, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides when to use: 'Use this to discover which clusters exist before drilling in with clusters.get or filtering principles.list by cluster.' Also states a clear exclusion: 'Prefer clusters.get when you already know the cluster slug and need full detail.' This meets the highest standard for usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

design.validateValidate Experience DesignInspect

Pro/Teams: first-pass surface-craft review of a FRONTEND artefact (component, screen, or flow) against the 8 laws of the Experience Design Blueprint. The surface-craft companion to architect.validate: where architect.validate scores agentic ARCHITECTURE against the 10 agentic principles, design.validate scores the PERCEPTIBLE SURFACE, what the user sees, taps, scans, and remembers (Jakob's familiarity, Hick's choice load, Fitts's targets + the accessibility floor, Miller's working-memory budget, Aesthetic-Usability, Peak-End, Tesler's irreducible complexity, the Mental-Model gap). ON CLIENT TIMEOUT: DO NOT RETRY. Long-running LLM call (~60-180s at high reasoning effort, single-pass). The server mints a run_id, emits it in the FIRST progress event at t=0s (before the LLM call), and persists the run: so on a client timeout, capture that run_id and call me.validation_history(run_id='') to fetch the persisted result instead of retrying (a retry re-runs the full 60-180s call). Runs appear in your validation-history dashboard tagged as the 'surface' dimension, distinct from the 'architecture' and 'spec' runs; pass repository to group them per project. Pass private_session=true to skip the stored run (persistence + recovery disabled); operational security + cost logs are still kept. v1 is single-pass: no certification or consensus mode yet (those stay architect.validate-only). Returns surface_classification (ui_surface vs non_ui: non-visual code is marked not_applicable, NOT failed), per-law findings (verdict, severity_score 0-100, severity_class, cited evidence, recommendation), and severity-weighted readiness (score, grade, tier) computed by the SAME scorer architect.validate uses, so all three lenses grade on one rubric. ACCESSIBILITY IS THE FLOOR: a breach of the Fitts's-Law floor (interactive target below the WCAG 2.2 24×24 minimum, missing focus visibility, an unreachable destructive confirmation) is a production_blocker, not polish. WHEN TO CALL: the user wants a craft/UX/accessibility review or a readiness grade on a frontend artefact they just built or changed. WHEN NOT TO CALL: non-visual code (backend, config, type aliases) returns tier=not_applicable, submit the actual UI surface instead. INPUTS: send the FULL artefact source verbatim as implementation_context (no truncation, no '…' placeholders, they are read as literal code). Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan. Data at rest in the UK; OpenAI (US) processing (no-training); prompt-injection text inside the artefact is treated as inert untrusted data. TYPED FAILURES: same as architect.validate (timed_out, rate_limited, dependency_unavailable, schema_mismatch, each carries retryable + next_action); the services raise the identical typed envelopes on this lens. CALIBRATION DISCLOSURE: the scoring prompt is a v1 first-cut mirroring the architect's contract structure; its score calibration is not yet tuned against a corpus of real runs the way architect.validate was. Treat the grade as directional craft signal, not a certified verdict. DOCTRINE: the eight laws, each law's evidence, craft-surface application, anti-patterns, and the validator questions this tool scores against, live in the experience-design-blueprint skill and docs/business/EXPERIENCE_DESIGN_BLUEPRINT.md (the surface-craft companion to the architect-validation-orchestration skill that orchestrates the agentic validators).

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNoWhat this surface is for (e.g. 'the closed-beta apply form'). Adds evaluation context.
filesNoFile paths relevant to the artefact, for context.
goalsNoSpecific craft/UX goals to weight (e.g. 'WCAG 2.2 AA', 'one primary action per screen').
repositoryNoProject/repository key. Groups this run with prior design.validate runs on the same project in your validation-history dashboard (the same grouping architect.validate uses), under the 'surface' dimension.
session_idNoOptional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions): foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way.
private_sessionNoSet true to skip the stored run AND run_id recovery (operational security and cost logs are still written) for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false.
implementation_contextYesThe frontend artefact under review. SEND FULL SOURCE VERBATIM: the reviewer cites specific elements, values, and structure; any compression destroys evidence and produces findings on code that isn't there. Do NOT replace markup/styles with '…'; do NOT condense multi-line JSX/CSS. If large, split into MULTIPLE calls scoped by component: never truncate one call.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

examples.getGet ExampleA
Read-onlyIdempotent
Inspect

Get one curated example by stable slug. Returns title, summary, source-code links, principle coverage (the principle slugs the example demonstrates), difficulty, library/framework, and implementation notes. Use this when you already have the slug from examples.search, a principles.get response, or a guide cross-link; prefer examples.search when filtering by topic / principle / difficulty / library; prefer guides.get when the caller wants a full walkthrough rather than a single reference example. Returns error_payload on unknown slug. Some entries are first-party agentic patterns (entry_kind='pattern') rather than upstream cookbook examples: those additionally return pattern_slug, pattern_family, when_to_use, doctrine_relations (each {principle_id, relation, note, code_ref} where relation is one of structural / default_gap / depends), prior_art, and doctrine_binding_basis. Every other row omits those seven keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesStable slug of the curated example (e.g. 'agents-building-blocks-5-control').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses error behavior ('Returns error_payload on unknown slug') and explains the two possible entry kinds, including the conditional additional fields for pattern entries. This adds significant context not captured in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and return types, then uses conditional clauses to explain variants. Despite length, every sentence contributes necessary information; no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and an output schema, the description thoroughly explains return values, error handling, and edge-case entry variants. It also positions the tool within the broader toolset, making it complete for an agent deciding whether to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, 'slug', is fully described in the input schema (100% coverage). The tool description does not add new semantic details beyond using the term 'stable slug', which already appears in the schema. Baseline 3 is appropriate since schema handles the parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Purpose is explicitly stated: 'Get one curated example by stable slug.' It names the verb and resource, and distinguishes from siblings by contrasting with examples.search and guides.get (e.g., 'prefer examples.search when filtering ... prefer guides.get when the caller wants a full walkthrough').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Use this when you already have the slug from examples.search, a principles.get response, or a guide cross-link', and names alternatives with conditions: 'prefer examples.search when filtering by topic / principle / difficulty / library; prefer guides.get when the caller wants a full walkthrough'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

examples.searchSearch ExamplesA
Read-onlyIdempotent
Inspect

Search curated examples by free-text query, ranked by relevance, with optional filters: principle_ids (only examples covering those principles), difficulty (beginner/intermediate/advanced), library (e.g. 'langgraph', 'openai'). Returns each match's slug, title, summary, principle coverage, difficulty, library, and source-code link: slug is the handle examples.get hydrates. Default limit 5, capped server-side. Use this when the user describes a use case, technique, or library and wants matching examples; prefer examples.get when you already have the slug; prefer guides.search when the user wants a full walkthrough; prefer principles.search when the user wants doctrine guidance, not an implementation. Results may include first-party agentic patterns (entry_kind='pattern') carrying an explicit doctrine binding, see examples.get. Filter to one family with pattern_family, which implies patterns only. Patterns take a small relevance preference over generic examples when otherwise equally relevant; that preference never outranks a genuine failing-principle match, and a pattern whose only relation to a failing principle is 'depends' receives no such match at all.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Capped at server maximum.
queryYesFree-text search query matched against example title, summary, and metadata.
libraryNoFilter by library or framework name (e.g. 'langgraph', 'openai', 'anthropic').
difficultyNoFilter by difficulty level.
principle_idsNoFilter to examples that cover these principle IDs.
pattern_familyNoFilter to one agentic-pattern family. Implies patterns only, since no upstream cookbook example carries a family.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the base safety profile is covered. The description adds valuable non-obvious behavioral context: relevance ranking, server-side limit capping, inclusion of first-party patterns with doctrine binding, and a nuanced pattern-preference rule that never outranks a genuine failing-principle match. This goes well beyond the structured annotations, though it does not describe error handling or pagination beyond the limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence adds substance: purpose, filter summary, return fields, routing guidance, pattern caveats. It is front-loaded with the core action and becomes more detailed as it goes. No filler, though slightly dense; a 4 reflects the efficient but information-rich structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (6 params, output schema present, sibling routing needed), the description covers all essential angles: what it returns, when to use it, when not to use it, behavioral nuances of result ranking and pattern inclusion, and links to examples.get for hydration. The output schema handles return-field details, so the description need not repeat them. Nothing critical is missing for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's parameter mentions ('principle_ids', 'difficulty', 'library') largely restate the schema, but it adds one non-schema nuance: pattern_family 'implies patterns only' and the pattern preference behavior tied to it. This is a small increment over the schema, so 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search curated examples by free-text query, ranked by relevance', then enumerates the optional filters and the returned fields (slug, title, summary, etc.). It also explicitly differentiates itself from siblings (examples.get, guides.search, principles.search) by naming what each is for, so an agent can distinguish them without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Use this when the user describes a use case, technique, or library and wants matching examples', and follows with clear alternatives for related siblings ('prefer examples.get when you already have the slug', 'prefer guides.search...', 'prefer principles.search...'). This is direct, actionable routing with no inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

guides.getGet Application GuideA
Read-onlyIdempotent
Inspect

Get a full application guide by its stable slug (e.g. 'security-application', 'observable-evaluation'). Returns sections, action items, and linked principles. Use this when you already have the guide slug from guides.list or guides.search. Prefer guides.search when the user describes a topic in natural language; prefer guides.list when you need the full inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesStable slug of the application guide (e.g. 'security-application', 'observable-evaluation').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context about the return structure (sections, action items, linked principles) and the stability of the slug, going beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action, then return contents, then usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with full annotations and output schema, the description covers the purpose, return contents, and usage alternatives comprehensively. No gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single slug parameter, which already includes examples. The description repeats the examples and adds that the slug comes from guides.list or guides.search, but this is marginal beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets a full application guide by stable slug, with examples. It distinguishes itself from siblings by focusing on slug-based retrieval and listing return contents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use this tool (when you already have the slug) and when to prefer alternatives (guides.search for natural language, guides.list for full inventory).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

guides.listList Application GuidesA
Read-onlyIdempotent
Inspect

List application guides that show how Blueprint principles apply to engineering challenges (security, evaluation, observability, etc.). Use this to discover which guides exist before drilling in. Prefer guides.search when the user describes a topic or failure mode in natural language. Prefer guides.get when you already know the guide slug and need full detail.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the discovery context but does not disclose additional behavioral traits such as pagination or output size. With annotations present, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding value: what it does, when to use it, and how to choose alternatives. No redundancy, front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters, an output schema, and strong annotations, the description fully covers its role, usage context, and sibling differentiations. Nothing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description needs no parameter explanation and adds no confusion. The schema is trivially complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('List application guides') and clarifies the scope ('show how Blueprint principles apply to engineering challenges'). It also distinguishes from siblings by framing this tool as the discovery entry point before drilling in.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names when to use this tool versus alternatives: 'Use this to discover which guides exist before drilling in. Prefer guides.search when the user describes a topic or failure mode in natural language. Prefer guides.get when you already know the guide slug and need full detail.' This gives clear, actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

guides.searchSearch Application GuidesA
Read-onlyIdempotent
Inspect

Search application guides by free-text query, matched against section answers and action items. Use this when the user describes an engineering challenge (security review, evaluation harness, observability) and wants matching guides. Prefer guides.get when you already have the guide slug; prefer guides.list when you need the full inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return. Capped at server maximum.
queryYesFree-text search query matched against all guide content including section answers and action items.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds valuable behavioral context by specifying that the search matches against 'section answers and action items', which goes beyond the schema and clarifies the search's scope and semantics. It does not mention pagination or result ordering, but the output schema likely covers return format, and the bar is lower given annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each earning its place: first defines the action, second gives the use case, third provides sibling alternatives. No redundant or vague wording. It is front-loaded with the primary purpose and is highly scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with comprehensive annotations, full schema coverage, and an output schema present, the description covers all necessary context: purpose, use case, and alternatives. It doesn't need to explain return values because the output schema exists. The description is complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both 'query' and 'limit'. The description reinforces that query is free-text and matched against content, but it doesn't add significant new meaning beyond the schema. Baseline of 3 is appropriate when the schema carries the parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Search application guides by free-text query' with specific scope ('matched against section answers and action items'). It also distinguishes from siblings by explicitly naming alternatives (guides.get, guides.list), providing clear differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use this tool ('Use this when the user describes an engineering challenge... and wants matching guides') and when to prefer alternatives ('Prefer guides.get when you already have the guide slug; prefer guides.list when you need the full inventory'). This satisfies both when-to-use and when-not-to-use criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

handoffs.agencyRequest Agency HandoffAInspect

Authenticated: submit an agency engagement enquiry on behalf of the caller for a founder-led discovery call. Persists an AgencyHandoff row routed to the agency inbox; the user is contacted by the team for a scoped proposal. Engagement scopes: workflow sprint (rapid agentic workflow implementation), proof-of-concept (validate a specific agent design in a bounded timeframe), pilot support (co-design and validate a production-ready pilot), advisory (ongoing architectural guidance across a product team). WHEN TO CALL: the user has identified a paid hands-on expert engagement need beyond self-service learning, and explicitly asks to talk to the team or book a discovery call. ALWAYS confirm with the user before firing: this creates a sales-visible record. WHEN NOT TO CALL: for free training / partnerships discussion (use handoffs.partnership); for support / billing / access (use handoffs.operator); proactively or as a sales push. BEHAVIOR: write-only, single insert, side-effecting. Auth: Bearer (any plan). Data at rest in the UK. Response confirms the ticket id + scope so the user can reference it.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoRole or title of the person submitting the agency inquiry.
localeNoResponse locale for the acknowledgment.en
reasonYesDescription of the engagement need: workflow sprint, proof-of-concept, pilot support, or advisory.
companyNoCompany or team name submitting the agency inquiry.
websiteNoWebsite or relevant URL for the team or project.
agent_nameNoName of the agent or client triggering the handoff.mcp-client
support_typeNoType of support needed.
trace_summaryNoOptional agent trace summary for operator context.
agent_platformNoPlatform or runtime the agent is running on.
workflow_stageNoCurrent workflow stage.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the mutation profile (readOnlyHint false, idempotentHint false, openWorldHint true), but the description adds substantial context beyond them: write-only single insert, Bearer token required on any plan, data at rest in the UK, the response returning a ticket id + scope, and the warning that this creates a sales-visible record requiring user confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what it does, then clearly labelled WHEN TO CALL / WHEN NOT TO CALL / BEHAVIOR sections. Slightly verbose, with the scope definitions and the response-confirmation detail bordering on redundant against the schema and output schema, but every section is scannable and purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a side-effecting write tool with an output schema, the description covers everything an agent needs: purpose, the confirmation prerequisite before firing, auth requirements, routing alternatives, and the persistence/visibility implications. Return values are already described by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 10 parameters. The description still adds real value by defining the four engagement scopes (workflow sprint, proof-of-concept, pilot support, advisory) that map onto the reason and support_type fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('submit an agency engagement enquiry ... for a founder-led discovery call') plus the persistence side effect ('Persists an AgencyHandoff row routed to the agency inbox'). It explicitly distinguishes itself from sibling handoff tools by naming partnership and operator routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit WHEN TO CALL (paid hands-on expert engagement need beyond self-service, user explicitly asks to talk to team/book a discovery call) and WHEN NOT TO CALL, routing free training/partnerships to handoffs.partnership and support/billing/access to handoffs.operator, plus a proactive-sales exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

handoffs.operatorRequest Operator HandoffAInspect

Authenticated: creates a support handoff record when an agent needs human review, account-specific escalation, or operator follow-up that cannot be resolved with the read-only doctrine tools. Persists a SupportHandoff row (reason, topic, page_url, agent_name, agent_platform, trace_summary, user_email) routed to the support inbox; user is contacted by the team. WHEN TO CALL: user explicitly asks for human help, hits a billing/access issue, or the agent has tried the doctrine tools and the user still needs a human. ALWAYS confirm with the user before firing: this creates a human-visible ticket. WHEN NOT TO CALL: proactively, silently, or to log debugging traces (use diagnostic logs instead); for partnerships/agency enquiries (use handoffs.partnership / handoffs.agency); for content questions answerable by principles.search / guides.search. BEHAVIOR: write-only, single insert, side-effecting (creates a ticket the team will see). Auth: Bearer (any plan). Data at rest in the UK. Response confirms ticket id + topic so the user can reference it.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoTopic category for routing (e.g. 'agent', 'billing', 'access', 'general').agent
localeNoResponse locale for the handoff acknowledgment.en
reasonYesClear description of why a human operator review is needed.
page_urlNoURL of the page or context where the handoff was triggered.
agent_nameNoName of the agent or client triggering the handoff.mcp-client
trace_summaryNoOptional summary of the agent's recent actions or trace for operator context.
agent_platformNoPlatform or runtime the agent is running on (e.g. 'claude-code', 'cursor', 'copilot').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses that this is a write-only, single-insert, side-effecting operation that creates a human-visible ticket, requires Bearer auth, stores data at rest in the UK, and returns a confirmation with ticket id and topic. This significantly enriches the annotation signals and sets correct expectations for a handoff action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although longer than average, the description is well-structured with explicit headers (WHEN TO CALL, WHEN NOT TO CALL, BEHAVIOR) and front-loads the core purpose and side-effect warning. Every sentence carries relevant routing, confirmation, or behavioral information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a side-effecting, human-visible ticket creation tool, the description covers the essential operational context: when to invoke, when not to, user confirmation requirement, auth, data residency, and response shape. Since the output schema exists and parameters are fully documented, nothing critical is missing for an agent to invoke this safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the description does not need to heavily compensate. The description enumerates several persisted fields (reason, topic, page_url, agent_name, agent_platform, trace_summary) but adds little semantic detail beyond what the schema already provides. It also mentions user_email, which is not actually a parameter in the schema, creating a minor mismatch.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: it 'creates a support handoff record' when human review or operator follow-up is needed. It clearly names the scope (support handoffs) and distinguishes itself from siblings by saying partnership/agency enquiries use handoffs.partnership / handoffs.agency and content questions use principles.search / guides.search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit WHEN TO CALL and WHEN NOT TO CALL sections, including concrete trigger conditions ('user explicitly asks for human help, hits a billing/access issue, or the agent has tried the doctrine tools'). It also names alternative tools to use instead, so the agent has clear routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

handoffs.partnershipRequest Partnership HandoffAInspect

Authenticated: creates a partnerships handoff record for design-partner, ecosystem, training, or advisory conversations needing human review. Persists a PartnershipHandoff row routed to the partnerships inbox; the user is contacted by the team. WHEN TO CALL: user explicitly wants to engage as a design partner, co-marketing/training partner, or evaluate the Blueprint for their org's training programme. ALWAYS confirm with the user before firing: this creates a human-visible partnerships ticket. WHEN NOT TO CALL: for general support / billing / access issues (use handoffs.operator); for paid-engagement enquiries (use handoffs.agency); proactively or as a sales prompt, only when the user has explicitly asked. BEHAVIOR: write-only, single insert, side-effecting (creates a ticket). Auth: Bearer (any plan). Data at rest in the UK. Response confirms the ticket id + audience so the user can reference it.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoRole or title of the person submitting the partnership inquiry.
topicNoPartnership topic category.ecosystem
localeNoResponse locale for the handoff acknowledgment.en
reasonYesClear description of the partnership opportunity or inquiry.
websiteNoWebsite of the organization for additional context.
agent_nameNoName of the agent or client triggering the handoff.mcp-client
organizationNoName of the organization or company making the partnership inquiry.
trace_summaryNoOptional agent trace summary for operator context.
agent_platformNoPlatform or runtime the agent is running on.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal a non-read-only write, but the description adds meaningful behavioral context: write-only, single-insert, side-effecting, creates a human-visible ticket, auth requirements, UK data at rest, and response content. This goes well beyond the structured annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into clear labeled sections with all critical information front-loaded. Every sentence earns its place, covering usage, exclusions, behavior, auth, and response expectations without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter write tool with an output schema, the description provides all necessary invocation context: when to call, when not to call, confirmation requirement, side effects, auth, and response contents. The output schema covers return-value details, so nothing important is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already describes every parameter. The description mentions that a PartnershipHandoff row is routed and the user is contacted, but adds little parameter-specific meaning beyond the schema; the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'creates a partnerships handoff record' for design-partner, ecosystem, training, or advisory conversations. It differentiates from sibling tools by naming the partnerships inbox and the recipient team, making the tool's scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN TO CALL and WHEN NOT TO CALL sections identify exact triggers, require explicit user confirmation, and name alternatives: handoffs.operator for support/billing/access and handoffs.agency for paid engagements. This leaves no ambiguity about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

me.add_evidenceAdd Evidence NoteAInspect

Authenticated: append a free-text evidence note to a specific stage in the caller's active course. Notes record concrete implementation observations, decisions, or artefacts that demonstrate progress through a Blueprint principle (e.g. how a delegation boundary was implemented, what approval flow was chosen and why). Persisted as UserStageEvidence rows scoped to (user_id, course_slug, stage_slug). WHEN TO CALL: AFTER the user has articulated something concrete they have built, observed, or decided, not to capture intent or speculation. Pair with me.coaching_context to close evidence gaps. WHEN NOT TO CALL: to log every conversation turn; to record planning, ideas, or todos; on behalf of another user; without the user's awareness (they should know their progress is being recorded). BEHAVIOR: write-only, single insert. Auth: Bearer (any plan). Data at rest in the UK. Notes are visible only to the owning user and are surfaced on me.learning_path / me.coaching_context. Confirms the stage_slug + course_slug pair in the response so the user can see which stage was credited.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesEvidence note to append to the delegation boundary notes for this stage.
stage_idYesID of the stage to append the evidence note to.
course_slugYesSlug of the course the stage belongs to (e.g. 'agentic-fundamentals').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it discloses auth requirements (Bearer token, any plan), data residency (UK), write-only single-insert behavior, visibility scope (owning user only), and downstream surfacing on me.learning_path and me.coaching_context. Annotations already establish a non-read-only, non-idempotent write, and the description adds substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is front-loaded and organized into clear sections: purpose, note definition, persistence, WHEN TO CALL, WHEN NOT TO CALL, and BEHAVIOR. Despite its length, every sentence adds actionable guidance or behavioral context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage, annotations, and an output schema, the description supplies everything else an agent needs: auth, data location, visibility, usage boundaries, response confirmation, and related tools. No material gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all three parameters. The description adds useful semantic context about what qualifies as a note, how it maps to Blueprint principles, and how it is persisted, though it also mentions stage_slug while the schema uses stage_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: append a free-text evidence note to a specific stage in the caller's active course. It clearly distinguishes this from logging conversation turns or recording intent, and names me.coaching_context as a related tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit WHEN TO CALL and WHEN NOT TO CALL sections, including the condition that the user has articulated something concrete, not intent or speculation. It also names me.coaching_context as a pairing tool to close evidence gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

me.await_steerWait for the Next AIDB Studio Steer (long-poll)A
Read-onlyIdempotent
Inspect

Pro/Teams. BLOCK until the session owner posts the next steer event to a Governed Session from AIDB Studio, then return it. DELIVERY GUARANTEE: the durable cursor read against the session log is authoritative (at-least-once: a lost response is safely re-issuable with the same cursor, and timed_out is only returned after a final confirming read). The in-between wake-up is a best-effort in-process push: usually sub-second, but a steer is never lost if a wake-up is missed; the confirming read catches it. See the after_event_id and timeout_s parameter descriptions for the semantics. THE LOOP: finish a task -> post me.session_event handoff -> call me.await_steer -> on a steer, FIRST post me.session_event event_type=ack ('Started: '), then execute, then handoff, then call me.await_steer again; on timed_out, call again with the returned after_event_id. REQUIRES team mode on the session (toggled by the owner in the web app); owner-scoped, so foreign session ids read as not found. Read-only: this tool never writes events. REJECTION CODES (invalid_request): 'Session not found.' (not yours, or no such id); 'Team mode is off for this session.' (owner enables it on the session page). Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_sNoSeconds to wait before returning timed_out. Clamped to 5-240, DEFAULT 45: safe under Claude Code's 60-second first-response-byte timer for HTTP servers. Longer waits require the per-server timeout raised in the MCP client config (e.g. "timeout": 300000 in .mcp.json).
session_idYesThe Governed Session to watch. Must be YOURS and have team_agents enabled; list sessions via me.sessions.
after_event_idNoCursor: highest session-event id you have already seen (0 = deliver any existing steer). Pass the value from your previous await_steer result or me.sessions read. Non-destructive at-least-once delivery: re-calling with the same cursor returns the same steers again, so a lost response never loses a steer.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with annotations already declaring readOnlyHint, idempotentHint, and destructiveHint, the description adds substantial behavioral detail: blocking long-poll, at-least-once durable cursor delivery, best-effort in-process wake-up, timed_out only after a confirming read, and explicit 'never writes events'. This is consistent with and extends the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and uses heavy formatting (caps, sections), but it is structured into deliverable pieces: purpose, delivery guarantee, loop, requirements, rejection codes, auth. Nearly every sentence carries unique information, and the key action is front-loaded in the first sentence, though it could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's interaction complexity, the description covers all operational aspects: blocking semantics, delivery guarantee, loop sequence, team-mode requirement, owner scoping, rejection codes, auth plan, and read-only nature. An output schema exists to cover return values, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the parameter descriptions are already rich (timeout clamping, cursor semantics, ownership). The description adds value beyond the schema by specifying the loop usage—re-calling with the returned after_event_id on timed_out—and by pointing to the parameter descriptions for the authoritative semantics, so an agent has a complete picture.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and resource: 'BLOCK until the session owner posts the next steer event to a Governed Session from AIDB Studio, then return it.' It clearly differentiates from siblings like me.session_event (posting events) and me.sessions (listing sessions) by defining its exact role as the waiting/reading counterpart in the handoff loop.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'THE LOOP' section that tells exactly when to call the tool: after posting a handoff via me.session_event, on every received steer, and again after timed_out with the returned cursor. It also states requirements (team mode, owner scope) and lists rejection codes, so an agent knows both when and when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

me.coaching_contextGet My Coaching ContextA
Read-onlyIdempotent
Inspect

Authenticated: returns stages in the caller's active course where recorded evidence is thin relative to the stage's principle requirements. Each thin stage carries the missing principle slugs + a short diagnostic so the caller can suggest the user record concrete evidence. WHEN TO CALL: when the user asks 'what should I work on next' or 'what's weak in my Blueprint progress'; before suggesting which guide/example to consult. Pair with me.add_evidence to close gaps. WHEN NOT TO CALL: to lecture the user on principles they have already satisfied; on every conversation turn (state changes only when evidence is added). BEHAVIOR: read-only, idempotent. Auth: Bearer (any plan). Returns thin_stages list with stage slug, course slug, missing principles, evidence_count, and a coaching_note.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description doesn't need to repeat those. It adds valuable context beyond annotations: it notes the tool is 'read-only, idempotent' (matching annotations), details auth requirements (Bearer <token> any plan), explains that state changes only when evidence is added, and describes the output structure. This is slightly above the baseline 3 because it provides operational context like rate-of-change and output details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: a behavior summary, explicit WHEN TO CALL / WHEN NOT TO CALL, and a BEHAVIOR section. It's information-dense but each sentence adds value—no fluff or repetition. The description front-loads the core purpose and then provides usage boundaries, making it scannable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parametersasi and an output schema that likely describes the structure, the description is complete. It covers purpose, usage, when-not-to-call, auth, and the required output fields (thin_stages, missing principles, evidence_count, coaching_note). It also links to related tools. No critical gaps remain for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (trivially, since no properties). The description appropriately states 'Authenticated' and mentions the auth token, which is the only input consideration. With no parameters to describe, the baseline is 4, and the description doesn't need to add parameter semantics but does clarify auth context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: returning stages in the caller's active course with thin recorded evidence, including missing principle slugs and diagnostics. This is specific with a verb ('returns') and resource ('stages in the caller's active course'), and it distinguishes itself from siblings like me.learning_path or me.validation_history by focusing on evidence gaps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to call: when the user asks 'what should I work on next' or 'what's weak in my Blueprint progress'; and when not to call: to lecture on already satisfied principles or on every conversation turn. It also mentions pairing with me.add_evidence to close gaps, providing clear routing among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

me.learning_pathGet My Learning PathA
Read-onlyIdempotent
Inspect

Authenticated: returns the caller's Blueprint learning-path state: current course slug, stage progress, certification status (Foundation, Practitioner, Capstone), Capstone track eligibility flags, and the next recommended stage. WHEN TO CALL: the user asks 'where am I', 'what's next', or 'am I Capstone-eligible'; before suggesting next-step coaching content. WHEN NOT TO CALL: as a heartbeat (state changes only when the user completes a stage); to read another user's progress. BEHAVIOR: read-only, idempotent. Auth: Bearer (any plan, including basic). Returns user_email, course_slug, stages list with completion timestamps, certification block, and a next_stage hint.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description reinforces these while adding valuable context beyond annotations: auth requirement ('Bearer <token>'), plan availability ('any plan, including basic'), and the state-change semantics ('state changes only when the user completes a stage'). This fully discloses the operational behavior an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then organized into clear WHEN TO CALL, WHEN NOT TO CALL, BEHAVIOR, and Auth sections. Every sentence adds operational value, and the structure makes it easy for an agent to scan and extract the relevant decision criteria.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only tool with an output schema, the description is fully complete: it covers auth, scope, return fields, eligibility semantics, usage timing, and exclusions. There are no missing details an agent would need to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is no parameter semantics to document. The description correctly focuses on the returned state rather than inputs, and the 100% schema description coverage means nothing is left undocumented. Baseline 4 is appropriate for a zero-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'returns the caller's Blueprint learning-path state' and enumerates the exact data returned (current course slug, stage progress, certification status, Capstone eligibility, next recommended stage). It also clearly scopes the tool to the caller's own path, distinguishing it from any tool that might read another user's progress.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit WHEN TO CALL triggers ('where am I', 'what's next', 'am I Capstone-eligible') and equally explicit WHEN NOT TO CALL exclusions (not a heartbeat, not for reading another user's progress). This gives an agent unambiguous decision rules with no need to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

me.session_eventPost a Team Event to a Governed SessionAInspect

Pro/Teams: append a TYPED TEAM EVENT to a Governed Session's timeline (GEP-M6). This is how the user's own harness makes trio work inspectable: handoffs between role lenses, pushbacks, plan previews, gates, and acks land as structured events next to the validation runs, so the session reads as a system, not a transcript. CHANNEL PROVENANCE: this MCP channel posts the AGENT-SIDE vocabulary only. steer events and actor human are AIDB Studio-originated by contract (the owner posts them from the AIDB Studio session surface) and are REFUSED here, so a timeline entry can never impersonate the human side of the loop. Every event posted here is durably stamped with its channel. REQUIRES team mode: the session must have team_agents enabled (toggled in the web app on the session page); posting to a standalone session is refused so non-team sessions stay byte-identical. Owner-scoped: foreign session ids read as not found. event_type: handoff | pushback | plan_preview | gate | ack. actor: pm | engineer | designer | system. Read events back via me.sessions(session_id=...). WHEN TO CALL: at every role handoff (who -> who, what was passed), when a role pushes back on another's output, when the PM's plan is previewed for the co-planning gate, and when a hard gate blocks on an irreversible side-effect. ack: the IDE agent confirms it STARTED working on a steer. Post it FIRST on receiving a steer (summary like 'Started: '), then execute, then post handoff with the result. WHEN NOT TO CALL: not a chat log: post decisions and transitions, not every message; never to record a steer (steers arrive FROM the AIDB Studio via me.await_steer). REJECTION CODES (invalid_request): 'Session not found.' (not yours, or no such id); 'Team mode is off for this session.' (owner enables it on the session page); 'This session has reached its event limit (500).' (the shared volume brake: start a new session for further team events); 'summary must not be blank.' (empty summaries are refused); steer/human posts are refused with a pointer to AIDB Studio. Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
actorYesWho acted: pm | engineer | designer | system (`human` is reserved for AIDB Studio)
summaryYesOne-to-two sentence event summary (truncated to 500 chars): a decision or transition, not a chat message.
event_typeYeshandoff | pushback | plan_preview | gate | ack (ack = started working on a steer; `steer` itself is AIDB Studio-only and refused on this channel)
session_idYesThe Governed Session to post to. Must be YOURS and have team_agents enabled; list sessions via me.sessions.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only mark mutating, non-idempotent, non-destructive behavior; the description adds substantial constraints: channel provenance refusing steer/human, team-mode requirement, owner-scoping, 500-event limit, blank-summary refusal, and durable channel stamping. It also states auth plan requirements. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but densely structured with labeled sections (CHANNEL PROVENANCE, REQUIRES, WHEN TO CALL, WHEN NOT TO CALL, REJECTION CODES, Auth), and the core purpose is front-loaded. A few phrases are redundant with the schema, but overall the length is justified by the number of constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—team-mode gating, channel provenance, error codes, auth, and call-ordering—the description covers prerequisites, exclusions, failure modes, and alternatives. Output schema exists, so return-value documentation is not needed. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers 100% of parameters, but the description enriches them: ack semantics ('STARTED working on a steer'), summary truncation to 500 chars and content guidance, session_id ownership/team-mode requirement, and the explicit event_type/actor enumerations. This goes well beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'append a TYPED TEAM EVENT to a Governed Session's timeline (GEP-M6).' It enumerates the event vocabulary and explicitly contrasts with sibling flows by stating that steer events and human actors are refused, so an agent can tell it apart from me.await_steer and me.sessions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

WHEN TO CALL lists concrete triggers (role handoffs, pushbacks, plan previews, hard gates) and WHEN NOT TO CALL excludes chat logging and steer recording. It names the alternatives (me.await_steer, me.sessions) and gives an ordering rule: post ack first, then execute, then handoff.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

me.sessionsMy Governed SessionsA
Read-onlyIdempotent
Inspect

Pro/Teams: list or inspect the authenticated user's Governed Sessions (GEP-M2): durable, owner-scoped containers that group validation runs across lenses (architect.validate → 'architecture', design.validate → 'surface', spec.validate → 'spec') into one timeline for one piece of work. Two modes: (1) No arguments returns every session (id, title, status, repo_url, spec_ref, team_agents, run_count, validators = the lenses seen), newest first. (2) session_id=<id> returns that session plus its run timeline (light rows; fetch full results per run via me.validation_history(run_id=...)) and, for team sessions, events = the typed team-event log posted via me.session_event. Attach new runs by passing session_id to architect.validate, design.validate, or spec.validate. Sessions are created and managed in the web app at /app/sessions. Read-only. Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession id to inspect (returns the session + its run timeline). Owner-scoped: ids you don't own answer 'Session not found.'. Omit to list all your sessions.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds substantial context beyond those: owner-scoping, plan/auth requirements, newest-first ordering, 'light rows' for the timeline, team-only events, and the fact that sessions are created in the web app. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although the description is long, it is densely informative and each clause earns its place. The two-mode structure is front-loaded琳琅 and the read-only/auth note is quick, so an agent can parse the essential behavior without wading through fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two modes, a team-event condition, plan restrictions, and relationships to several sibling tools, the description covers everything needed to select and invoke it correctly. The output schema exists to cover return values, so no explanation of those is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes session_id fully, including the 'Session not found.' behavior for non-owned ids, so the baseline is 3. The description adds value by explaining what session_id actually yields (run timeline light rows, team events) and how to get full results via me.validation_history, pushing it slightly above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair: 'list or inspect the authenticated user's Governed Sessions'. It distinguishes two modes (no args lists all; session_id inspects one) and states the session's key characteristics, making it unmistakably different from sibling listing/inspection tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly explains when to use each mode, names the complementary tool for fetching full run results (me.validation_history), and tells the user how to attach new runs via architect.validate, design.validate, and spec.validate. This is clear routing guidance, not just a description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

me.validation_historyMy Validation History (architecture + design + spec)A
Read-onlyIdempotent
Inspect

Pro/Teams: return the authenticated user's validation run history for all three lenses (architect.validate → validator='architecture', design.validate → validator='surface', spec.validate → validator='spec') with the Blueprint Readiness Score (0-100), letter grade (A-F), and tier (draft, emerging, production_ready). Each run carries a validator field naming its lens. Three lookup modes: (1) run_id=<id> returns a SINGLE run with the full persisted result_json; use this to RECOVER a result when your MCP client tool-call timed out before architect.validate, design.validate, or spec.validate returned. The run completes server-side and persists; the run_id is surfaced in the first progress notification of every validate call so you have the recovery handle even when your client gives up early. (2) repository=<name> returns the full per-run trend for that repository plus a regression diff between the latest two runs. (3) No arguments returns one summary per repository the user has validated, sorted by most recent. Use modes (2) or (3) BEFORE re-validating the same repository on either lens: they tell you which principles or laws regressed since the last run, so you can focus the new review on what is actually changing. Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of runs to return when scoped to a single repository. Capped at 50. Ignored when `run_id` is provided.
run_idNoSingle-run lookup by run_id (UUID). Returns the persisted result_json verbatim: the same payload architect.validate would have returned if your client hadn't timed out. Use this to recover a result when your MCP tool-call closed before the server returned. Per-run authorisation: returns only runs owned by the calling user.
repositoryNoRepository name or path to scope the history to. Pass the same value you would pass to architect.validate. Omit to get one summary per repository. Mutually exclusive with `run_id`: if both are passed, `run_id` wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds valuable behavioral context: that runs persist server-side, that run_id is surfaced in the first progress notification, that results are returned verbatim, and the auth/plan requirements. No contradiction with annotations; the description enriches beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but every sentence earns its place given the three modes and multiple nuances (recovery, regression diff, sorting). It front-loads the core purpose and uses clear mode labels. Slightly dense, but not redundant; a 4 is fair because the length could be trimmed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all three lookup modes, their outputs, the auth requirement, and the strategic use case for avoiding unnecessary re-validation. With an output schema present and no nested objects, nothing an agent needs to call this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% per the signals, but the description goes beyond the schema by explaining the purpose of each parameter, the mutual exclusivity and precedence rule, and the recovery semantics of run_id. It also clarifies that limit is ignored when run_id is provided and caps at 50, adding actionable detail not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the authenticated user's validation run history across three lenses, including scores, grades, and tiers. It explicitly names the validate tools (architect.validate, design.validate, spec.validate) and maps each lens to its validator value, distinguishing this history tool from the validation tools themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance on when to use each of the three lookup modes, including a concrete recovery scenario for run_id (client timeout) and a clear directive to use modes 2 or 3 BEFORE re-validating to focus on regressions. It also notes mutual exclusivity and precedence (run_id wins).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

principles.getGet PrincipleA
Read-onlyIdempotent
Inspect

Get one doctrine entry by stable slug. The lens selects the doctrine: 'architecture' = one of the 10 agentic principles (default); 'surface' = one of the 8 experience-design laws; 'spec' = one of the 8 spec-quality laws. Returns id, title, cluster, definition, rationale, implications, and risk-if-violated (laws also carry their eponym and validator_questions). Use this when you already have the exact slug from principles.list; prefer principles.search when the user describes a topic or failure mode in natural language; prefer principles.list when you need every entry or every entry within a cluster. Returns error_payload on unknown slug for the lens.

ParametersJSON Schema
NameRequiredDescriptionDefault
lensNoWhich public doctrine the slug belongs to: 'architecture' (10 principles, default), 'surface' (8 design laws), or 'spec' (8 spec laws).architecture
slugYesStable slug of the principle (e.g. 'establish-trust-through-inspectability').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safe-read nature is known. The description adds valuable behavioral context by enumerating the return fields (id, title, cluster, definition, rationale, implications, risk-if-violated), noting that laws also carry eponym and validator_questions, and specifying that unknown slugs return an error_payload. This goes beyond the annotation baseline and informs edge-case handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, then packs lens semantics, return fields, usage alternatives, and error behavior into three sentences. Every sentence contributes unique value without redundancy, achieving high informational density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-slug tool with two parameters, the description covers all necessary context: what the tool returns, how the lens parameter alters selection, when to use it versus alternatives, and how errors are handled. The presence of an output schema further reduces ambiguity, and the description still goes beyond by detailing the content of the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptive parameter entries, so baseline is 3. The description enriches this by explaining the semantic meaning of each lens value ('architecture' = 10 agentic principles, 'surface' = 8 design laws, 'spec' = 8 spec laws) and by advising users to obtain slugs from principles.list, which is not explicit in the schema. This compensates well for the schema's bare listing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Get one doctrine entry by stable slug', clearly stating the verb and resource. It further distinguishes the lens values by naming exactly what each selects (10 agentic principles, 8 experience-design laws, 8 spec-quality laws), and explicitly contrasts with principles.list and principles.search, making it easy to identify the tool's unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage instructions: 'Use this when you already have the exact slug from principles.list', and names alternatives: 'prefer principles.search when the user describes a topic or failure mode in natural language; prefer principles.list when you need every entry or every entry within a cluster.' This is textbook when/when-not guidance with specific alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

principles.listList PrinciplesA
Read-onlyIdempotent
Inspect

List Blueprint doctrine with stable slugs, titles, and clusters. The lens selects which of the three public doctrines: 'architecture' = the 10 agentic principles (default, the architect.validate rubric); 'surface' = the 8 experience-design laws (the design.validate rubric); 'spec' = the 8 spec-quality laws (the spec.validate rubric). Use this when you need the full inventory or want every entry in one cluster (pass cluster slug to filter). Prefer principles.search when the user describes a topic, failure mode, or keyword in natural language. Prefer principles.get when you already know the exact slug and need full detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
lensNoWhich public doctrine: 'architecture' = the 10 agentic principles (default), 'surface' = the 8 experience-design laws, 'spec' = the 8 spec-quality laws.architecture
clusterNoCluster slug to filter by (e.g. 'delegation', 'visibility', 'trust', 'orchestration'). Omit to return all principles.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds useful context about lens selection (three doctrines), default behavior (architecture), and the ability to filter by cluster, going beyond structured fields. It doesn't contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, no filler. Front-loaded with the core purpose, then concise details on lens and guidance on alternatives. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with rich annotations, output schema, and sibling alternatives, the description fully covers purpose, usage, parameter semantics, and alternatives. No significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description enriches both parameters: explains the lens enum values and maps them to validator rubrics (architect.validate, design.validate, spec.validate), and provides example cluster slugs, thereby adding meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List Blueprint doctrine with stable slugs, titles, and clusters' with a specific verb and resource. It distinguishes itself from siblings by explicitly naming principles.search and principles.get and describing when each should be used instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Use this when you need the full inventory or want every entry in one cluster' and explicitly recommends alternatives: 'Prefer principles.search when...' and 'Prefer principles.get when...'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

principles.searchSearch PrinciplesA
Read-onlyIdempotent
Inspect

Search Blueprint principles by free-text query and return the closest matches ranked by relevance. Use this to find principles related to a specific design challenge, failure mode, or keyword (e.g. 'reversibility', 'approval flow', 'delegation boundary'). Returns principle title, cluster, definition, rationale, and implementation heuristics. Prefer this over principles.list when you have a specific topic in mind rather than wanting all principles. The lens picks the doctrine searched: 'architecture' = the 10 agentic principles (default), 'surface' = the 8 experience-design laws, 'spec' = the 8 spec-quality laws, 'all' = all 26 (each result then names its lens). Laws also match on their eponym (e.g. 'Hick', 'Fitts').

ParametersJSON Schema
NameRequiredDescriptionDefault
lensNoWhich public doctrine to search: 'architecture' = the 10 agentic principles (default), 'surface' = the 8 experience-design laws, 'spec' = the 8 spec-quality laws, 'all' = all three.architecture
limitNoMaximum number of results to return. Capped at server maximum.
queryYesFree-text search query matched against principle title, definition, rationale, and cluster.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to restate safety. It adds useful behavioral context: the results are 'ranked by relevance', it returns specific fields (title, cluster, definition, rationale, implementation heuristics), and for the 'all' lens each result 'names its lens'. This goes beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph that front-loads the core purpose, then adds usage guidance, return details, and lens semantics. It's slightly long but every sentence adds information an agent needs. No fluff or repetition of schema details. The structure is logical and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the presence of a full input schema, output schema, and annotations, the description is complete. It covers what the tool does, when to use it, how the lens works, what the results include, and the eponym matching behavior. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters. The description adds value by clarifying the lens semantics (e.g., 'architecture' = the 10 agentic principles, default) and by noting that queries also match on eponyms ('Hick', 'Fitts'). This enriches the meaning of the query parameter beyond the schema's generic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a specific resource ('Blueprint principles'), and the action ('by free-text query and return the closest matches ranked by relevance'). It explicitly distinguishes itself from the sibling 'principles.list' by stating when to prefer it, making it easy for an agent to tell them apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit guidance: 'Prefer this over principles.list when you have a specific topic in mind rather than wanting all principles.' It also explains how the 'lens' parameter selects the doctrine, provides example queries, and notes that laws match on eponyms. This is clear, actionable usage context with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

signals.feedbackSubmit FeedbackAInspect

Public: records explicit free-text user feedback about the Blueprint, this tool surface, or a specific principle/example. Captures category (bug, doctrine_critique, missing_example, ergonomics, other), free-text body, and optional contact_email when permission_to_follow_up is true. WHEN TO CALL: ONLY when the user explicitly says they want to give feedback (e.g. 'can you log this as feedback', 'file this critique', 'send a bug report'). Use signals.report instead for value-moment metrics (rating validate's output 1-5). WHEN NOT TO CALL: proactively, silently, or to substitute for signals.report. Never harvest contact info without explicit permission_to_follow_up=true. BEHAVIOR: write-only, no auth required (open to all callers). Stores one feedback record, at rest in the UK. contact_email is stored ONLY when permission_to_follow_up=true, and that fact is confirmed back in the response so the user can see the privacy boundary. When permission_to_follow_up=true AND a valid contact_email is given, and only then, it also opens a support inbox item so a human can reply, and the free-text fields are sent to OpenAI for triage (severity and a short summary). The contact_email field is never part of that request, so keep personal data out of the free text. Separately, feedback linked to an account may appear, pseudonymised and shortened, in our weekly lead-intelligence extract to OpenAI (US). private_session does not apply to this tool: it runs only when the user chooses to give feedback. REJECTION CODES (invalid_request): a call with no rating, no what_helped or what_missing comment and no would_use_again answer (task_type, surface and contact_email alone are not feedback); a rating outside 1-5; a contact_email that is not one plain address.

ParametersJSON Schema
NameRequiredDescriptionDefault
surfaceNoWhich Blueprint surface the feedback is about. Use 'mcp' if the session was via Claude Code or another MCP client. Use 'principles', 'examples', 'guides', 'coaching', or 'validation' based on what the user interacted with.
task_typeNoWhat the user was doing when they decided to give feedback. Use plain English: e.g. 'code-review', 'architecture-design', 'agent-setup', 'onboarding', 'validation'. Infer from context.
what_helpedNoAsk the user: 'What was most helpful?' Record their answer verbatim or paraphrased in plain English. Max 1000 chars. No code snippets, no proprietary content.
what_missingNoAsk the user: 'What was missing or could be improved?' Record their answer verbatim or paraphrased. Max 1000 chars.
contact_emailNoOnly ask for this if the user explicitly says they want a follow-up response. Never prompt for email unprompted. Only stored when permission_to_follow_up=true.
rating_clarityNoAsk the user: 'How clear was the Blueprint guidance? Rate 1–5.' 1 = very unclear, 5 = very clear. Only set if the user gives an explicit number.
would_use_againNoAsk the user: 'Would you use the Blueprint again for a similar task?' Set true/false based on their answer. Only set if they answer explicitly.
rating_usefulnessNoAsk the user: 'How useful was the Blueprint for this task? Rate 1–5.' 1 = not useful, 5 = very useful. Only set if the user gives an explicit number.
permission_to_follow_upNoSet to true only if the user explicitly said they want a follow-up. Must be confirmed before storing contact_email.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false): write-only/no-auth, UK data residency, contact_email stored only when permission_to_follow_up=true, opening of a support inbox item, free text sent to OpenAI for triage, weekly pseudonymised lead-intelligence extract to OpenAI (US), and explicit rejection codes. This is far beyond what structured fields convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then structured under WHEN TO CALL / WHEN NOT TO CALL / BEHAVIOR / REJECTION CODES headers. Dense but mostly earns its length given the privacy and data-flow complexity; a few clauses could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, privacy-sensitive, all-optional mutation tool with an output schema, this is comprehensive: it covers storage, follow-up permission, downstream data flows, private_session applicability, and validation rejection criteria. Because an output schema exists, return-value detail is appropriately not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does add some meaning (the contact_email/permission_to_follow_up gating and the validity rule that a rating, what_helped/what_missing, or would_use_again answer is required). However, it also references non-existent 'category' and 'body' fields, so it does not clearly rise above the schema-documented baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('records explicit free-text user feedback about the Blueprint, this tool surface, or a specific principle/example') and explicitly distinguishes itself from signals.report. Minor deduction: it claims to capture 'category (bug, doctrine_critique, ...)' and a 'free-text body', neither of which exists in the schema, which slightly muddies what the tool actually records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit WHEN TO CALL with trigger examples ('can you log this as feedback'), an explicit WHEN NOT TO CALL ('proactively, silently, or to substitute for signals.report'), and names the sibling alternative with the condition that selects it. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

signals.reportReport Value EventAInspect

Records a value moment (e.g. review_confidence, runtime_risk_found, workflow_clarity) after a successful validate run on any lens (architect.validate, design.validate, or spec.validate) or a doctrine session. Each event stores event_type, surface_used (mcp or the site section), perceived_value (1-5), and an optional short free-text note, brief_context (up to 500 characters). WHEN TO CALL: after architect.validate, design.validate, or spec.validate returns a clearly useful result AND the user has acknowledged the value (or you ask them "would you rate this 1-5?"). Each validator's response carries an explicit next_step instruction telling the agent to OFFER this call; surface that offer to the user. WHEN NOT TO CALL: silently or without the user's awareness; on every validate (only after a clear value moment); to capture intent or speculative value. If the user declines, do not retry within the same session. BEHAVIOR: write-only, single insert into ValueEvent. Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan. Data at rest in the UK. Do NOT include proprietary code, prompt content, or PII in brief_context: it is stored as written, surfaces in admin AI-visibility dashboards, and may appear, pseudonymised, in our weekly lead-intelligence extract to OpenAI (US). Expect a 1-line acknowledgment in the response; the feedback is then aggregated server-side.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_sizeNoIf the user mentions their team size during the session, record it here. Do not ask for it explicitly: only capture if volunteered.
event_typeYesPick the type that best matches what just happened: 'review_confidence': a validator lens (architect.validate / design.validate / spec.validate) returned aligned; 'runtime_risk_found': a validate run found violations; 'workflow_clarity': principles/examples clarified a design decision; 'agent_setup_success': user successfully wired up an agent or MCP tool; 'onboarding_helped': user understood how to start using the Blueprint; 'research_time_saved': user found relevant doctrine faster than expected; 'team_alignment': Blueprint helped align a team on agentic design; 'other': use only if none of the above fit.
surface_usedNoWhere the value was experienced. Use 'mcp' when called from Claude Code, Cursor, Windsurf, or any MCP client. Use 'principles' if the user was browsing or searching principles. Use 'examples' if the user was reading implementation examples. Use 'for-agents' if the user came via the /for-agents page. Use 'learn' or 'certification' for course-related sessions.
brief_contextNo1–2 plain-English sentences summarising what was helpful. Example: 'Validation identified a missing approval gate before email send.' No code snippets, no proprietary content, no user PII. Max 500 chars.
workflow_stageNoInfer from what the user was doing: 'exploring': reading doctrine, browsing principles; 'designing': planning architecture or agent flows; 'implementing': writing or refactoring code; 'reviewing': running a validator lens on existing code, a surface, or a spec; 'shipping': preparing for production or deployment.
perceived_valueNoAsk the user: 'On a scale of 1–5, how valuable was this session?' Map their answer directly: 1=low, 5=high. Do not guess: only set this if the user gave an explicit score.
would_recommendNoAsk the user: 'Would you recommend the Blueprint to a colleague?' Set true/false based on their answer. Only set if asked: do not assume.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only carry readOnlyHint=false and destructiveHint=false, which is minimal. The description compensates heavily: 'write-only, single insert into ValueEvent', auth requirements ('sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan'), 'Data at rest in the UK', and the critical warning that brief_context 'is stored as written, surfaces in admin AI-visibility dashboards, and may appear... in our weekly lead-intelligence extract to OpenAI (US)'. It also discloses the response shape: 'Expect a 1-line acknowledgment'. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than typical but well-structured with clear sections (WHEN TO CALL, WHEN NOT TO CALL, BEHAVIOR) that make scanning easy. Almost every sentence earns its place, especially the auth, privacy, and PII prohibitions. It could be tightened slightly—some schema details are repeated—but the density is justified for a tool with this many safety constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity—7 parameters, auth gating, privacy implications, and written-feedback storage—the description covers everything an agent needs: exact triggers, exclusions, auth plans, data handling, and the response expectation ('aggregated server-side'). The detailed schema and output schema handle the remaining parameter/return details, so nothing is left ambiguous for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already has a rich description in the schema (e.g., perceived_value's 'Do not guess: only set this if the user gave an explicit score'). The description mostly restates schema content ('perceived_value (1-5)', 'brief_context (up to 500 characters)') and omits some params entirely (team_size, workflow_stage, would_recommend). It adds slight behavioral context by tying perceived_value to asking the user, but that's also in the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the specific verb 'Records' and names the exact resource: 'a value moment (e.g. review_confidence, runtime_risk_found, workflow_clarity)'. It ties the tool to specific trigger contexts—'after a successful validate run on any lens (architect.validate, design.validate, or spec.validate) or a doctrine session'—which clearly separates it from sibling tools like signals.feedback or me.session_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It contains an explicit 'WHEN TO CALL' block with concrete conditions: after a validate returns a clearly useful result AND the user has acknowledged value, and it instructs the agent to OFFER the call when the validator's next_step says so. The 'WHEN NOT TO CALL' block is equally explicit: not silently, not on every validate, and 'do not retry within the same session' if the user declines. This fully routes the agent on when to use the tool versus when to abstain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spec.validateValidate Specification QualityInspect

Pro/Teams: first-pass specification-quality review of a WRITTEN SPEC (proposal, design doc, task breakdown, or an OpenSpec-style change bundle) against the 8 laws of the Spec Quality Blueprint. The what-to-build lens of the doctrine trio, applied BEFORE code exists: where architect.validate scores built agentic ARCHITECTURE and design.validate scores the rendered SURFACE, spec.validate scores the written intent the team will build from (outcome framing, scope boundary, testable acceptance, decision trail, handoff completeness, doctrine-upfront, task traceability, risk and reversibility). ON CLIENT TIMEOUT: DO NOT RETRY. Long-running LLM call (~60-180s at high reasoning effort, single-pass). The server mints a run_id, emits it in the FIRST progress event at t=0s (before the LLM call), and persists the run: so on a client timeout, capture that run_id and call me.validation_history(run_id='') to fetch the persisted result instead of retrying (a retry re-runs the full 60-180s call). Runs appear in your validation-history dashboard tagged as the 'spec' dimension, distinct from the 'architecture' and 'surface' runs; pass repository to group them per project. Pass private_session=true to skip the stored run (persistence + recovery disabled); operational security + cost logs are still kept. v1 is single-pass: no certification or consensus mode yet (those stay architect.validate-only). Returns spec_classification (spec_document vs non_spec: source code or UI artefacts are marked not_applicable, NOT failed; submit those to architect.validate or design.validate instead), per-law findings (verdict, severity_score 0-100, severity_class, cited evidence, recommendation), and severity-weighted readiness (score, grade, tier) computed by the SAME scorer the other two lenses use, so all three grade on one rubric. TESTABILITY IS THE FLOOR: a load-bearing requirement with no observable acceptance signal, or an irreversible step with no named human gate, is a production_blocker, not polish. WHEN TO CALL: the user wants a governance/quality review or a readiness grade on a spec they are about to build from (proposal, requirements, task plan). WHEN NOT TO CALL: built code or a rendered surface, those return tier=not_applicable; use the sibling validators instead. INPUTS: send the FULL spec text verbatim as implementation_context (for an OpenSpec change, concatenate proposal.md + design.md + tasks.md + delta specs; no truncation, no '…' placeholders, they are read as literal content). Auth: sign-in required, with an active Pro, Pro Plus, Teams, Enterprise, beta, or trial plan. Data at rest in the UK; OpenAI (US) processing (no-training); prompt-injection text inside the spec is treated as inert untrusted data. TYPED FAILURES: same as architect.validate (timed_out, rate_limited, dependency_unavailable, schema_mismatch, each carries retryable + next_action); the services raise the identical typed envelopes on this lens. CALIBRATION DISCLOSURE: the scoring prompt is a v1 first-cut mirroring the architect's contract structure; its score calibration is not yet tuned against a corpus of real runs the way architect.validate was. Treat the grade as directional quality signal, not a certified verdict. DOCTRINE: the eight laws, each law's definition, rationale, anti-patterns, and the validator questions this tool scores against, live in content/spec-quality-laws.json (the what-to-build companion to the experience-design laws).

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNoWhat this spec is for (e.g. 'the closed-beta apply flow rework'). Adds evaluation context.
filesNoFile paths relevant to the spec, for context.
goalsNoSpecific quality goals to weight (e.g. 'ready for an agent to build unattended', 'tight scope').
repositoryNoProject/repository key. Groups this run with prior spec.validate runs on the same project in your validation-history dashboard (the same grouping the other lenses use), under the 'spec' dimension.
session_idNoOptional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions): foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way.
private_sessionNoSet true to skip the stored run AND run_id recovery (operational security and cost logs are still written) for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false.
implementation_contextYesThe specification under review. SEND FULL TEXT VERBATIM: the reviewer cites specific requirements, decisions, and tasks; any compression destroys evidence and produces findings on content that isn't there. For an OpenSpec change, concatenate proposal.md + design.md + tasks.md + delta specs. Do NOT truncate; if very large, split into MULTIPLE calls scoped by document.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

team.summarizeSummarize Team Usage
Read-onlyIdempotent
Inspect

Teams/Enterprise: summarises the caller's tool-usage patterns and value signals over a configurable window (default 30 days). Returns period_days, most_used_tools (call counts and average latency), value_events by event_type, observed_usage_stage, validator_lenses_used, recommended_next_assets and private_session. WHEN TO CALL: the user asks 'how is the Blueprint helping me/my team', 'what should I explore next', or 'show me my Blueprint usage'. WHEN NOT TO CALL: proactively or on every conversation turn (the summary is an explicit retrospective, not telemetry); to compare users (returns only the caller's own data). BEHAVIOR: read-only, idempotent over the same window. Aggregates from your tool-call log and value events. private_session has no effect here: this read stores no run, and the per-call tool-usage record is written on every call, as the privacy page states. Auth: Bearer , Teams or Enterprise plan; every other plan is refused. Data at rest in the UK.

ParametersJSON Schema
NameRequiredDescriptionDefault
days_backNoNumber of days of usage history to include in the summary.
private_sessionNoNo effect on this tool: accepted only so clients can pass the same flag to every tool. This read stores no run, and the per-call tool-usage record is written on every call.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changeddesign.validate1 field changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set true to disable persistence AND run_id recovery for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false."New value: +"Set true to skip the stored run AND run_id recovery (operational security and cost logs are still written) for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false."
    • Changedspec.validate1 field changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set true to disable persistence AND run_id recovery for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false."New value: +"Set true to skip the stored run AND run_id recovery (operational security and cost logs are still written) for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false."
    • Changedteam.summarize1 field changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set to true to skip the per-call tool-usage record for this read."New value: +"No effect on this tool: accepted only so clients can pass the same flag to every tool. This read stores no run, and the per-call tool-usage record is written on every call."
  2. 1 tool update
    • Changedteam.summarize1 field changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set to true to skip logging this summary call."New value: +"Set to true to skip the per-call tool-usage record for this read."
  3. 1 tool update
    • Changedarchitect.certify1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"The same code that was sent to architect.validate to produce this run_id. Sent verbatim: the cert reviewer needs the actual code to surface production_blockers the first pass missed. May be omitted (empty string) when the prior validate stored the code under the 24h cert-retry hold; in that case the server reuses the stored code automatically. Sent under the same enterprise-safety envelope as architect.validate (transient processing, no training, JSON-escaped + delimited)."New value: +"The same code that was sent to architect.validate to produce this run_id. Sent verbatim: the cert reviewer needs the actual code to surface production_blockers the first pass missed. May be omitted (empty string) when the prior validate stored the code under the 24h cert-retry hold; in that case the server reuses the stored code automatically. Handled as the tool description states: sent to OpenAI (US) for the check (no-training) and persisted at OpenAI, JSON-escaped and delimited as inert data."
  4. 9 tool updates
    • Changedarchitect.certify1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"The same code that was sent to architect.validate to produce this run_id. Sent verbatim — the cert reviewer needs the actual code to surface production_blockers the first pass missed. May be omitted (empty string) when the prior validate stored the code under the 24h cert-retry hold; in that case the server reuses the stored code automatically. Sent under the same enterprise-safety envelope as architect.validate (transient processing, no training, JSON-escaped + delimited)."New value: +"The same code that was sent to architect.validate to produce this run_id. Sent verbatim: the cert reviewer needs the actual code to surface production_blockers the first pass missed. May be omitted (empty string) when the prior validate stored the code under the 24h cert-retry hold; in that case the server reuses the stored code automatically. Sent under the same enterprise-safety envelope as architect.validate (transient processing, no training, JSON-escaped + delimited)."
    • Changedarchitect.validate3 fields changed
      • changedInput schema / properties / implementation_context / description
        Previous value: -"The artifact under review. SEND FULL FILE CONTENTS VERBATIM — the architect cites per-line evidence (identifiers, branch ordering, structural choices); any compression destroys evidence and produces hallucinated findings on code that isn't there. CONCRETE DON'TS: do NOT replace docstrings/comments with `...`; do NOT condense multi-line statements; do NOT replace dict/set comprehensions with `{...}`; do NOT remove explanatory comments to save tokens. If the file is large, split into MULTIPLE architect.validate calls scoped by file/module — never truncate one call. Architecture summaries (high-level prose) accepted ONLY for greenfield (no code yet); never as a substitute for code that already exists."New value: +"The artifact under review. SEND FULL FILE CONTENTS VERBATIM: the architect cites per-line evidence (identifiers, branch ordering, structural choices); any compression destroys evidence and produces hallucinated findings on code that isn't there. CONCRETE DON'TS: do NOT replace docstrings/comments with `...`; do NOT condense multi-line statements; do NOT replace dict/set comprehensions with `{...}`; do NOT remove explanatory comments to save tokens. If the file is large, split into MULTIPLE architect.validate calls scoped by file/module: never truncate one call. Architecture summaries (high-level prose) accepted ONLY for greenfield (no code yet); never as a substitute for code that already exists."
      • changedInput schema / properties / repository / description
        Previous value: -"Iteration key. SAME value across calls auto-resolves the most recent prior run as `prior_run_baseline` for iteration-aware grading (per-principle severity deltas, regressions/improvements). CHANGING the value (even subtly with an `iter-2` suffix) silently severs the chain and yields a fresh blind first-shot. Round numbering belongs in `task`, not here. Empirical evidence of why anchoring matters: PR #157 iter1 33/F vs iter2 100/A on byte-identical baseline-race primitives (+67 spread); invoice-payment-manager #158 38/F vs #159 74/C (+36 spread) — same code, score variance from non-deterministic LLM at reasoning_effort=high; the baseline anchor collapses this onto a stable arc."New value: +"Iteration key. SAME value across calls auto-resolves the most recent prior run as `prior_run_baseline` for iteration-aware grading (per-principle severity deltas, regressions/improvements). CHANGING the value (even subtly with an `iter-2` suffix) silently severs the chain and yields a fresh blind first-shot. Round numbering belongs in `task`, not here. Empirical evidence of why anchoring matters: PR #157 iter1 33/F vs iter2 100/A on byte-identical baseline-race primitives (+67 spread); invoice-payment-manager #158 38/F vs #159 74/C (+36 spread), same code, score variance from non-deterministic LLM at reasoning_effort=high; the baseline anchor collapses this onto a stable arc."
      • changedInput schema / properties / session_id / description
        Previous value: -"Optional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions) — foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way."New value: +"Optional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions): foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way."
    • Changedarchitect.validate_consensus2 fields changed
      • changedInput schema / properties / implementation_context / description
        Previous value: -"The artifact under review. SEND FULL FILE CONTENTS VERBATIM — same constraint as architect.validate. Truncation produces hallucinated findings on code that isn't there."New value: +"The artifact under review. SEND FULL FILE CONTENTS VERBATIM: same constraint as architect.validate. Truncation produces hallucinated findings on code that isn't there."
      • changedInput schema / properties / repository / description
        Previous value: -"Iteration key. Consensus children all run unanchored (`private_session=True`), but the consolidated row IS persisted under this key — discoverable as prior baseline for the next single-shot `architect.validate`. Same value across calls keeps the iteration arc inspectable."New value: +"Iteration key. Consensus children all run unanchored (`private_session=True`), but the consolidated row IS persisted under this key: discoverable as prior baseline for the next single-shot `architect.validate`. Same value across calls keeps the iteration arc inspectable."
    • Changeddesign.validate2 fields changed
      • changedInput schema / properties / implementation_context / description
        Previous value: -"The frontend artefact under review. SEND FULL SOURCE VERBATIM — the reviewer cites specific elements, values, and structure; any compression destroys evidence and produces findings on code that isn't there. Do NOT replace markup/styles with '…'; do NOT condense multi-line JSX/CSS. If large, split into MULTIPLE calls scoped by component — never truncate one call."New value: +"The frontend artefact under review. SEND FULL SOURCE VERBATIM: the reviewer cites specific elements, values, and structure; any compression destroys evidence and produces findings on code that isn't there. Do NOT replace markup/styles with '…'; do NOT condense multi-line JSX/CSS. If large, split into MULTIPLE calls scoped by component: never truncate one call."
      • changedInput schema / properties / session_id / description
        Previous value: -"Optional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions) — foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way."New value: +"Optional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions): foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way."
    • Changedme.session_event1 field changed
      • changedInput schema / properties / summary / description
        Previous value: -"One-to-two sentence event summary (truncated to 500 chars) — a decision or transition, not a chat message."New value: +"One-to-two sentence event summary (truncated to 500 chars): a decision or transition, not a chat message."
    • Changedme.validation_history2 fields changed
      • changedInput schema / properties / repository / description
        Previous value: -"Repository name or path to scope the history to. Pass the same value you would pass to architect.validate. Omit to get one summary per repository. Mutually exclusive with `run_id` — if both are passed, `run_id` wins."New value: +"Repository name or path to scope the history to. Pass the same value you would pass to architect.validate. Omit to get one summary per repository. Mutually exclusive with `run_id`: if both are passed, `run_id` wins."
      • changedInput schema / properties / run_id / description
        Previous value: -"Single-run lookup by run_id (UUID). Returns the persisted result_json verbatim — the same payload architect.validate would have returned if your client hadn't timed out. Use this to recover a result when your MCP tool-call closed before the server returned. Per-run authorisation: returns only runs owned by the calling user."New value: +"Single-run lookup by run_id (UUID). Returns the persisted result_json verbatim: the same payload architect.validate would have returned if your client hadn't timed out. Use this to recover a result when your MCP tool-call closed before the server returned. Per-run authorisation: returns only runs owned by the calling user."
    • Changedsignals.feedback1 field changed
      • changedInput schema / properties / task_type / description
        Previous value: -"What the user was doing when they decided to give feedback. Use plain English — e.g. 'code-review', 'architecture-design', 'agent-setup', 'onboarding', 'validation'. Infer from context."New value: +"What the user was doing when they decided to give feedback. Use plain English: e.g. 'code-review', 'architecture-design', 'agent-setup', 'onboarding', 'validation'. Infer from context."
    • Changedsignals.report5 fields changed
      • changedInput schema / properties / event_type / description
        Previous value: -"Pick the type that best matches what just happened: 'review_confidence' — a validator lens (architect.validate / design.validate / spec.validate) returned aligned; 'runtime_risk_found' — a validate run found violations; 'workflow_clarity' — principles/examples clarified a design decision; 'agent_setup_success' — user successfully wired up an agent or MCP tool; 'onboarding_helped' — user understood how to start using the Blueprint; 'research_time_saved' — user found relevant doctrine faster than expected; 'team_alignment' — Blueprint helped align a team on agentic design; 'other' — use only if none of the above fit."New value: +"Pick the type that best matches what just happened: 'review_confidence': a validator lens (architect.validate / design.validate / spec.validate) returned aligned; 'runtime_risk_found': a validate run found violations; 'workflow_clarity': principles/examples clarified a design decision; 'agent_setup_success': user successfully wired up an agent or MCP tool; 'onboarding_helped': user understood how to start using the Blueprint; 'research_time_saved': user found relevant doctrine faster than expected; 'team_alignment': Blueprint helped align a team on agentic design; 'other': use only if none of the above fit."
      • changedInput schema / properties / perceived_value / description
        Previous value: -"Ask the user: 'On a scale of 1–5, how valuable was this session?' Map their answer directly: 1=low, 5=high. Do not guess — only set this if the user gave an explicit score."New value: +"Ask the user: 'On a scale of 1–5, how valuable was this session?' Map their answer directly: 1=low, 5=high. Do not guess: only set this if the user gave an explicit score."
      • changedInput schema / properties / team_size / description
        Previous value: -"If the user mentions their team size during the session, record it here. Do not ask for it explicitly — only capture if volunteered."New value: +"If the user mentions their team size during the session, record it here. Do not ask for it explicitly: only capture if volunteered."
      • changedInput schema / properties / workflow_stage / description
        Previous value: -"Infer from what the user was doing: 'exploring' — reading doctrine, browsing principles; 'designing' — planning architecture or agent flows; 'implementing' — writing or refactoring code; 'reviewing' — running a validator lens on existing code, a surface, or a spec; 'shipping' — preparing for production or deployment."New value: +"Infer from what the user was doing: 'exploring': reading doctrine, browsing principles; 'designing': planning architecture or agent flows; 'implementing': writing or refactoring code; 'reviewing': running a validator lens on existing code, a surface, or a spec; 'shipping': preparing for production or deployment."
      • changedInput schema / properties / would_recommend / description
        Previous value: -"Ask the user: 'Would you recommend the Blueprint to a colleague?' Set true/false based on their answer. Only set if asked — do not assume."New value: +"Ask the user: 'Would you recommend the Blueprint to a colleague?' Set true/false based on their answer. Only set if asked: do not assume."
    • Changedspec.validate2 fields changed
      • changedInput schema / properties / implementation_context / description
        Previous value: -"The specification under review. SEND FULL TEXT VERBATIM — the reviewer cites specific requirements, decisions, and tasks; any compression destroys evidence and produces findings on content that isn't there. For an OpenSpec change, concatenate proposal.md + design.md + tasks.md + delta specs. Do NOT truncate; if very large, split into MULTIPLE calls scoped by document."New value: +"The specification under review. SEND FULL TEXT VERBATIM: the reviewer cites specific requirements, decisions, and tasks; any compression destroys evidence and produces findings on content that isn't there. For an OpenSpec change, concatenate proposal.md + design.md + tasks.md + delta specs. Do NOT truncate; if very large, split into MULTIPLE calls scoped by document."
      • changedInput schema / properties / session_id / description
        Previous value: -"Optional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions) — foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way."New value: +"Optional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions): foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way."
  5. 1 tool update
    • Changedme.session_event2 fields changed
      • changedInput schema / properties / actor / description
        Previous value: -"Who acted: pm | engineer | designer | system (`human` is reserved for the cockpit channel)"New value: +"Who acted: pm | engineer | designer | system (`human` is reserved for AIDB Studio)"
      • changedInput schema / properties / event_type / description
        Previous value: -"handoff | pushback | plan_preview | gate | ack (ack = started working on a steer; `steer` itself is cockpit-only and refused on this channel)"New value: +"handoff | pushback | plan_preview | gate | ack (ack = started working on a steer; `steer` itself is AIDB Studio-only and refused on this channel)"
  6. 1 tool update
    • Changedprinciples.search1 field changed
      • addedInput schema / properties / lens
        Added value: +{
        +  "default": "architecture",
        +  "description": "Which public doctrine to search: 'architecture' = the 10 agentic principles (default), 'surface' = the 8 experience-design laws, 'spec' = the 8 spec-quality laws, 'all' = all three.",
        +  "enum": [
        +    "architecture",
        +    "surface",
        +    "spec",
        +    "all"
        +  ],
        +  "title": "Lens",
        +  "type": "string"
        +}
  7. 3 tool updates
    • Changedarchitect.validate1 field changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set to true to disable logging AND prior-run anchoring AND run_id recovery for this call. Use for private one-shots that don't participate in the iteration arc. Default false."New value: +"Set to true to skip the stored run AND prior-run anchoring AND run_id recovery for this call. Operational security and cost logs are still kept, per the Privacy Policy. The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Use for private one-shots that don't participate in the iteration arc. Default false."
    • Changeddesign.validate1 field changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set true to disable persistence AND run_id recovery for this call (a private one-shot that does not appear in the dashboard). Default false."New value: +"Set true to disable persistence AND run_id recovery for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false."
    • Changedspec.validate1 field changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set true to disable persistence AND run_id recovery for this call (a private one-shot that does not appear in the dashboard). Default false."New value: +"Set true to disable persistence AND run_id recovery for this call (a private one-shot that does not appear in the dashboard). The request is also not persisted in the model provider's response store; the provider's abuse-monitoring retention still applies. Default false."
  8. 1 tool update
    • Changedexamples.search1 field changed
      • addedInput schema / properties / pattern_family
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "tools-actions",
        +        "reasoning-reflection",
        +        "retrieval",
        +        "memory",
        +        "sampling-search",
        +        "multi-agent",
        +        "safety-routing",
        +        "specialty"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Filter to one agentic-pattern family. Implies patterns only, since no upstream cookbook example carries a family.",
        +  "title": "Pattern Family"
        +}
  9. 2 tool updates
    • Changedprinciples.get1 field changed
      • addedInput schema / properties / lens
        Added value: +{
        +  "default": "architecture",
        +  "description": "Which public doctrine the slug belongs to: 'architecture' (10 principles, default), 'surface' (8 design laws), or 'spec' (8 spec laws).",
        +  "enum": [
        +    "architecture",
        +    "surface",
        +    "spec"
        +  ],
        +  "title": "Lens",
        +  "type": "string"
        +}
    • Changedprinciples.list1 field changed
      • addedInput schema / properties / lens
        Added value: +{
        +  "default": "architecture",
        +  "description": "Which public doctrine: 'architecture' = the 10 agentic principles (default), 'surface' = the 8 experience-design laws, 'spec' = the 8 spec-quality laws.",
        +  "enum": [
        +    "architecture",
        +    "surface",
        +    "spec"
        +  ],
        +  "title": "Lens",
        +  "type": "string"
        +}
  10. 7 tool updates
    • Changedarchitect.validate1 field changed
      • addedInput schema / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional Governed Session to attach this run to (GEP-M2). Must reference a session YOU own (list via me.sessions; sessions are created in the web app at /app/sessions) — foreign ids are refused before any model call. The run then appears on the session's timeline alongside the other lenses. With private_session=true no run is stored so nothing attaches, but the ownership check still runs FIRST: a session id you don't own fails the call either way.",
        +  "title": "Session Id"
        +}
    • Addeddesign.validate
    • Addedme.await_steer
    • Addedme.session_event
    • Addedme.sessions
    • Changedsignals.report2 fields changed
      • changedInput schema / properties / event_type / description
        Previous value: -"Pick the type that best matches what just happened: 'review_confidence' — architect.validate returned aligned; 'runtime_risk_found' — architect.validate found violations; 'workflow_clarity' — principles/examples clarified a design decision; 'agent_setup_success' — user successfully wired up an agent or MCP tool; 'onboarding_helped' — user understood how to start using the Blueprint; 'research_time_saved' — user found relevant doctrine faster than expected; 'team_alignment' — Blueprint helped align a team on agentic design; 'other' — use only if none of the above fit."New value: +"Pick the type that best matches what just happened: 'review_confidence' — a validator lens (architect.validate / design.validate / spec.validate) returned aligned; 'runtime_risk_found' — a validate run found violations; 'workflow_clarity' — principles/examples clarified a design decision; 'agent_setup_success' — user successfully wired up an agent or MCP tool; 'onboarding_helped' — user understood how to start using the Blueprint; 'research_time_saved' — user found relevant doctrine faster than expected; 'team_alignment' — Blueprint helped align a team on agentic design; 'other' — use only if none of the above fit."
      • changedInput schema / properties / workflow_stage / description
        Previous value: -"Infer from what the user was doing: 'exploring' — reading doctrine, browsing principles; 'designing' — planning architecture or agent flows; 'implementing' — writing or refactoring code; 'reviewing' — running architect.validate on existing code; 'shipping' — preparing for production or deployment."New value: +"Infer from what the user was doing: 'exploring' — reading doctrine, browsing principles; 'designing' — planning architecture or agent flows; 'implementing' — writing or refactoring code; 'reviewing' — running a validator lens on existing code, a surface, or a spec; 'shipping' — preparing for production or deployment."
    • Addedspec.validate
  11. 2 tool updates
    • Changedarchitect.validate2 fields changed
      • changedInput schema / properties / private_session / description
        Previous value: -"Set to true to disable all logging for this validation call."New value: +"Set to true to disable logging AND prior-run anchoring AND run_id recovery for this call. Use for private one-shots that don't participate in the iteration arc. Default false."
      • changedInput schema / properties / repository / description
        Previous value: -"Repository name or path for additional context."New value: +"Iteration key. SAME value across calls auto-resolves the most recent prior run as `prior_run_baseline` for iteration-aware grading (per-principle severity deltas, regressions/improvements). CHANGING the value (even subtly with an `iter-2` suffix) silently severs the chain and yields a fresh blind first-shot. Round numbering belongs in `task`, not here. Empirical evidence of why anchoring matters: PR #157 iter1 33/F vs iter2 100/A on byte-identical baseline-race primitives (+67 spread); invoice-payment-manager #158 38/F vs #159 74/C (+36 spread) — same code, score variance from non-deterministic LLM at reasoning_effort=high; the baseline anchor collapses this onto a stable arc."
    • Changedarchitect.validate_consensus1 field changed
      • changedInput schema / properties / repository / description
        Previous value: -"Repository name or path. Lets the consensus row group into the per-project history view alongside single-shot validate runs."New value: +"Iteration key. Consensus children all run unanchored (`private_session=True`), but the consolidated row IS persisted under this key — discoverable as prior baseline for the next single-shot `architect.validate`. Same value across calls keeps the iteration arc inspectable."

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    11 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources