oas2mcp.agent.summarizer.context

Deterministic context builders for the catalog summarizer agent.

Purpose:

Build compact, structured context objects for the catalog-level summarizer agent using normalized catalogs and optional MCP candidate bundles.

Design:
  • Keep context building deterministic and side-effect free.

  • Emphasize the API’s purpose, conceptual structure, domains, data model, and request/response patterns.

  • Preserve lightweight operational and MCP-oriented signals without letting them dominate the summarizer’s input.

  • Support summarization with or without a classified MCP bundle.

Examples

context = build_catalog_summary_context(catalog, bundle=bundle)
print(context.catalog_name)
print(context.primary_schema_refs[0].schema_ref)

Classes

CandidateExample

Compact MCP candidate example for summarizer input.

CatalogSecuritySchemeContext

Compact security scheme context for summarizer input.

CatalogSummaryContext

Compact agent-facing context for catalog-level summarization.

CatalogTagContext

Deterministic tag/domain context for summarizer input.

SchemaRefSummary

Compact rollup for frequently referenced schema refs.

Functions

build_catalog_summary_context(→ CatalogSummaryContext)

Build deterministic summarizer context for an API catalog.

Module Contents

class oas2mcp.agent.summarizer.context.CandidateExample(/, **data: Any)[source][source]

Bases: oas2mcp.models.normalized.NormalizedBaseModel

Compact MCP candidate example for summarizer input.

Parameters:

None.

Returns:

None.

Raises:

None.

Examples

candidate = CandidateExample(
    operation_key="GET /pets/{id}",
    operation_slug="get-pet-by-id",
    kind="resource",
    title="Get pet by ID",
    safety_level="safe_read",
)
kind: str[source][source]
operation_key: str[source][source]
operation_slug: str[source][source]
resource_uri: str | None = None[source][source]
safety_level: str[source][source]
title: str[source][source]
tool_name: str | None = None[source][source]
class oas2mcp.agent.summarizer.context.CatalogSecuritySchemeContext(/, **data: Any)[source][source]

Bases: oas2mcp.models.normalized.NormalizedBaseModel

Compact security scheme context for summarizer input.

Parameters:

None.

Returns:

None.

Raises:

None.

Examples

scheme = CatalogSecuritySchemeContext(
    name="api_key",
    type="apiKey",
    location="header",
    parameter_name="X-API-Key",
)
bearer_format: str | None = None[source][source]
flow_names: list[str] = None[source][source]
location: str | None = None[source][source]
name: str[source][source]
parameter_name: str | None = None[source][source]
scheme: str | None = None[source][source]
type: str[source][source]
class oas2mcp.agent.summarizer.context.CatalogSummaryContext(/, **data: Any)[source][source]

Bases: oas2mcp.models.normalized.NormalizedBaseModel

Compact agent-facing context for catalog-level summarization.

Parameters:

None.

Returns:

None.

Raises:

None.

Examples

context = CatalogSummaryContext(
    catalog_name="Petstore",
    catalog_slug="petstore",
    source_uri="https://example.com/openapi.json",
)
candidate_count: int = 0[source][source]
candidate_kind_counts: dict[str, int] = None[source][source]
candidate_safety_counts: dict[str, int] = None[source][source]
catalog_name: str[source][source]
catalog_slug: str[source][source]
component_counts: dict[str, int] = None[source][source]
deprecated_operation_count: int = 0[source][source]
destructive_operation_count: int = 0[source][source]
info_description: str | None = None[source][source]
info_summary: str | None = None[source][source]
info_title: str | None = None[source][source]
info_version: str | None = None[source][source]
mutating_operation_count: int = 0[source][source]
notable_mutating_operations: list[str] = None[source][source]
notable_operations: list[str] = None[source][source]
notable_read_operations: list[str] = None[source][source]
openapi_version: str | None = None[source][source]
operation_count: int = 0[source][source]
primary_schema_refs: list[SchemaRefSummary] = None[source][source]
read_operation_count: int = 0[source][source]
request_schema_refs: list[SchemaRefSummary] = None[source][source]
response_schema_refs: list[SchemaRefSummary] = None[source][source]
sample_resource_candidates: list[CandidateExample] = None[source][source]
sample_tool_candidates: list[CandidateExample] = None[source][source]
security_schemes: list[CatalogSecuritySchemeContext] = None[source][source]
server_urls: list[str] = None[source][source]
source_uri: str[source][source]
tag_summaries: list[CatalogTagContext] = None[source][source]
class oas2mcp.agent.summarizer.context.CatalogTagContext(/, **data: Any)[source][source]

Bases: oas2mcp.models.normalized.NormalizedBaseModel

Deterministic tag/domain context for summarizer input.

Parameters:

None.

Returns:

None.

Raises:

None.

Examples

tag_context = CatalogTagContext(
    tag_name="pet",
    description="Everything about your Pets",
    operation_count=8,
)
description: str[source][source]
mutating_operation_count: int = 0[source][source]
notable_operations: list[str] = None[source][source]
operation_count: int = 0[source][source]
operation_ids: list[str] = None[source][source]
operation_keys: list[str] = None[source][source]
read_operation_count: int = 0[source][source]
tag_name: str[source][source]
class oas2mcp.agent.summarizer.context.SchemaRefSummary(/, **data: Any)[source][source]

Bases: oas2mcp.models.normalized.NormalizedBaseModel

Compact rollup for frequently referenced schema refs.

Parameters:

None.

Returns:

None.

Raises:

None.

Examples

summary = SchemaRefSummary(
    schema_ref="#/components/schemas/Pet",
    count=4,
)
count: int[source][source]
schema_ref: str[source][source]
oas2mcp.agent.summarizer.context.build_catalog_summary_context(catalog: oas2mcp.models.normalized.ApiCatalog, bundle: oas2mcp.models.mcp.McpBundle | None = None) CatalogSummaryContext[source][source]

Build deterministic summarizer context for an API catalog.

Parameters:
  • catalog – The normalized API catalog.

  • bundle – Optional MCP bundle produced by deterministic classification.

Returns:

A compact CatalogSummaryContext suitable for a summarizer agent.

Raises:

None.

Examples

context = build_catalog_summary_context(catalog, bundle=bundle)