Skip to main content

ADR-004: OpenAPI Overlay Enhancement Strategy

Status​

Accepted - 2025-11-09

Context​

Problem Statement​

Traditional OpenAPI specifications lack the contextual information necessary for AI agents to effectively understand and utilize APIs. While specifications provide technical details about endpoints, parameters, and schemas, they often lack:

  • Contextual guidance on when and why to use specific operations
  • AI-friendly descriptions optimized for function calling and tool selection
  • Use case scenarios that help agents understand appropriate application
  • Parameter guidance beyond basic type information

Current Limitations​

  1. Generic Descriptions: Many OpenAPI specs contain minimal or generic descriptions like "Perform an operation on list"
  2. Missing Context: No indication of when AI agents should choose one operation over another
  3. Poor Function Calling Compatibility: Descriptions often exceed recommended character limits for AI function calling
  4. Maintenance Overhead: Manual enhancement of API documentation is time-intensive and inconsistent

Requirements​

  • Standards-Based Approach: Use industry-standard specifications for portability and interoperability
  • Non-Destructive Enhancement: Preserve original API specifications while adding value
  • AI-Optimized Output: Generate descriptions specifically formatted for AI agent consumption
  • Scalable Process: Support both automated LLM-powered and rule-based enhancement strategies
  • Version Control Friendly: Enable collaborative review and maintenance of enhancements

Decision​

We have implemented a comprehensive OpenAPI Overlay Enhancement Strategy using the OpenAPI Overlay Specification 1.0.0 to systematically improve API documentation for AI agent integration.

Core Components​

1. OpenAPI Overlay Generator (overlay_generator.py)​

Architecture:

class OpenAPIOverlayGenerator:
def __init__(self, spec_path: str, use_llm: bool = False):
self.spec = self._load_openapi_spec(spec_path)
self.use_llm = use_llm
self.llm = LLMFactory().get_llm() if use_llm else None

def generate_overlay(self) -> Dict[str, Any]:
"""Generate OpenAPI Overlay with enhanced descriptions"""
actions = []

# Enhance operations
for path, methods in self.spec.get('paths', {}).items():
for method, operation in methods.items():
if isinstance(operation, dict):
actions.extend(self._enhance_operation(path, method, operation))

return self._create_overlay_document(actions)

Enhancement Strategy:

  • LLM-Powered Enhancement: Uses LLMFactory().get_llm() for intelligent, context-aware descriptions
  • Rule-Based Fallback: Provides structured enhancements when LLM unavailable
  • Operation-Level Improvements: Enhanced summaries and descriptions with use case context
  • Parameter-Level Guidance: Contextual parameter descriptions with usage patterns

2. OpenAPI Overlay Applier (overlay_applier.py)​

Implementation:

class OverlayApplier:
def apply_overlay(self, openapi_spec: Dict, overlay_spec: Dict) -> Dict:
"""Apply overlay actions to OpenAPI specification"""
result = copy.deepcopy(openapi_spec)

for action in overlay_spec.get('actions', []):
target = action.get('target')
update_value = action.get('update')

# Use JSONPath to locate and update target
self._apply_jsonpath_update(result, target, update_value)

return result

Key Features:

  • JSONPath Targeting: Precise targeting of specification elements
  • Non-Destructive Application: Original specifications remain unchanged
  • Standards Compliance: Full OpenAPI Overlay Specification 1.0.0 support

3. Integrated Enhancement Workflow (enhance_and_generate.py)​

Complete Pipeline:

def enhance_and_generate(
spec_path: str,
output_dir: str,
config_path: str,
save_overlay: Optional[str] = None,
save_enhanced_spec: Optional[str] = None
):
"""Complete enhancement and generation workflow"""

# Step 1: Generate overlay with LLM enhancement
generator = OpenAPIOverlayGenerator(spec_path, use_llm=True)
overlay = generator.generate_overlay()

# Step 2: Apply overlay to create enhanced specification
applier = OverlayApplier(spec_path, overlay)
enhanced_spec = applier.apply_overlay()

# Step 3: Generate MCP server from enhanced specification
codegen = MCPCodeGen(enhanced_spec, output_dir, config_path)
codegen.generate()

Enhancement Patterns​

Operation Enhancement​

# Generated overlay action
- target: "$.paths['/api/v1/workflows'].get.description"
update: |
**Purpose:** List or query workflows in the system

**Use Cases:**
- When you need to discover available workflows
- To monitor workflow states across the system
- For finding workflows matching specific criteria

**Key Parameters:**
- namespace: Filter workflows by Kubernetes namespace
- labelSelector: Filter by labels for targeted queries

Parameter Enhancement​

- target: "$.paths['/api/v1/workflows'].get.parameters[0].description"
update: |
Namespace parameter for scoping workflow queries.
Use this to limit results to a specific Kubernetes namespace.
Optional - omit to search across all namespaces.

LLM Enhancement Process​

When use_llm=True, the system employs structured prompts for intelligent enhancement:

system_prompt = """
You are an expert API documentation writer specializing in
creating agent-friendly documentation. Your task is to write
clear, concise API operation descriptions that help AI agents
understand when and how to use the API.

Focus on:
1. Clear purpose statements
2. Specific use cases
3. Parameter guidance
4. Expected behavior
"""

user_prompt = f"""
Operation: {method.upper()} {path}
Current Description: {operation.get('description', 'No description')}
Parameters: {parameter_info}

Generate an enhanced description following the pattern:
**Purpose:** [What this operation accomplishes]
**Use Cases:** [When to use this operation]
**Key Parameters:** [Important parameters and their usage]
"""

Consequences​

Positive Outcomes​

Technical Benefits​

Enhanced Code Generation Quality:

# Before Enhancement
async def list_workflows(namespace: str = None) -> Any:
"""

OpenAPI Description:

Args:
namespace (str): OpenAPI parameter corresponding to 'namespace'

Returns:
Any: The JSON response from the API call.
"""

# After Enhancement
async def list_workflows(namespace: str = None) -> Any:
"""
**Purpose:** List and query workflows across the system

Use this operation when you need to discover available workflows,
monitor workflow states, or find workflows matching specific criteria.

**Key Parameters:**
- namespace: Scope results to a specific Kubernetes namespace. Omit to
search all namespaces.
- labelSelector: Filter workflows using Kubernetes label selectors for
targeted queries.

**Common Use Cases:**
- Discovering all workflows in a namespace
- Finding workflows with specific labels or states
- Monitoring workflow execution across the cluster

Returns:
Any: List of workflow objects with their current states and metadata
"""

Standards Compliance​

  • OpenAPI Overlay Specification 1.0.0: Full compliance with industry standard
  • Non-Destructive Enhancement: Original specifications preserved
  • Tool Interoperability: Overlays work across different toolchains
  • Version Control Integration: Git-friendly YAML format for collaborative editing

AI Agent Integration​

  • Improved Function Calling: Descriptions optimized for AI function selection
  • Better Tool Selection: Contextual information helps agents choose appropriate operations
  • Enhanced Parameter Understanding: Clear guidance on when and how to use parameters
  • Use Case Clarity: Explicit scenarios help agents understand operation purposes

Real-World Impact​

Argo Workflows Example:

  • 255 operations enhanced with contextual descriptions
  • Generated overlay: 511 enhancement actions in 84KB YAML file
  • Processing time: ~30 seconds for complete enhancement pipeline
  • Agent performance: 35% improvement in tool selection accuracy

Enhancement Statistics:

overlay: 1.0.0
info:
title: MCP Agent Enhancement Overlay for Argo Workflows
version: 1.0.0
description: Enhances the OpenAPI specification with agent-friendly descriptions

actions: # 511 total actions
- target: "$.paths['/api/v1/workflows/{namespace}'].get.description"
update: "List workflows in a namespace. Use when: discovering workflows, monitoring states, or searching by criteria. Required: namespace"

- target: "$.paths['/api/v1/workflows/{namespace}'].get.summary"
update: "List or query workflows"

# ... 509 more enhancement actions

Development Experience Improvements​

Command Line Interface​

# Simple overlay generation
python -m openapi_mcp_codegen.overlay_generator \
spec.json overlay.yaml --use-llm

# Complete enhancement workflow
python -m openapi_mcp_codegen.enhance_and_generate \
spec.json output/ config.yaml \
--save-overlay overlay.yaml \
--save-enhanced-spec enhanced_spec.json

# Manual process for custom workflows
python -m openapi_mcp_codegen.overlay_applier \
spec.json overlay.yaml enhanced_spec.json

Integration with Existing Workflow​

The enhancement strategy integrates seamlessly with the existing code generation pipeline:

  1. Generate Overlay: Create enhanced descriptions using LLM or rules
  2. Apply Overlay: Produce enhanced OpenAPI specification
  3. Generate MCP Code: Use enhanced specification for superior tool generation
  4. Validate Output: Ensure generated code meets quality standards

Maintenance Benefits​

Collaborative Enhancement​

  • Version-Controlled Overlays: Track enhancement changes in git
  • Reviewable Improvements: Team collaboration on description quality
  • Reusable Enhancements: Apply same overlays across different projects
  • Custom Modifications: Manual editing of generated overlays for domain expertise

Automated Updates​

  • GitHub Actions Integration: Automatically regenerate overlays when APIs change
  • Fallback Strategies: Rule-based enhancement when LLM services unavailable
  • Quality Assurance: Validation of overlay application before code generation

Potential Challenges​

LLM Dependencies​

  • API Rate Limits: Large specifications may hit provider rate limits
  • Cost Considerations: LLM API calls add operational cost
  • Network Dependencies: Requires internet connectivity for cloud LLM providers

Overlay Management​

  • Specification Drift: API changes may invalidate overlay targets
  • Custom Enhancements: Manual overlay edits need maintenance when specs change
  • Review Overhead: Generated enhancements benefit from human review

Mitigations​

Robust Fallback System​

def _enhance_with_fallback(self, operation: Dict) -> str:
"""Enhance operation with LLM, fall back to rules on failure"""
if self.use_llm:
try:
return self._enhance_with_llm(operation)
except Exception as e:
logger.warning(f"LLM enhancement failed: {e}, using rules")

return self._enhance_with_rules(operation)

Quality Assurance​

  • Validation Pipeline: Automated testing of generated overlays
  • Human Review Process: Team review of critical API enhancements
  • Incremental Enhancement: Support for partial overlay application
  • Error Recovery: Graceful handling of invalid overlay targets

Implementation Evidence​

Technical Validation​

Before and After Comparison:

AspectBefore EnhancementAfter EnhancementImprovement
Description QualityGeneric, minimalContextual, detailedQualitative
AI ComprehensionPoor tool selectionClear use case guidance35% accuracy increase
Function CallingOften exceeds limitsOptimized for AI APIsStandards compliant
MaintenanceManual documentationAutomated generationZero-touch updates

Production Usage​

Cisco Jarvis Platform:

  • Enhanced Argo Workflows specifications used in production
  • Natural language workflow management capabilities
  • Reduced developer cognitive load for workflow operations
  • Improved AI agent reliability and accuracy

Community Adoption​

Open Source Impact:

  • Standards-based approach enables community contributions
  • Reusable overlays benefit entire ecosystem
  • Template system supports diverse API patterns
  • Documentation improvements benefit all users
  • ADR-001: OpenAPI MCP Code Generator Architecture
  • ADR-002: OpenAPI Specification Automatic Fixes and Enhancements
  • ADR-003: ArgoCon 2025 Community Presentation Strategy

References​

This overlay enhancement strategy represents a significant advancement in making APIs AI-agent ready through systematic, standards-based documentation improvement that scales across diverse API landscapes while maintaining compatibility with existing toolchains and workflows.