Skip to main content
Glama
Alien6-Studio

OuterSpace Apizr

Official

OuterSpace Apizr

Turn existing Python functions into REST APIs or MCP tools. Inspect training scripts and notebooks, record experiments, and compare their results.

Apizr 0.4.6 supports Python 3.11–3.15 on macOS and Linux.

PyPI CI Security Documentation Python License Apizr MCP server on Glama MCPLookup Trust Index

Install

With uv:

uv tool install outerspace-apizr==0.4.6
apizr --version

Install Apizr 0.4.6 with uv

Prefer pip or Homebrew? Follow the installation guide.

Related MCP server: molmcp

Try it

Save this as pricing.py:

def total(quantity: int, unit_price: float) -> float:
    return round(quantity * unit_price, 2)

Inspect the function, then generate its MCP server:

apizr inspect pricing.py
apizr generate mcp pricing.py --select total --output-dir dist/mcp

Apizr reads the function without running it. You choose which functions to expose. The generated server runs them when a client calls them.

Follow the Quickstart to start a server and make your first REST or MCP calls. The full walkthrough explains how this works across a project.

Work with experiments

Start with a training script or notebook you want to understand:

apizr experiment inspect train.py

The report shows the data, parameters and calculations found in the source. It does not train a model or invent scores.

You can then run trusted code, keep its history, compare results and share a selected prediction function. Start with the Data Scientist quickstart, or follow the Academy.

Go further

The core handles inspection and generation. Plugins are optional. Run generated services and experiments only with code and dependencies you trust.

Documentation · Release notes · Contributing · Report an issue

Available Tools

6 tools
apizr_analyzeAnalyze Python ProjectA
Read-onlyIdempotent

Discover static capability identities, source evidence and relationships when you need to find what to inspect. Does not execute project code. Choose full, summary or exact capability/module detail. Retain a capability ID and the returned repository digest for optional expected_repository_digest pinning; next inspect readiness or test an exposure plan. Evidence is assessed afresh and is not cached for later calls. This tool grants no execution or exposure authority.

NameRequiredDescriptionDefault
viewNofull returns the complete canonical artifact/report; summary returns bounded evidence for compact inspection; detail focuses on exactly one capability or module and can paginate ancillary records. Reduced views are not partial canonical Catalog, Graph or Readiness artifacts.full
limitNoMaximum ancillary records in a detail page, from 1 to 200; omitted/null uses 50. Focus and principal blockers are not paged away. The response byte bound still applies and may refuse even one large record.
moduleNoOne exact logical module name, for example package.model, not a source path. Only for detail, with capability_id omitted/null.
offsetNoZero-based offset into deterministically ordered ancillary detail records after filtering; defaults to 0. Only detail accepts pagination. A nonzero offset requires expected_repository_digest. Use page.next_offset with the same filter; there is no persistent server-side pagination session.
capability_idNoExact canonical capability ID, for example python:model:predict. Only for detail, with module omitted/null. No fuzzy matching, source-path matching or implicit capability selection.
expected_repository_digestNoOptional consistency pin: omit or use null to discover normally without asserting a previous identity, or supply a lowercase 64-character hexadecimal SHA-256 value. Copy repository_digest.value from a previous full result, or identity.repository_digest.value from a bounded view. This plain value is the repository evidence identity expected from this call's discovery of the startup source scope; it does not select another repository. A mismatch is refused with repository_changed. Digest objects, algorithm prefixes and uppercase are invalid.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds genuinely new behavior: no code execution, no execution or exposure authority, evidence re-assessed and not cached, and digest-mismatch refusal. That is substantial context beyond the structured fields, though one point is somewhat restated.

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?

Information is dense and front-loaded with the core purpose, followed by mode choice, workflow, freshness and authority limits. Minor redundancy between 'does not execute project code' and 'grants no execution or exposure authority', but every sentence carries weight.

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

Completeness4/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 described, and the description nonetheless covers safety, freshness, digest pinning and next-step tools. Remaining gap is only the lack of direct sibling naming for routing.

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, but the description adds a workflow rationale for expected_repository_digest (retain the returned digest to pin a later call) and summarizes the view choices. This exceeds what the schema alone conveys about parameter intent.

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?

The description states a specific verb+resource: discover static capability identities, source evidence and relationships. It also clarifies the non-execution scope. It does not name the sibling tools directly, only alluding to 'inspect readiness or test an exposure plan', so sibling differentiation is implied rather than explicit.

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

Usage Guidelines4/5

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

It gives clear workflow context ('when you need to find what to inspect', retain the capability ID and digest, then inspect readiness or test an exposure plan) and calls out the three view modes. It stops short of an explicit when-not statement or naming the alternative tools.

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

apizr_experiment_diffCompare Experiment RunsA
Read-onlyIdempotent

Compare two verified local Runs directionally from A to B using canonical experiment comparison. Returns recorded changes, unknown evidence and finite numeric deltas, never causal conclusions. Requires the configured project's history.read grant. Does not execute, retrain, expose or mutate records; inspect show for the original evidence behind differences.

NameRequiredDescriptionDefault
run_aYesFirst recorded Run identity or unique lowercase prefix; comparison is directional from A to B.
run_bYesSecond recorded Run identity or unique lowercase prefix; differences describe evidence, never causality.

Output 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?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial extra context: the required history.read grant, the fact it does not execute, retrain, expose or mutate records, and the shape of the output (recorded changes, unknown evidence, finite numeric deltas, no causal claims). That is exactly the added-value disclosure expected when annotations cover the safety profile.

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?

Three sentences, front-loaded with the core compare action and followed by constraint/return/routing details. Every clause carries information, though the 'never causal conclusions' idea is echoed again in the run_b schema description, making it slightly repetitive rather than maximally tight.

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 an output schema present, return-value detail need not be in the description, and the remaining gaps an agent needs are covered: the permission requirement, the no-side-effect guarantee, the directional semantics, and the pointer to apizr_experiment_show for underlying evidence. Nothing required 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.

Parameters3/5

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

Schema description coverage is 100%, so run_a and run_b are already fully documented, including the directional A-to-B semantics the description also mentions. The description adds no syntax, prefix-uniqueness rule, or format guidance beyond what the schema states, so the 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?

States a specific verb and resource ('Compare two verified local Runs') with explicit scope ('directionally from A to B using canonical experiment comparison'), and distinguishes itself from the sibling by redirecting to 'inspect show for the original evidence behind differences.' An agent can tell it apart from apizr_experiment_show/list without opening any schema.

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

Usage Guidelines4/5

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

Gives clear context (comparing two existing runs) and states the precondition ('Requires the configured project's history.read grant'), plus points to apizr_experiment_show for raw evidence. It does not explicitly frame when-not to use it beyond 'never causal conclusions,' so it falls just short of full alternative routing.

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

apizr_experiment_listList Experiment RunsA
Read-onlyIdempotent

List verified local experiment Runs, including CLI, SDK and Jupyter captures, with recorded parameters and metrics. Requires an explicit history.read operator grant for the configured project's store. Filters and limit only affect presentation: every retained record is validated. No execution, exposure or store mutation; next use show or diff with returned Run identities.

NameRequiredDescriptionDefault
limitNoMaximum displayed Runs, from 1 to 1000; does not reduce validation of the complete bounded history.
sourceNoOptional exact recorded project-relative source reference, never a filesystem target.
statusNoOptional exact recorded status; all records are validated before this display filter.
capabilityNoOptional exact recorded capability identity; SDK sessions may have none.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real value: it discloses a required authorization grant, and that filters and limit affect only presentation while every retained record is still validated. This is behavioral context an agent cannot infer from the annotations alone.

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?

Three dense sentences that front-load the operation and scope before moving to prerequisites and follow-ups; each sentence carries distinct information. It is compact, though the terminology is jargon-heavy and some clauses pack multiple ideas together.

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

Completeness4/5

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

With a full input schema and an output schema present, return values need not be explained, and the description correctly covers purpose, authorization prerequisite, filter semantics, and next-step routing. Nothing critical is missing for an agent to invoke it correctly, though ordering or pagination behavior of the bounded history is not addressed.

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 all four parameters are already documented in the schema, and the description's framing that filters/limit do not reduce validation largely restates the schema's own limit and status notes. Baseline 3 is appropriate since the description adds little parameter semantics beyond the structured 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?

The description states a specific verb and resource ('List verified local experiment Runs') and enumerates the capture types it covers (CLI, SDK, Jupyter) with their recorded parameters and metrics. It is clearly separable from apizr_experiment_show and apizr_experiment_diff, which it explicitly routes the agent to for follow-up.

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

Usage Guidelines4/5

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

It names the prerequisite ('explicit history.read operator grant for the configured project's store') and points to the correct successors ('use show or diff with returned Run identities'), and clarifies what the tool does not do (no execution, exposure, or store mutation). It lacks an explicit when-not-to-use statement, but the routing guidance is concrete.

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

apizr_experiment_showShow Experiment EvidenceA
Read-onlyIdempotent

Read one verified recorded Run and its intended Plan using an exact digest or unique prefix. Includes producer and capture evidence when retained; unknown provenance stays unknown. Requires the configured project's history.read grant. Does not execute project code, load the producing provider, expose capabilities or mutate the store; compare two identities with diff.

NameRequiredDescriptionDefault
run_idYesFull recorded Run SHA-256 or unique lowercase prefix of 12 to 64 hexadecimal characters; ambiguity refuses the request.

Output 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?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, and the description still adds real context beyond them: the required history.read grant, that producer/capture evidence is included only when retained, that unknown provenance is surfaced as unknown, and an explicit list of non-actions (no code execution, no provider load, no capability exposure, no mutation).

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?

Four tight sentences, front-loaded with the core read action before evidence, auth, and negative-scope clauses. Dense but every clause is load-bearing; only the trailing diff pointer feels slightly bolted on.

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 single-parameter read tool with an output schema, full annotation coverage, and 100% schema description coverage, the description supplies the missing pieces an agent needs: auth requirement, evidence/provenance semantics, and explicit non-effects.

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% and the run_id description already documents the digest/prefix format and ambiguity refusal, so the description's 'exact digest or unique prefix' adds little new meaning. Baseline 3 applies when the schema carries the parameter burden.

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 ('Read one verified recorded Run and its intended Plan') plus the lookup key (exact digest or unique prefix). This clearly separates it from siblings like apizr_experiment_list (enumerate) and apizr_experiment_diff (compare two identities).

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

Usage Guidelines4/5

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

Names the sibling alternative and its trigger condition ('compare two identities with diff'), which routes the agent away from this tool for comparison work. It stops short of stating when-not-to-use for the other siblings (list, analyze, readiness).

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

apizr_plan_exposurePlan Capability ExposureA
Read-onlyIdempotent

Test an exposure proposal when you know which capabilities to expose. Evaluates explicit selection, interfaces and execution constraints against current static evidence/readiness; uses a supplied policy or the startup exposure policy. Returns proposed capability/interface/execution combinations. Does not generate a server, execute a function, change project configuration, publish anything or create operator authorization. For exposure_refused, inspect structured diagnostics/actions and revise the proposal or its evidence before trying again.

NameRequiredDescriptionDefault
limitNoOptional refused-plan diagnostic page size, from 1 to 200; omitted/null uses 50 when pagination is requested. With offset and limit both omitted/null, all refusal diagnostics are returned. Successful plans remain unchanged.
offsetNoOptional zero-based offset into deterministically ordered refused-plan diagnostics; defaults to 0. A nonzero offset requires expected_repository_digest. Successful canonical plans are never paginated; there is no server-side session.
policyNoExplicit proposal policy to use for this plan. Omitted/null uses the startup exposure policy if present; if neither exists, returns policy_required. ExposurePolicy is a planning constraint, not operator authority: it cannot enlarge startup permissions or authorize generation, execution or publication.
expected_repository_digestNoOptional consistency pin: omit or use null to discover normally without asserting a previous identity, or supply a lowercase 64-character hexadecimal SHA-256 value. Copy repository_digest.value from a previous full result, or identity.repository_digest.value from a bounded view. This plain value is the repository evidence identity expected from this call's discovery of the startup source scope; it does not select another repository. A mismatch is refused with repository_changed. Digest objects, algorithm prefixes and uppercase are invalid.

Output Schema

NameRequiredDescription
interfacesYesRequested interfaces validated for all selected capabilities; none has been generated, deployed or run by planning.
capabilitiesYesSelected capability proposals with their readiness evidence, interface compatibility and compatible execution modes; not an execution or publication grant.
graph_digestYesIdentity of the complete canonical static relationship/import Graph used for this proposal.
catalog_digestYesIdentity of the complete canonical static Catalog used for this proposal.
schema_versionNoVersion of this successful exposure proposal contract. A plan is not generation, execution, publication or authorization.
external_modulesYesLexically observed external module names; this does not resolve, install or authorize dependencies.
repository_digestYesRepository evidence identity against which this proposal was assessed; value can pin a subsequent call.
exposure_policy_digestYesIdentity of the exposure selection and execution constraints used for planning, not operator authority.
observed_support_modulesYesLogical support modules observed in the selected static evidence; these are not additional exposed capabilities.
repository_readiness_digestYesIdentity of the canonical repository readiness assessment used for this proposal.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare a safe, idempotent, closed-world read, but the description adds real behavioral scope: it enumerates what the call does NOT do (no generation, execution, config change, publication, or operator authorization) and describes the exposure_refused outcome plus the revise-and-retry path. Return shape ('proposed capability/interface/execution combinations') is also stated. It stops short of explaining the refusal diagnostic structure in more detail.

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?

Four sentences, front-loaded with the purpose, then scope of evaluation, negative scope, and error guidance. Dense but each sentence carries information; the negative-scope list is slightly long but earns its place given how easily this tool could be mistaken for a generator.

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

Completeness4/5

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

With an output schema present and 100% schema coverage, the description need not explain return values, and it still summarizes the outcome and refusal handling. Combined with the annotations, an agent has enough to call it correctly; only the absence of sibling-level routing keeps it from a 5.

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% and the inline parameter descriptions are unusually rich (digest semantics, pagination rules, policy fallback), so the schema already carries the parameter burden. The description only echoes the policy fallback ('uses a supplied policy or the startup exposure policy') and adds no syntax or format detail beyond what the schema provides — the baseline 3 for full coverage.

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?

The description states a specific verb (test/evaluate) and resource (an exposure proposal / explicit capability selection) and enumerates what it evaluates: selection, interfaces, execution constraints against static evidence/readiness. It is clear, but it never names or contrasts the sibling tools (apizr_analyze, apizr_readiness), so an agent cannot tell from this text alone how it differs from readiness analysis.

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

Usage Guidelines4/5

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

It gives a clear triggering condition — 'when you know which capabilities to expose' — and explains the policy resolution path (supplied policy, else startup exposure policy, else policy_required). It stops short of naming alternatives or stating when-not to use it, so it does not reach the explicit routing of a 5.

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

apizr_readinessAssess Repository ReadinessA
Read-onlyIdempotent

Assess whether and under what conditions capabilities satisfy the startup readiness policy. Choose this for limitations, uncertainty and execution/control compatibility, rather than discovering identities or testing an exposure proposal. Use full, summary or exact capability/module detail, optionally pinned to a repository digest. Analysis can help find exact IDs but is not required. exit_code: 1 with isError: false is valid business evidence. Does not execute project code and does not authorize exposure. Next, use sufficient evidence to choose an explicit capability/policy for an exposure plan.

NameRequiredDescriptionDefault
viewNofull returns the complete canonical artifact/report; summary returns bounded evidence for compact inspection; detail focuses on exactly one capability or module and can paginate ancillary records. Reduced views are not partial canonical Catalog, Graph or Readiness artifacts.full
limitNoMaximum ancillary records in a detail page, from 1 to 200; omitted/null uses 50. Focus and principal blockers are not paged away. The response byte bound still applies and may refuse even one large record.
moduleNoOne exact logical module name, for example package.model, not a source path. Only for detail, with capability_id omitted/null.
offsetNoZero-based offset into deterministically ordered ancillary detail records after filtering; defaults to 0. Only detail accepts pagination. A nonzero offset requires expected_repository_digest. Use page.next_offset with the same filter; there is no persistent server-side pagination session.
capability_idNoExact canonical capability ID, for example python:model:predict. Only for detail, with module omitted/null. No fuzzy matching, source-path matching or implicit capability selection.
expected_repository_digestNoOptional consistency pin: omit or use null to discover normally without asserting a previous identity, or supply a lowercase 64-character hexadecimal SHA-256 value. Copy repository_digest.value from a previous full result, or identity.repository_digest.value from a bounded view. This plain value is the repository evidence identity expected from this call's discovery of the startup source scope; it does not select another repository. A mismatch is refused with repository_changed. Digest objects, algorithm prefixes and uppercase are invalid.

Output 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 declare read-only, idempotent, non-destructive behavior, but the description adds important non-annotation facts: it does not execute project code, does not authorize exposure, and exit_code 1 with isError false can be valid business evidence. It also notes digest pinning and that analysis can help find IDs but is not required.

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 purpose is front-loaded and every sentence carries substantive guidance. The description is dense across several sentences, but it avoids repetition and stays focused on selection, behavior, and next steps.

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 six-parameter read-only assessment tool with a full output schema and rich annotations, the description covers purpose, sibling routing, behavioral quirks, and downstream usage. An agent has enough context to call it correctly without needing return-format details.

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 schema already documents each parameter in detail. The description still adds useful integration by summarizing view choices (full, summary, exact capability/module detail) and optional repository digest pinning, though it does not elaborate on limit or offset 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?

States a specific verb and resource: assess whether capabilities satisfy startup readiness policy conditions. It explicitly distinguishes itself from discovering identities or testing exposure proposals, so an agent can separate it from siblings like apizr_plan_exposure 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?

Gives explicit when-to-use guidance: for limitations, uncertainty, and execution/control compatibility, rather than discovering identities or testing exposure. It also names the next step, choosing a capability/policy for an exposure plan, which routes the agent downstream.

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

Tool Schema Changelog

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

  1. 6 tool updates
    • Changedapizr_analyze42 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {},
        +  {
        +    "view": "summary"
        +  },
        +  {
        +    "expected_repository_digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
        +  },
        +  {
        +    "capability_id": "python:model:predict",
        +    "limit": 50,
        +    "view": "detail"
        +  }
        +]
      • addedInput schema / properties / capability_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 1024,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Exact canonical capability ID, for example python:model:predict. Only for detail, with module omitted/null. No fuzzy matching, source-path matching or implicit capability selection.",
        +  "title": "Capability Id"
        +}
      • addedInput schema / properties / expected_repository_digest / description
        Added value: +"Optional consistency pin: omit or use null to discover normally without asserting a previous identity, or supply a lowercase 64-character hexadecimal SHA-256 value. Copy repository_digest.value from a previous full result, or identity.repository_digest.value from a bounded view. This plain value is the repository evidence identity expected from this call's discovery of the startup source scope; it does not select another repository. A mismatch is refused with repository_changed. Digest objects, algorithm prefixes and uppercase are invalid."
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 200,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Maximum ancillary records in a detail page, from 1 to 200; omitted/null uses 50. Focus and principal blockers are not paged away. The response byte bound still applies and may refuse even one large record.",
        +  "title": "Limit"
        +}
      • addedInput schema / properties / module
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 512,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "One exact logical module name, for example package.model, not a source path. Only for detail, with capability_id omitted/null.",
        +  "title": "Module"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 2147483647,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Zero-based offset into deterministically ordered ancillary detail records after filtering; defaults to 0. Only detail accepts pagination. A nonzero offset requires expected_repository_digest. Use page.next_offset with the same filter; there is no persistent server-side pagination session.",
        +  "title": "Offset"
        +}
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "full",
        +  "description": "full returns the complete canonical artifact/report; summary returns bounded evidence for compact inspection; detail focuses on exactly one capability or module and can paginate ancillary records. Reduced views are not partial canonical Catalog, Graph or Readiness artifacts.",
        +  "enum": [
        +    "full",
        +    "summary",
        +    "detail"
        +  ],
        +  "title": "View",
        +  "type": "string"
        +}
      • changedInput schema / title
        Previous value: -"Arguments"New value: +"ViewArguments"
      • addedOutput schema / $defs / AnalysisCounts
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capabilities": {
        +      "title": "Capabilities",
        +      "type": "integer"
        +    },
        +    "catalog_diagnostics": {
        +      "title": "Catalog Diagnostics",
        +      "type": "integer"
        +    },
        +    "graph_complete": {
        +      "title": "Graph Complete",
        +      "type": "boolean"
        +    },
        +    "graph_diagnostics": {
        +      "title": "Graph Diagnostics",
        +      "type": "integer"
        +    },
        +    "imports": {
        +      "title": "Imports",
        +      "type": "integer"
        +    },
        +    "inspected_sources": {
        +      "title": "Inspected Sources",
        +      "type": "integer"
        +    },
        +    "modules": {
        +      "title": "Modules",
        +      "type": "integer"
        +    },
        +    "relationships": {
        +      "title": "Relationships",
        +      "type": "integer"
        +    },
        +    "sources": {
        +      "title": "Sources",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "sources",
        +    "inspected_sources",
        +    "capabilities",
        +    "modules",
        +    "relationships",
        +    "imports",
        +    "graph_complete",
        +    "catalog_diagnostics",
        +    "graph_diagnostics"
        +  ],
        +  "title": "AnalysisCounts",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AnalysisDetail
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "focus": {
        +      "description": "The exactly selected capability or logical module with its static evidence and readiness states; never paged away.",
        +      "discriminator": {
        +        "mapping": {
        +          "capability": "#/$defs/CapabilityFocus",
        +          "module": "#/$defs/ModuleFocus"
        +        },
        +        "propertyName": "kind"
        +      },
        +      "oneOf": [
        +        {
        +          "$ref": "#/$defs/CapabilityFocus"
        +        },
        +        {
        +          "$ref": "#/$defs/ModuleFocus"
        +        }
        +      ],
        +      "title": "Focus"
        +    },
        +    "identity": {
        +      "$ref": "#/$defs/AnalysisIdentity",
        +      "description": "Identities of the complete static artifacts; filtering and paging do not change them."
        +    },
        +    "page": {
        +      "$ref": "#/$defs/Page",
        +      "description": "Pagination metadata for ancillary records after deterministic filtering and ordering."
        +    },
        +    "principal_blockers": {
        +      "$ref": "#/$defs/Blockers",
        +      "description": "Bounded principal diagnostic sample for this focus with complete count and has_more."
        +    },
        +    "records": {
        +      "description": "Current page of ancillary static source, dependency, relationship, import or diagnostic evidence; dependencies are not implicitly exposed.",
        +      "items": {
        +        "discriminator": {
        +          "mapping": {
        +            "capability": "#/$defs/CapabilityRecord",
        +            "dependency": "#/$defs/DependencyRecord",
        +            "diagnostic": "#/$defs/DiagnosticRecord",
        +            "import": "#/$defs/ImportRecord",
        +            "relationship": "#/$defs/RelationshipRecord",
        +            "source": "#/$defs/SourceRecord"
        +          },
        +          "propertyName": "kind"
        +        },
        +        "oneOf": [
        +          {
        +            "$ref": "#/$defs/DependencyRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/CapabilityRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/SourceRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/RelationshipRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/ImportRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/DiagnosticRecord"
        +          }
        +        ]
        +      },
        +      "title": "Records",
        +      "type": "array"
        +    },
        +    "view": {
        +      "const": "detail",
        +      "default": "detail",
        +      "description": "Focused static evidence view, not a partial canonical Catalog or Graph.",
        +      "title": "View",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "identity",
        +    "focus",
        +    "principal_blockers",
        +    "page",
        +    "records"
        +  ],
        +  "title": "AnalysisDetail",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AnalysisIdentity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "catalog_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Digest of the complete canonical static Catalog, unchanged by filtering or pagination."
        +    },
        +    "graph_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Digest of the complete canonical static Graph, unchanged by filtering or pagination."
        +    },
        +    "repository_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Complete repository evidence identity; copy value to expected_repository_digest for consistency pinning."
        +    }
        +  },
        +  "required": [
        +    "repository_digest",
        +    "catalog_digest",
        +    "graph_digest"
        +  ],
        +  "title": "AnalysisIdentity",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AnalysisResult
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "catalog": {
        +      "$ref": "#/$defs/Catalog",
        +      "description": "Complete canonical static capability and source evidence; does not imply successful project execution."
        +    },
        +    "graph": {
        +      "$ref": "#/$defs/Graph",
        +      "description": "Complete canonical static relationship and import graph evidence, including uncertainty; does not imply successful project execution."
        +    },
        +    "repository_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Repository evidence identity observed by this call; copy value to expected_repository_digest to pin a subsequent call."
        +    }
        +  },
        +  "required": [
        +    "repository_digest",
        +    "catalog",
        +    "graph"
        +  ],
        +  "title": "AnalysisResult",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / AnalysisSummary
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "identity": {
        +      "$ref": "#/$defs/AnalysisIdentity",
        +      "description": "Identities of the complete static artifacts underlying this bounded view."
        +    },
        +    "principal_blockers": {
        +      "$ref": "#/$defs/Blockers",
        +      "description": "Bounded sample of at most ten principal diagnostics with total and has_more; not all evidence."
        +    },
        +    "summary": {
        +      "$ref": "#/$defs/AnalysisCounts",
        +      "description": "Static source, capability, relationship and diagnostic counts; no project execution is implied."
        +    },
        +    "view": {
        +      "const": "summary",
        +      "default": "summary",
        +      "description": "Bounded summary variant, not a partial canonical Catalog or Graph.",
        +      "title": "View",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "identity",
        +    "summary",
        +    "principal_blockers"
        +  ],
        +  "title": "AnalysisSummary",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / Blockers
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "has_more": {
        +      "title": "Has More",
        +      "type": "boolean"
        +    },
        +    "shown": {
        +      "items": {
        +        "$ref": "#/$defs/EvidenceDiagnostic"
        +      },
        +      "maxItems": 10,
        +      "title": "Shown",
        +      "type": "array"
        +    },
        +    "total": {
        +      "minimum": 0,
        +      "title": "Total",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "shown",
        +    "has_more"
        +  ],
        +  "title": "Blockers",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / CapabilityFocus
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capability": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/CapabilityEntry"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "capability_id": {
        +      "title": "Capability Id",
        +      "type": "string"
        +    },
        +    "global_evidence_complete": {
        +      "title": "Global Evidence Complete",
        +      "type": "boolean"
        +    },
        +    "interface_eligible": {
        +      "title": "Interface Eligible",
        +      "type": "boolean"
        +    },
        +    "kind": {
        +      "const": "capability",
        +      "default": "capability",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "local_readiness": {
        +      "$ref": "#/$defs/Assessment"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    },
        +    "reasons": {
        +      "items": {
        +        "$ref": "#/$defs/apizr__repository_readiness__model__Reason"
        +      },
        +      "title": "Reasons",
        +      "type": "array"
        +    },
        +    "repository_state": {
        +      "$ref": "#/$defs/State"
        +    },
        +    "selected_state": {
        +      "$ref": "#/$defs/State"
        +    },
        +    "source_path": {
        +      "title": "Source Path",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "capability_id",
        +    "module",
        +    "source_path",
        +    "capability",
        +    "local_readiness",
        +    "repository_state",
        +    "selected_state",
        +    "interface_eligible",
        +    "global_evidence_complete",
        +    "reasons"
        +  ],
        +  "title": "CapabilityFocus",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / CapabilityRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capability": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/CapabilityEntry"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "capability_id": {
        +      "title": "Capability Id",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "const": "capability",
        +      "default": "capability",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "local_state": {
        +      "$ref": "#/$defs/State"
        +    },
        +    "source_path": {
        +      "title": "Source Path",
        +      "type": "string"
        +    },
        +    "state": {
        +      "$ref": "#/$defs/State"
        +    }
        +  },
        +  "required": [
        +    "capability_id",
        +    "source_path",
        +    "capability",
        +    "local_state",
        +    "state"
        +  ],
        +  "title": "CapabilityRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / DependencyRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "exposed": {
        +      "const": false,
        +      "default": false,
        +      "title": "Exposed",
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "title": "Id",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "const": "dependency",
        +      "default": "dependency",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "node": {
        +      "anyOf": [
        +        {
        +          "discriminator": {
        +            "mapping": {
        +              "capability": "#/$defs/CapabilityNode",
        +              "external_module": "#/$defs/ExternalNode",
        +              "module": "#/$defs/ModuleNode"
        +            },
        +            "propertyName": "kind"
        +          },
        +          "oneOf": [
        +            {
        +              "$ref": "#/$defs/ModuleNode"
        +            },
        +            {
        +              "$ref": "#/$defs/CapabilityNode"
        +            },
        +            {
        +              "$ref": "#/$defs/ExternalNode"
        +            }
        +          ]
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Node"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "node"
        +  ],
        +  "title": "DependencyRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / DiagnosticRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "diagnostic": {
        +      "$ref": "#/$defs/EvidenceDiagnostic"
        +    },
        +    "kind": {
        +      "const": "diagnostic",
        +      "default": "diagnostic",
        +      "title": "Kind",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "diagnostic"
        +  ],
        +  "title": "DiagnosticRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / Digest / properties / algorithm / description
        Added value: +"Digest algorithm identifier, currently fixed to SHA-256 (sha256)."
      • addedOutput schema / $defs / Digest / properties / value / description
        Added value: +"The 64-character lowercase hexadecimal SHA-256 digest value, without an algorithm prefix."
      • changedOutput schema / $defs / Dimension / properties / reasons / items / $ref
        Previous value: -"#/$defs/Reason"New value: +"#/$defs/apizr__readiness__model__Reason"
      • addedOutput schema / $defs / EvidenceDiagnostic
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "enum": [
        +            "inspect_dependency",
        +            "fix_import",
        +            "fix_binding",
        +            "fix_initialization",
        +            "select_known_capability",
        +            "resolve_interface_contract",
        +            "adjust_execution_requirements"
        +          ],
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Action"
        +    },
        +    "capability_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Capability Id"
        +    },
        +    "code": {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "title": "Code",
        +      "type": "string"
        +    },
        +    "column": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Column"
        +    },
        +    "dependency_path": {
        +      "default": [],
        +      "items": {
        +        "type": "string"
        +      },
        +      "title": "Dependency Path",
        +      "type": "array"
        +    },
        +    "line": {
        +      "anyOf": [
        +        {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Line"
        +    },
        +    "origin": {
        +      "enum": [
        +        "catalog",
        +        "graph",
        +        "readiness",
        +        "scope"
        +      ],
        +      "title": "Origin",
        +      "type": "string"
        +    },
        +    "reason": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Reason"
        +    },
        +    "source_path": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Source Path"
        +    }
        +  },
        +  "required": [
        +    "origin",
        +    "code"
        +  ],
        +  "title": "EvidenceDiagnostic",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ImportRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "declaration": {
        +      "$ref": "#/$defs/ImportDeclaration"
        +    },
        +    "kind": {
        +      "const": "import",
        +      "default": "import",
        +      "title": "Kind",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "declaration"
        +  ],
        +  "title": "ImportRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ModuleFocus
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capability_count": {
        +      "title": "Capability Count",
        +      "type": "integer"
        +    },
        +    "kind": {
        +      "const": "module",
        +      "default": "module",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    },
        +    "node": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/ModuleNode"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "source": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/SourceView"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "source_count": {
        +      "title": "Source Count",
        +      "type": "integer"
        +    },
        +    "states": {
        +      "additionalProperties": {
        +        "type": "integer"
        +      },
        +      "propertyNames": {
        +        "$ref": "#/$defs/State"
        +      },
        +      "title": "States",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "module",
        +    "source_count",
        +    "source",
        +    "node",
        +    "capability_count",
        +    "states"
        +  ],
        +  "title": "ModuleFocus",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ObjectField
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "name": {
        +      "title": "Name",
        +      "type": "string"
        +    },
        +    "required": {
        +      "title": "Required",
        +      "type": "boolean"
        +    },
        +    "type": {
        +      "$ref": "#/$defs/TypeSpec"
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "required",
        +    "type"
        +  ],
        +  "title": "ObjectField",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / Page
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "complete": {
        +      "description": "True when no subsequent page remains; does not assert that static evidence itself is complete.",
        +      "title": "Complete",
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "description": "Maximum records requested for this page; not a response byte limit.",
        +      "maximum": 200,
        +      "minimum": 1,
        +      "title": "Limit",
        +      "type": "integer"
        +    },
        +    "next_offset": {
        +      "anyOf": [
        +        {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Offset for the next page, or null when complete; continue with the same filter and repository digest pin.",
        +      "title": "Next Offset"
        +    },
        +    "offset": {
        +      "description": "Zero-based offset in the complete filtered and deterministically ordered record collection.",
        +      "minimum": 0,
        +      "title": "Offset",
        +      "type": "integer"
        +    },
        +    "returned": {
        +      "description": "Number of records actually included in this page.",
        +      "minimum": 0,
        +      "title": "Returned",
        +      "type": "integer"
        +    },
        +    "total": {
        +      "description": "Total records in the complete filtered collection before pagination.",
        +      "minimum": 0,
        +      "title": "Total",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "offset",
        +    "limit",
        +    "total",
        +    "returned",
        +    "complete"
        +  ],
        +  "title": "Page",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ReadinessReport / properties / structured_types
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "$ref": "#/$defs/StructuredDeclaration"
        +  },
        +  "title": "Structured Types",
        +  "type": "array"
        +}
      • removedOutput schema / $defs / Reason
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "code": {
        -      "$ref": "#/$defs/apizr__readiness__model__Code"
        -    },
        -    "evidence": {
        -      "const": "inferred",
        -      "default": "inferred",
        -      "title": "Evidence",
        -      "type": "string"
        -    },
        -    "line": {
        -      "title": "Line",
        -      "type": "integer"
        -    },
        -    "parameter": {
        -      "anyOf": [
        -        {
        -          "type": "string"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "default": null,
        -      "title": "Parameter"
        -    }
        -  },
        -  "required": [
        -    "code",
        -    "line"
        -  ],
        -  "title": "Reason",
        -  "type": "object"
        -}
      • addedOutput schema / $defs / RelationshipRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "kind": {
        +      "const": "relationship",
        +      "default": "relationship",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "relationship": {
        +      "$ref": "#/$defs/Relationship"
        +    }
        +  },
        +  "required": [
        +    "relationship"
        +  ],
        +  "title": "RelationshipRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / SourceRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "kind": {
        +      "const": "source",
        +      "default": "source",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "source": {
        +      "$ref": "#/$defs/SourceView"
        +    }
        +  },
        +  "required": [
        +    "source"
        +  ],
        +  "title": "SourceRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / SourceView
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "inspected": {
        +      "title": "Inspected",
        +      "type": "boolean"
        +    },
        +    "is_package": {
        +      "title": "Is Package",
        +      "type": "boolean"
        +    },
        +    "module": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Module"
        +    },
        +    "path": {
        +      "title": "Path",
        +      "type": "string"
        +    },
        +    "size": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Size"
        +    },
        +    "source_digest": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/Digest"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "path",
        +    "module",
        +    "source_digest",
        +    "size",
        +    "inspected",
        +    "is_package"
        +  ],
        +  "title": "SourceView",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / StructuredDeclaration
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Source-bound, statically proven shape or an explicit bounded refusal.",
        +  "properties": {
        +    "name": {
        +      "title": "Name",
        +      "type": "string"
        +    },
        +    "problem": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Problem"
        +    },
        +    "source": {
        +      "$ref": "#/$defs/SourceSpan"
        +    },
        +    "type": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/TypeSpec"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "source"
        +  ],
        +  "title": "StructuredDeclaration",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / TypeSpec
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "fields": {
        +      "default": [],
        +      "items": {
        +        "$ref": "#/$defs/ObjectField"
        +      },
        +      "title": "Fields",
        +      "type": "array"
        +    },
        +    "items": {
        +      "default": [],
        +      "items": {
        +        "$ref": "#/$defs/TypeSpec"
        +      },
        +      "title": "Items",
        +      "type": "array"
        +    },
        +    "kind": {
        +      "enum": [
        +        "any",
        +        "int",
        +        "str",
        +        "float",
        +        "bool",
        +        "null",
        +        "list",
        +        "dict",
        +        "tuple",
        +        "set",
        +        "union",
        +        "literal",
        +        "object"
        +      ],
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "values": {
        +      "default": [],
        +      "items": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "integer"
        +          },
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "title": "Values",
        +      "type": "array"
        +    },
        +    "variadic": {
        +      "default": false,
        +      "title": "Variadic",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "kind"
        +  ],
        +  "title": "TypeSpec",
        +  "type": "object"
        +}
      • changedOutput schema / $defs / apizr__readiness__model__Code / enum
        Previous value: -[
        -  "APIZR-READY-001",
        -  "APIZR-READY-002",
        -  "APIZR-READY-003",
        -  "APIZR-READY-004",
        -  "APIZR-READY-005",
        -  "APIZR-READY-006",
        -  "APIZR-READY-007",
        -  "APIZR-READY-008",
        -  "APIZR-READY-009",
        -  "APIZR-READY-010",
        -  "APIZR-READY-011",
        -  "APIZR-READY-012",
        -  "APIZR-READY-013",
        -  "APIZR-READY-014",
        -  "APIZR-READY-015",
        -  "APIZR-READY-016",
        -  "APIZR-READY-017",
        -  "APIZR-READY-018"
        -]New value: +[
        +  "APIZR-READY-001",
        +  "APIZR-READY-002",
        +  "APIZR-READY-003",
        +  "APIZR-READY-004",
        +  "APIZR-READY-005",
        +  "APIZR-READY-006",
        +  "APIZR-READY-007",
        +  "APIZR-READY-008",
        +  "APIZR-READY-009",
        +  "APIZR-READY-010",
        +  "APIZR-READY-011",
        +  "APIZR-READY-012",
        +  "APIZR-READY-013",
        +  "APIZR-READY-014",
        +  "APIZR-READY-015",
        +  "APIZR-READY-016",
        +  "APIZR-READY-017",
        +  "APIZR-READY-018",
        +  "APIZR-READY-019"
        +]
      • addedOutput schema / $defs / apizr__readiness__model__Reason
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "code": {
        +      "$ref": "#/$defs/apizr__readiness__model__Code"
        +    },
        +    "evidence": {
        +      "const": "inferred",
        +      "default": "inferred",
        +      "title": "Evidence",
        +      "type": "string"
        +    },
        +    "line": {
        +      "title": "Line",
        +      "type": "integer"
        +    },
        +    "parameter": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Parameter"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "line"
        +  ],
        +  "title": "Reason",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / apizr__repository_readiness__model__Code
        Added value: +{
        +  "enum": [
        +    "APIZR-REPOREADY-001",
        +    "APIZR-REPOREADY-002",
        +    "APIZR-REPOREADY-003",
        +    "APIZR-REPOREADY-004",
        +    "APIZR-REPOREADY-005",
        +    "APIZR-REPOREADY-006",
        +    "APIZR-REPOREADY-007",
        +    "APIZR-REPOREADY-008"
        +  ],
        +  "title": "Code",
        +  "type": "string"
        +}
      • addedOutput schema / $defs / apizr__repository_readiness__model__Reason
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "code": {
        +      "$ref": "#/$defs/apizr__repository_readiness__model__Code"
        +    },
        +    "effect": {
        +      "anyOf": [
        +        {
        +          "enum": [
        +            "filesystem_read",
        +            "filesystem_write",
        +            "network",
        +            "environment",
        +            "subprocess",
        +            "state_mutation",
        +            "secrets",
        +            "external_service"
        +          ],
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Effect"
        +    }
        +  },
        +  "required": [
        +    "code"
        +  ],
        +  "title": "Reason",
        +  "type": "object"
        +}
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "$ref": "#/$defs/AnalysisResult"
        +  },
        +  {
        +    "$ref": "#/$defs/AnalysisSummary"
        +  },
        +  {
        +    "$ref": "#/$defs/AnalysisDetail"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "catalog": {
        -    "$ref": "#/$defs/Catalog"
        -  },
        -  "graph": {
        -    "$ref": "#/$defs/Graph"
        -  },
        -  "repository_digest": {
        -    "$ref": "#/$defs/Digest"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "repository_digest",
        -  "catalog",
        -  "graph"
        -]
      • changedOutput schema / title
        Previous value: -"AnalysisResult"New value: +"AnalysisOutput"
    • Addedapizr_experiment_diff
    • Addedapizr_experiment_list
    • Addedapizr_experiment_show
    • Changedapizr_plan_exposure38 fields changed
      • addedInput schema / $defs / Eligibility / properties / allow_conditional / description
        Added value: +"Allow selected capabilities with CONDITIONAL readiness in their required repository evidence to be proposed, subject to all other planner checks. CONDITIONAL does not become READY; ambiguous or unsupported evidence is not made eligible."
      • addedInput schema / $defs / Execution / properties / allowed / description
        Added value: +"Explicit nonempty set of acceptable execution modes. No ranking, implicit default or fallback. Compatibility must also satisfy the startup readiness policy; selecting a mode does not execute or authorize anything."
      • addedInput schema / $defs / Execution / properties / require / description
        Added value: +"Explicit execution controls that every compatible proposed mode must support. These requirements narrow compatibility; they do not grant operator permissions or attest to a live runtime."
      • addedInput schema / $defs / ExposurePolicy / properties / eligibility / description
        Added value: +"Readiness eligibility constraints for selected capabilities; cannot replace missing or uncertain evidence."
      • addedInput schema / $defs / ExposurePolicy / properties / execution / description
        Added value: +"Explicit acceptable execution modes and required controls for compatibility planning, not permission to execute."
      • addedInput schema / $defs / ExposurePolicy / properties / interfaces / description
        Added value: +"Nonempty requested generated interface set: rest and/or mcp. Planning checks compatibility for every interface; it does not generate, deploy or run them."
      • addedInput schema / $defs / ExposurePolicy / properties / schema_version / description
        Added value: +"Version identifier for this exposure planning constraint contract; not operator authorization."
      • addedInput schema / $defs / ExposurePolicy / properties / selection / description
        Added value: +"Explicit capability selection proposal; empty defaults do not select every capability."
      • addedInput schema / $defs / Selection / properties / exclude / description
        Added value: +"Exact capability IDs removed after combining include and include_all_ready. Unknown IDs in either include or exclude are refused."
      • addedInput schema / $defs / Selection / properties / include / description
        Added value: +"Exact canonical capability IDs explicitly proposed for exposure, for example python:model:predict. No fuzzy matching or implicit dependency exposure."
      • addedInput schema / $defs / Selection / properties / include_all_ready / description
        Added value: +"Add capabilities assessed READY in the repository readiness report to the requested selection before exclusions. All planner eligibility, interface and execution checks still apply; this grants no publication or operator authority."
      • addedInput schema / examples
        Added value: +[
        +  {},
        +  {
        +    "expected_repository_digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
        +  },
        +  {
        +    "policy": {
        +      "execution": {
        +        "allowed": [
        +          "direct"
        +        ]
        +      },
        +      "interfaces": [
        +        "mcp"
        +      ],
        +      "selection": {
        +        "include": [
        +          "python:model:predict"
        +        ]
        +      }
        +    }
        +  }
        +]
      • addedInput schema / properties / expected_repository_digest / description
        Added value: +"Optional consistency pin: omit or use null to discover normally without asserting a previous identity, or supply a lowercase 64-character hexadecimal SHA-256 value. Copy repository_digest.value from a previous full result, or identity.repository_digest.value from a bounded view. This plain value is the repository evidence identity expected from this call's discovery of the startup source scope; it does not select another repository. A mismatch is refused with repository_changed. Digest objects, algorithm prefixes and uppercase are invalid."
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 200,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional refused-plan diagnostic page size, from 1 to 200; omitted/null uses 50 when pagination is requested. With offset and limit both omitted/null, all refusal diagnostics are returned. Successful plans remain unchanged.",
        +  "title": "Limit"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 2147483647,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Optional zero-based offset into deterministically ordered refused-plan diagnostics; defaults to 0. A nonzero offset requires expected_repository_digest. Successful canonical plans are never paginated; there is no server-side session.",
        +  "title": "Offset"
        +}
      • addedInput schema / properties / policy / description
        Added value: +"Explicit proposal policy to use for this plan. Omitted/null uses the startup exposure policy if present; if neither exists, returns policy_required. ExposurePolicy is a planning constraint, not operator authority: it cannot enlarge startup permissions or authorize generation, execution or publication."
      • addedOutput schema / $defs / Digest / properties / algorithm / description
        Added value: +"Digest algorithm identifier, currently fixed to SHA-256 (sha256)."
      • addedOutput schema / $defs / Digest / properties / value / description
        Added value: +"The 64-character lowercase hexadecimal SHA-256 digest value, without an algorithm prefix."
      • addedOutput schema / $defs / ExposureRecord / properties / capability_id / description
        Added value: +"Exact canonical ID of this selected capability proposal; dependencies are not implicitly selected."
      • addedOutput schema / $defs / ExposureRecord / properties / compatible_execution_modes / description
        Added value: +"Modes satisfying both the proposal's allowed modes/required controls and the readiness policy. No ranking, fallback or execution authority is implied."
      • addedOutput schema / $defs / ExposureRecord / properties / compatible_interfaces / description
        Added value: +"Requested interfaces that pass static compatibility checks; every requested interface must be compatible in a successful plan."
      • addedOutput schema / $defs / ExposureRecord / properties / effects / description
        Added value: +"Retained static effect evidence, including unknown effects; not observations from executing the capability."
      • addedOutput schema / $defs / ExposureRecord / properties / module / description
        Added value: +"Logical Python module owning the selected capability."
      • addedOutput schema / $defs / ExposureRecord / properties / readiness_reasons / description
        Added value: +"Retained reasons supporting the selected-scope readiness assessment, including conditional evidence."
      • addedOutput schema / $defs / ExposureRecord / properties / relationships / description
        Added value: +"Retained static relationship and import evidence used by this capability proposal."
      • addedOutput schema / $defs / ExposureRecord / properties / repository_readiness / description
        Added value: +"Readiness of the selected capability's required repository evidence. CONDITIONAL requires explicit policy allowance and is not READY or proof of successful execution."
      • addedOutput schema / $defs / ExposureRecord / properties / requested_interfaces / description
        Added value: +"Interfaces explicitly requested by the proposal policy for this capability."
      • addedOutput schema / $defs / ExposureRecord / properties / source_path / description
        Added value: +"Repository-relative source path for this static capability evidence, not an authorized filesystem target."
      • addedOutput schema / properties / capabilities / description
        Added value: +"Selected capability proposals with their readiness evidence, interface compatibility and compatible execution modes; not an execution or publication grant."
      • addedOutput schema / properties / catalog_digest / description
        Added value: +"Identity of the complete canonical static Catalog used for this proposal."
      • addedOutput schema / properties / exposure_policy_digest / description
        Added value: +"Identity of the exposure selection and execution constraints used for planning, not operator authority."
      • addedOutput schema / properties / external_modules / description
        Added value: +"Lexically observed external module names; this does not resolve, install or authorize dependencies."
      • addedOutput schema / properties / graph_digest / description
        Added value: +"Identity of the complete canonical static relationship/import Graph used for this proposal."
      • addedOutput schema / properties / interfaces / description
        Added value: +"Requested interfaces validated for all selected capabilities; none has been generated, deployed or run by planning."
      • addedOutput schema / properties / observed_support_modules / description
        Added value: +"Logical support modules observed in the selected static evidence; these are not additional exposed capabilities."
      • addedOutput schema / properties / repository_digest / description
        Added value: +"Repository evidence identity against which this proposal was assessed; value can pin a subsequent call."
      • addedOutput schema / properties / repository_readiness_digest / description
        Added value: +"Identity of the canonical repository readiness assessment used for this proposal."
      • addedOutput schema / properties / schema_version / description
        Added value: +"Version of this successful exposure proposal contract. A plan is not generation, execution, publication or authorization."
    • Changedapizr_readiness39 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {},
        +  {
        +    "view": "summary"
        +  },
        +  {
        +    "expected_repository_digest": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
        +  },
        +  {
        +    "capability_id": "python:model:predict",
        +    "limit": 50,
        +    "view": "detail"
        +  }
        +]
      • addedInput schema / properties / capability_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 1024,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Exact canonical capability ID, for example python:model:predict. Only for detail, with module omitted/null. No fuzzy matching, source-path matching or implicit capability selection.",
        +  "title": "Capability Id"
        +}
      • addedInput schema / properties / expected_repository_digest / description
        Added value: +"Optional consistency pin: omit or use null to discover normally without asserting a previous identity, or supply a lowercase 64-character hexadecimal SHA-256 value. Copy repository_digest.value from a previous full result, or identity.repository_digest.value from a bounded view. This plain value is the repository evidence identity expected from this call's discovery of the startup source scope; it does not select another repository. A mismatch is refused with repository_changed. Digest objects, algorithm prefixes and uppercase are invalid."
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 200,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Maximum ancillary records in a detail page, from 1 to 200; omitted/null uses 50. Focus and principal blockers are not paged away. The response byte bound still applies and may refuse even one large record.",
        +  "title": "Limit"
        +}
      • addedInput schema / properties / module
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 512,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "One exact logical module name, for example package.model, not a source path. Only for detail, with capability_id omitted/null.",
        +  "title": "Module"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 2147483647,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Zero-based offset into deterministically ordered ancillary detail records after filtering; defaults to 0. Only detail accepts pagination. A nonzero offset requires expected_repository_digest. Use page.next_offset with the same filter; there is no persistent server-side pagination session.",
        +  "title": "Offset"
        +}
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "full",
        +  "description": "full returns the complete canonical artifact/report; summary returns bounded evidence for compact inspection; detail focuses on exactly one capability or module and can paginate ancillary records. Reduced views are not partial canonical Catalog, Graph or Readiness artifacts.",
        +  "enum": [
        +    "full",
        +    "summary",
        +    "detail"
        +  ],
        +  "title": "View",
        +  "type": "string"
        +}
      • changedInput schema / title
        Previous value: -"Arguments"New value: +"ViewArguments"
      • addedOutput schema / $defs / Blockers
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "has_more": {
        +      "title": "Has More",
        +      "type": "boolean"
        +    },
        +    "shown": {
        +      "items": {
        +        "$ref": "#/$defs/EvidenceDiagnostic"
        +      },
        +      "maxItems": 10,
        +      "title": "Shown",
        +      "type": "array"
        +    },
        +    "total": {
        +      "minimum": 0,
        +      "title": "Total",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "total",
        +    "shown",
        +    "has_more"
        +  ],
        +  "title": "Blockers",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / CapabilityEntry
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "can_generate_interface": {
        +      "title": "Can Generate Interface",
        +      "type": "boolean"
        +    },
        +    "execution": {
        +      "$ref": "#/$defs/ExecutionForm"
        +    },
        +    "id": {
        +      "title": "Id",
        +      "type": "string"
        +    },
        +    "ir_digest": {
        +      "$ref": "#/$defs/Digest"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    },
        +    "readiness": {
        +      "$ref": "#/$defs/State"
        +    },
        +    "readiness_digest": {
        +      "$ref": "#/$defs/Digest"
        +    },
        +    "source_digest": {
        +      "$ref": "#/$defs/Digest"
        +    },
        +    "source_path": {
        +      "title": "Source Path",
        +      "type": "string"
        +    },
        +    "span": {
        +      "$ref": "#/$defs/SourceSpan"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "module",
        +    "source_path",
        +    "source_digest",
        +    "ir_digest",
        +    "readiness_digest",
        +    "readiness",
        +    "can_generate_interface",
        +    "execution",
        +    "span"
        +  ],
        +  "title": "CapabilityEntry",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / CapabilityFocus
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capability": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/CapabilityEntry"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "capability_id": {
        +      "title": "Capability Id",
        +      "type": "string"
        +    },
        +    "global_evidence_complete": {
        +      "title": "Global Evidence Complete",
        +      "type": "boolean"
        +    },
        +    "interface_eligible": {
        +      "title": "Interface Eligible",
        +      "type": "boolean"
        +    },
        +    "kind": {
        +      "const": "capability",
        +      "default": "capability",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "local_readiness": {
        +      "$ref": "#/$defs/Assessment"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    },
        +    "reasons": {
        +      "items": {
        +        "$ref": "#/$defs/apizr__repository_readiness__model__Reason"
        +      },
        +      "title": "Reasons",
        +      "type": "array"
        +    },
        +    "repository_state": {
        +      "$ref": "#/$defs/State"
        +    },
        +    "selected_state": {
        +      "$ref": "#/$defs/State"
        +    },
        +    "source_path": {
        +      "title": "Source Path",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "capability_id",
        +    "module",
        +    "source_path",
        +    "capability",
        +    "local_readiness",
        +    "repository_state",
        +    "selected_state",
        +    "interface_eligible",
        +    "global_evidence_complete",
        +    "reasons"
        +  ],
        +  "title": "CapabilityFocus",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / CapabilityNode
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "can_generate_interface": {
        +      "title": "Can Generate Interface",
        +      "type": "boolean"
        +    },
        +    "execution": {
        +      "$ref": "#/$defs/ExecutionForm"
        +    },
        +    "id": {
        +      "title": "Id",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "const": "capability",
        +      "default": "capability",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    },
        +    "name": {
        +      "title": "Name",
        +      "type": "string"
        +    },
        +    "path": {
        +      "title": "Path",
        +      "type": "string"
        +    },
        +    "readiness": {
        +      "$ref": "#/$defs/State"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "module",
        +    "name",
        +    "path",
        +    "readiness",
        +    "can_generate_interface",
        +    "execution"
        +  ],
        +  "title": "CapabilityNode",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / CapabilityRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capability": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/CapabilityEntry"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "capability_id": {
        +      "title": "Capability Id",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "const": "capability",
        +      "default": "capability",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "local_state": {
        +      "$ref": "#/$defs/State"
        +    },
        +    "source_path": {
        +      "title": "Source Path",
        +      "type": "string"
        +    },
        +    "state": {
        +      "$ref": "#/$defs/State"
        +    }
        +  },
        +  "required": [
        +    "capability_id",
        +    "source_path",
        +    "capability",
        +    "local_state",
        +    "state"
        +  ],
        +  "title": "CapabilityRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / DependencyRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "exposed": {
        +      "const": false,
        +      "default": false,
        +      "title": "Exposed",
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "title": "Id",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "const": "dependency",
        +      "default": "dependency",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "node": {
        +      "anyOf": [
        +        {
        +          "discriminator": {
        +            "mapping": {
        +              "capability": "#/$defs/CapabilityNode",
        +              "external_module": "#/$defs/ExternalNode",
        +              "module": "#/$defs/ModuleNode"
        +            },
        +            "propertyName": "kind"
        +          },
        +          "oneOf": [
        +            {
        +              "$ref": "#/$defs/ModuleNode"
        +            },
        +            {
        +              "$ref": "#/$defs/CapabilityNode"
        +            },
        +            {
        +              "$ref": "#/$defs/ExternalNode"
        +            }
        +          ]
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Node"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "node"
        +  ],
        +  "title": "DependencyRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / DependencyWheel
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Retained wheel identity and statically observed importable modules.\n\nThis establishes a provider for imports, not API compatibility, safe module\ninitialization or a successful future invocation. Consumers retain that\nuncertainty and require explicit conditional exposure.",
        +  "properties": {
        +    "digest": {
        +      "$ref": "#/$defs/Digest"
        +    },
        +    "filename": {
        +      "maxLength": 255,
        +      "title": "Filename",
        +      "type": "string"
        +    },
        +    "modules": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 10000,
        +      "minItems": 1,
        +      "title": "Modules",
        +      "type": "array"
        +    },
        +    "pin": {
        +      "title": "Pin",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "pin",
        +    "filename",
        +    "digest",
        +    "modules"
        +  ],
        +  "title": "DependencyWheel",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / DiagnosticRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "diagnostic": {
        +      "$ref": "#/$defs/EvidenceDiagnostic"
        +    },
        +    "kind": {
        +      "const": "diagnostic",
        +      "default": "diagnostic",
        +      "title": "Kind",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "diagnostic"
        +  ],
        +  "title": "DiagnosticRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / Digest / properties / algorithm / description
        Added value: +"Digest algorithm identifier, currently fixed to SHA-256 (sha256)."
      • addedOutput schema / $defs / Digest / properties / value / description
        Added value: +"The 64-character lowercase hexadecimal SHA-256 digest value, without an algorithm prefix."
      • addedOutput schema / $defs / EvidenceDiagnostic
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "action": {
        +      "anyOf": [
        +        {
        +          "enum": [
        +            "inspect_dependency",
        +            "fix_import",
        +            "fix_binding",
        +            "fix_initialization",
        +            "select_known_capability",
        +            "resolve_interface_contract",
        +            "adjust_execution_requirements"
        +          ],
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Action"
        +    },
        +    "capability_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Capability Id"
        +    },
        +    "code": {
        +      "maxLength": 128,
        +      "minLength": 1,
        +      "title": "Code",
        +      "type": "string"
        +    },
        +    "column": {
        +      "anyOf": [
        +        {
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Column"
        +    },
        +    "dependency_path": {
        +      "default": [],
        +      "items": {
        +        "type": "string"
        +      },
        +      "title": "Dependency Path",
        +      "type": "array"
        +    },
        +    "line": {
        +      "anyOf": [
        +        {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Line"
        +    },
        +    "origin": {
        +      "enum": [
        +        "catalog",
        +        "graph",
        +        "readiness",
        +        "scope"
        +      ],
        +      "title": "Origin",
        +      "type": "string"
        +    },
        +    "reason": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Reason"
        +    },
        +    "source_path": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "title": "Source Path"
        +    }
        +  },
        +  "required": [
        +    "origin",
        +    "code"
        +  ],
        +  "title": "EvidenceDiagnostic",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ExecutionForm
        Added value: +{
        +  "enum": [
        +    "sync",
        +    "async",
        +    "generator",
        +    "async_generator"
        +  ],
        +  "title": "ExecutionForm",
        +  "type": "string"
        +}
      • addedOutput schema / $defs / ExternalNode
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "id": {
        +      "title": "Id",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "const": "external_module",
        +      "default": "external_module",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "module"
        +  ],
        +  "title": "ExternalNode",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ImportRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "declaration": {
        +      "$ref": "#/$defs/ImportDeclaration"
        +    },
        +    "kind": {
        +      "const": "import",
        +      "default": "import",
        +      "title": "Kind",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "declaration"
        +  ],
        +  "title": "ImportRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ModuleFocus
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "capability_count": {
        +      "title": "Capability Count",
        +      "type": "integer"
        +    },
        +    "kind": {
        +      "const": "module",
        +      "default": "module",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    },
        +    "node": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/ModuleNode"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "source": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/SourceView"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "source_count": {
        +      "title": "Source Count",
        +      "type": "integer"
        +    },
        +    "states": {
        +      "additionalProperties": {
        +        "type": "integer"
        +      },
        +      "propertyNames": {
        +        "$ref": "#/$defs/State"
        +      },
        +      "title": "States",
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "module",
        +    "source_count",
        +    "source",
        +    "node",
        +    "capability_count",
        +    "states"
        +  ],
        +  "title": "ModuleFocus",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ModuleNode
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "analyzed": {
        +      "title": "Analyzed",
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "title": "Id",
        +      "type": "string"
        +    },
        +    "kind": {
        +      "const": "module",
        +      "default": "module",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "module": {
        +      "title": "Module",
        +      "type": "string"
        +    },
        +    "path": {
        +      "title": "Path",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "module",
        +    "path",
        +    "analyzed"
        +  ],
        +  "title": "ModuleNode",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / Page
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "complete": {
        +      "description": "True when no subsequent page remains; does not assert that static evidence itself is complete.",
        +      "title": "Complete",
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "description": "Maximum records requested for this page; not a response byte limit.",
        +      "maximum": 200,
        +      "minimum": 1,
        +      "title": "Limit",
        +      "type": "integer"
        +    },
        +    "next_offset": {
        +      "anyOf": [
        +        {
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "default": null,
        +      "description": "Offset for the next page, or null when complete; continue with the same filter and repository digest pin.",
        +      "title": "Next Offset"
        +    },
        +    "offset": {
        +      "description": "Zero-based offset in the complete filtered and deterministically ordered record collection.",
        +      "minimum": 0,
        +      "title": "Offset",
        +      "type": "integer"
        +    },
        +    "returned": {
        +      "description": "Number of records actually included in this page.",
        +      "minimum": 0,
        +      "title": "Returned",
        +      "type": "integer"
        +    },
        +    "total": {
        +      "description": "Total records in the complete filtered collection before pagination.",
        +      "minimum": 0,
        +      "title": "Total",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "offset",
        +    "limit",
        +    "total",
        +    "returned",
        +    "complete"
        +  ],
        +  "title": "Page",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ReadinessDetail
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "exit_code": {
        +      "description": "Business readiness outcome: 0 denotes a successful readiness result under the assessment policy; 1 can be a valid assessment with isError: false. It is not an MCP transport or runtime failure. Consult the retained states and reasons: CONDITIONAL is not READY, and unknown or ambiguous evidence is not proof of failure.",
        +      "enum": [
        +        0,
        +        1
        +      ],
        +      "title": "Exit Code",
        +      "type": "integer"
        +    },
        +    "focus": {
        +      "description": "Exactly selected capability or module; local, repository and selected readiness evidence remain distinct and are never paged away.",
        +      "discriminator": {
        +        "mapping": {
        +          "capability": "#/$defs/CapabilityFocus",
        +          "module": "#/$defs/ModuleFocus"
        +        },
        +        "propertyName": "kind"
        +      },
        +      "oneOf": [
        +        {
        +          "$ref": "#/$defs/CapabilityFocus"
        +        },
        +        {
        +          "$ref": "#/$defs/ModuleFocus"
        +        }
        +      ],
        +      "title": "Focus"
        +    },
        +    "identity": {
        +      "$ref": "#/$defs/ReadinessIdentity",
        +      "description": "Complete repository, artifact and readiness-policy identities underlying this view."
        +    },
        +    "page": {
        +      "$ref": "#/$defs/Page",
        +      "description": "Pagination metadata for ancillary records after deterministic filtering and ordering."
        +    },
        +    "principal_blockers": {
        +      "$ref": "#/$defs/Blockers",
        +      "description": "Bounded principal diagnostic sample for this focus with complete count and has_more."
        +    },
        +    "records": {
        +      "description": "Current page of ancillary evidence supporting readiness; unknown evidence is retained and does not imply successful project execution.",
        +      "items": {
        +        "discriminator": {
        +          "mapping": {
        +            "capability": "#/$defs/CapabilityRecord",
        +            "dependency": "#/$defs/DependencyRecord",
        +            "diagnostic": "#/$defs/DiagnosticRecord",
        +            "import": "#/$defs/ImportRecord",
        +            "relationship": "#/$defs/RelationshipRecord",
        +            "source": "#/$defs/SourceRecord"
        +          },
        +          "propertyName": "kind"
        +        },
        +        "oneOf": [
        +          {
        +            "$ref": "#/$defs/DependencyRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/CapabilityRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/SourceRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/RelationshipRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/ImportRecord"
        +          },
        +          {
        +            "$ref": "#/$defs/DiagnosticRecord"
        +          }
        +        ]
        +      },
        +      "title": "Records",
        +      "type": "array"
        +    },
        +    "view": {
        +      "const": "detail",
        +      "default": "detail",
        +      "description": "Focused readiness view, not a partial canonical readiness report.",
        +      "title": "View",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "identity",
        +    "exit_code",
        +    "focus",
        +    "principal_blockers",
        +    "page",
        +    "records"
        +  ],
        +  "title": "ReadinessDetail",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ReadinessIdentity
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "catalog_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Digest of the complete canonical static Catalog, unchanged by filtering or pagination."
        +    },
        +    "graph_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Digest of the complete canonical static Graph, unchanged by filtering or pagination."
        +    },
        +    "readiness_policy_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Digest of the readiness assessment policy used for this evidence."
        +    },
        +    "repository_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Complete repository evidence identity; copy value to expected_repository_digest for consistency pinning."
        +    },
        +    "repository_readiness_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Digest of the complete canonical repository readiness report, not just the displayed view."
        +    }
        +  },
        +  "required": [
        +    "repository_digest",
        +    "catalog_digest",
        +    "graph_digest",
        +    "repository_readiness_digest",
        +    "readiness_policy_digest"
        +  ],
        +  "title": "ReadinessIdentity",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ReadinessResult
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "exit_code": {
        +      "description": "Business readiness outcome: 0 denotes a successful readiness result under the assessment policy; 1 can be a valid assessment with isError: false. It is not an MCP transport or runtime failure. Consult the retained states and reasons: CONDITIONAL is not READY, and unknown or ambiguous evidence is not proof of failure.",
        +      "enum": [
        +        0,
        +        1
        +      ],
        +      "title": "Exit Code",
        +      "type": "integer"
        +    },
        +    "report": {
        +      "$ref": "#/$defs/RepositoryReadinessReport",
        +      "description": "Complete canonical static readiness assessment under the startup policy. READY, CONDITIONAL, AMBIGUOUS and UNSUPPORTED remain distinct; unknown evidence is retained. This is not proof of successful execution."
        +    },
        +    "repository_digest": {
        +      "$ref": "#/$defs/Digest",
        +      "description": "Repository evidence identity observed by this call; copy value to expected_repository_digest to pin a subsequent call."
        +    }
        +  },
        +  "required": [
        +    "repository_digest",
        +    "report",
        +    "exit_code"
        +  ],
        +  "title": "ReadinessResult",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / ReadinessSummary
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "execution": {
        +      "description": "Static execution-mode compatibility under the readiness policy, not execution authority or proof of successful execution.",
        +      "items": {
        +        "$ref": "#/$defs/ModeCompatibility"
        +      },
        +      "title": "Execution",
        +      "type": "array"
        +    },
        +    "exit_code": {
        +      "description": "Business readiness outcome: 0 denotes a successful readiness result under the assessment policy; 1 can be a valid assessment with isError: false. It is not an MCP transport or runtime failure. Consult the retained states and reasons: CONDITIONAL is not READY, and unknown or ambiguous evidence is not proof of failure.",
        +      "enum": [
        +        0,
        +        1
        +      ],
        +      "title": "Exit Code",
        +      "type": "integer"
        +    },
        +    "identity": {
        +      "$ref": "#/$defs/ReadinessIdentity",
        +      "description": "Complete repository, artifact and readiness-policy identities underlying this view."
        +    },
        +    "principal_blockers": {
        +      "$ref": "#/$defs/Blockers",
        +      "description": "Bounded sample of at most ten principal diagnostics with total and has_more; not all evidence."
        +    },
        +    "states": {
        +      "additionalProperties": {
        +        "type": "integer"
        +      },
        +      "description": "Counts by canonical readiness state; conditional and ambiguous evidence remain distinct from ready evidence.",
        +      "propertyNames": {
        +        "$ref": "#/$defs/State"
        +      },
        +      "title": "States",
        +      "type": "object"
        +    },
        +    "view": {
        +      "const": "summary",
        +      "default": "summary",
        +      "description": "Bounded readiness summary, not a partial canonical readiness report.",
        +      "title": "View",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "identity",
        +    "exit_code",
        +    "states",
        +    "execution",
        +    "principal_blockers"
        +  ],
        +  "title": "ReadinessSummary",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / RelationshipRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "kind": {
        +      "const": "relationship",
        +      "default": "relationship",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "relationship": {
        +      "$ref": "#/$defs/Relationship"
        +    }
        +  },
        +  "required": [
        +    "relationship"
        +  ],
        +  "title": "RelationshipRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / RepositoryReadinessPolicy / properties / dependency_wheels
        Added value: +{
        +  "default": [],
        +  "items": {
        +    "$ref": "#/$defs/DependencyWheel"
        +  },
        +  "maxItems": 128,
        +  "title": "Dependency Wheels",
        +  "type": "array"
        +}
      • addedOutput schema / $defs / SourceRecord
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "kind": {
        +      "const": "source",
        +      "default": "source",
        +      "title": "Kind",
        +      "type": "string"
        +    },
        +    "source": {
        +      "$ref": "#/$defs/SourceView"
        +    }
        +  },
        +  "required": [
        +    "source"
        +  ],
        +  "title": "SourceRecord",
        +  "type": "object"
        +}
      • addedOutput schema / $defs / SourceView
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "inspected": {
        +      "title": "Inspected",
        +      "type": "boolean"
        +    },
        +    "is_package": {
        +      "title": "Is Package",
        +      "type": "boolean"
        +    },
        +    "module": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Module"
        +    },
        +    "path": {
        +      "title": "Path",
        +      "type": "string"
        +    },
        +    "size": {
        +      "anyOf": [
        +        {
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "title": "Size"
        +    },
        +    "source_digest": {
        +      "anyOf": [
        +        {
        +          "$ref": "#/$defs/Digest"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "path",
        +    "module",
        +    "source_digest",
        +    "size",
        +    "inspected",
        +    "is_package"
        +  ],
        +  "title": "SourceView",
        +  "type": "object"
        +}
      • changedOutput schema / $defs / apizr__readiness__model__Code / enum
        Previous value: -[
        -  "APIZR-READY-001",
        -  "APIZR-READY-002",
        -  "APIZR-READY-003",
        -  "APIZR-READY-004",
        -  "APIZR-READY-005",
        -  "APIZR-READY-006",
        -  "APIZR-READY-007",
        -  "APIZR-READY-008",
        -  "APIZR-READY-009",
        -  "APIZR-READY-010",
        -  "APIZR-READY-011",
        -  "APIZR-READY-012",
        -  "APIZR-READY-013",
        -  "APIZR-READY-014",
        -  "APIZR-READY-015",
        -  "APIZR-READY-016",
        -  "APIZR-READY-017",
        -  "APIZR-READY-018"
        -]New value: +[
        +  "APIZR-READY-001",
        +  "APIZR-READY-002",
        +  "APIZR-READY-003",
        +  "APIZR-READY-004",
        +  "APIZR-READY-005",
        +  "APIZR-READY-006",
        +  "APIZR-READY-007",
        +  "APIZR-READY-008",
        +  "APIZR-READY-009",
        +  "APIZR-READY-010",
        +  "APIZR-READY-011",
        +  "APIZR-READY-012",
        +  "APIZR-READY-013",
        +  "APIZR-READY-014",
        +  "APIZR-READY-015",
        +  "APIZR-READY-016",
        +  "APIZR-READY-017",
        +  "APIZR-READY-018",
        +  "APIZR-READY-019"
        +]
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "$ref": "#/$defs/ReadinessResult"
        +  },
        +  {
        +    "$ref": "#/$defs/ReadinessSummary"
        +  },
        +  {
        +    "$ref": "#/$defs/ReadinessDetail"
        +  }
        +]
      • removedOutput schema / properties
        Removed value: -{
        -  "exit_code": {
        -    "enum": [
        -      0,
        -      1
        -    ],
        -    "title": "Exit Code",
        -    "type": "integer"
        -  },
        -  "report": {
        -    "$ref": "#/$defs/RepositoryReadinessReport"
        -  },
        -  "repository_digest": {
        -    "$ref": "#/$defs/Digest"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "repository_digest",
        -  "report",
        -  "exit_code"
        -]
      • changedOutput schema / title
        Previous value: -"ReadinessResult"New value: +"ReadinessOutput"
  2. 3 tool updates
    • First observedapizr_analyze
    • First observedapizr_plan_exposure
    • First observedapizr_readiness

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct phase: discovery (analyze), policy assessment (readiness), proposal testing (plan_exposure), and experiment history (list/show/diff). Boundaries are explicitly spelled out in the descriptions, though analyze and readiness both inspect the same capability space, which could cause occasional selection confusion.

Naming Consistency4/5

All names share a clean apizr_ prefix and snake_case, but the verb/no-un structure is mixed: single verbs (analyze), nouns (readiness), and noun_verb compounds (plan_exposure, experiment_list, experiment_show). Mostly consistent with minor deviation in the base convention.

Tool Count5/5

Six tools is well-scoped for the server's purpose, covering discovery, readiness, exposure planning, and an experiment list/show/diff trio. Each tool clearly earns its place with no redundancy.

Completeness4/5

The static-analysis-to-exposure-planning workflow (analyze -> readiness -> plan_exposure) and experiment inspection (list/show/diff) appear well covered. Gaps are minor, since exposure execution and server generation are intentionally out of scope for this read-only/inspection surface.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A graph-based codebase capability discovery engine for LLM agents, exposing indexed code symbols, signatures, and relationships over MCP to enable agents to find and use tools without guessing names.
    9
    BSD 3-Clause
  • A
    license
    B
    quality
    C
    maintenance
    Convert plain Python modules into MCP servers without decorators or boilerplate, automatically exposing functions as schematized tools.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables users to turn any API, CLI, database, website, SDK, or codebase into a production-ready MCP server with secure, dynamically discoverable capabilities.
    MIT