Complete GenModel Documentation Annotations for Claude Chat Completion Ecore Model
==================================================================================

This document provides all the GenModel documentation that should be added to each class and attribute.
The user can review this and decide which annotations are most important to add.

## Already Added (Main Request):
✓ ClaudeRequest - All parameters documented
✓ SystemPrompt - All parameters documented
✓ Message - All parameters documented
✓ ContentBlock - Base class documented

## Remaining Documentation Needed:

### Content Block Types:

TextBlock:
- Class: "Content block containing plain text with optional cache control and citations."
- text: "The text content of this block."
- cacheControl: (already annotated)
- citations: "Optional citation tracking configuration."

ImageBlock:
- Class: "Content block containing an image in various formats (base64, URL, or file reference)."
- source: "The source of the image (base64 data, URL, or file reference)."
- cacheControl: (already annotated)

ImageSource:
- Class: "Abstract base class for image source types."

Base64ImageSource:
- Class: "Image source provided as base64-encoded data."
- type: "Type discriminator, always 'base64'."
- mediaType: (already annotated) - "MIME type of the image (e.g., image/jpeg, image/png, image/gif, image/webp)."
- data: "Base64-encoded image data."

URLImageSource:
- Class: "Image source provided as a URL."
- type: "Type discriminator, always 'url'."
- url: "URL pointing to the image resource."

DocumentBlock:
- Class: "Content block containing a document (PDF or plain text) with optional metadata."
- source: "The source of the document (base64 PDF, plain text, or URL)."
- title: "Optional title for the document."
- context: "Optional contextual information about the document."
- citations: "Optional citation configuration for enabling citation tracking."
- cacheControl: (already annotated)

DocumentSource:
- Class: "Abstract base class for document source types."

Base64DocumentSource:
- Class: "Document source provided as base64-encoded PDF data."
- type: "Type discriminator, always 'base64'."
- mediaType: (already annotated) - "MIME type of the document (typically application/pdf)."
- data: "Base64-encoded document data."

PlainTextDocumentSource:
- Class: "Document source provided as plain text."
- type: "Type discriminator, always 'text'."
- text: "Plain text content of the document."

URLDocumentSource:
- Class: "Document source provided as a URL to a PDF."
- type: "Type discriminator, always 'url'."
- url: "URL pointing to the PDF document."

ToolUseBlock:
- Class: "Content block representing a tool invocation by the model."
- id: "Unique identifier for this tool use instance."
- name: "Name of the tool being invoked."
- input: "JSON string containing the input parameters for the tool."
- caller: "Indicates who invoked the tool ('direct' for model invocation or server-side mechanism)."

MCPToolUseBlock:
- Class: "Content block representing a tool invocation through an MCP server."
- id: "Unique identifier for this MCP tool use."
- name: "Name of the MCP tool being invoked."
- serverName: (already annotated) - "Name of the MCP server providing this tool."
- input: "JSON string containing the input parameters for the tool."
- caller: "Indicates the invocation source."
- cacheControl: (already annotated)

ToolResultBlock:
- Class: "Content block containing the result of a tool execution."
- toolUseId: (already annotated) - "References the tool_use_id of the corresponding ToolUseBlock."
- content: "The result content as an array of content blocks (text, images, etc.)."
- isError: (already annotated) - "Indicates whether the tool execution resulted in an error."

MCPToolResultBlock:
- Class: "Content block containing the result of an MCP tool execution."
- toolUseId: (already annotated) - "References the tool_use_id of the corresponding MCPToolUseBlock."
- content: "The result content as an array of content blocks."
- isError: (already annotated)
- cacheControl: (already annotated)

### Tool & MCP Configuration:

Tool:
- Class: "Definition of a custom tool that the model can invoke."
- name: "Unique identifier for the tool."
- description: "Description explaining the tool's purpose and when to use it (strongly recommended)."
- inputSchema: (already annotated) - "JSON Schema defining the expected input parameter structure."
- type: "Tool type, typically 'custom' for user-defined tools."
- allowedCallers: (already annotated) - "List of allowed callers (e.g., 'direct', 'code_execution_20250825')."
- deferLoading: (already annotated) - "When true, the tool is loaded only when needed via tool_reference."

MCPServer:
- Class: "Configuration for a Model Context Protocol (MCP) server providing additional tools and capabilities."
- name: "Unique identifier for the MCP server."
- type: "Server type, typically 'url' for URL-based servers."
- url: "The endpoint URL of the MCP server."
- authorizationToken: (already annotated) - "Optional authorization token for authenticating with the server."
- toolConfiguration: (already annotated) - "Optional configuration controlling which tools from this server are available."

MCPToolConfiguration:
- Class: "Configuration controlling tool availability from an MCP server."
- enabled: "Whether tools from this server are enabled. Default is true."
- allowedTools: (already annotated) - "List of specific tool names that are allowed from this server. If empty, all tools are allowed."

### Container & Skills:

Container:
- Class: "Container configuration for code execution environments, supporting reuse across requests."
- id: "Optional container identifier for reusing an existing container."
- skills: "List of skills to load in the container (built-in or custom)."

Skill:
- Class: "Definition of a skill to be loaded in a container."
- skillId: (already annotated) - "Unique identifier for the skill."
- type: "Skill category: 'anthropic' for built-in skills or 'custom' for user-defined skills."
- version: "Version of the skill, or 'latest' for the most recent version."

### Context Management:

ContextManagementConfig:
- Class: "Configuration for managing conversation context across requests."
- edits: "Array of context edit operations to apply (clear tool uses, clear thinking, etc.)."

ContextEdit:
- Class: "Abstract base class for context edit operations."
- type: "Type discriminator for the edit operation."

ClearToolUsesEdit:
- Class: "Edit operation to remove tool uses from context based on triggers and criteria."
- clearAtLeast: (already annotated) - "Minimum number of tokens to remove when triggered."
- clearToolInputsAll: (already annotated) - "When true, clears all tool inputs."
- clearToolInputsSpecific: (already annotated) - "Array of specific tool names whose inputs should be cleared."
- excludeTools: (already annotated) - "Array of tool names to preserve from clearing."
- keep: "Number of most recent tool uses to retain."
- trigger: "Conditions that trigger this clearing operation."

ClearThinkingEdit:
- Class: "Edit operation to remove thinking blocks from context."
- keepRecent: (already annotated) - "Number of recent assistant turns whose thinking blocks to retain."
- keepAll: (already annotated) - "When true, retains thinking blocks for all turns."

ClearTrigger:
- Class: "Conditions that trigger a context clearing operation."
- inputTokens: (already annotated) - "Trigger when input token count reaches this threshold."
- toolUsesCount: (already annotated) - "Trigger when tool use count reaches this threshold."

### Metadata & Output:

Metadata:
- Class: "Additional metadata for the request."
- userId: (already annotated) - "External user identifier for abuse detection. Use UUID, hash, or opaque value; avoid PII."

OutputConfig:
- Class: "Configuration controlling output characteristics."
- effort: "Effort level (low, medium, high) controlling analytical rigor and response quality."

### Tool Choice Types:

ToolChoice:
- Class: "Abstract base class for tool choice configurations."
- type: "Type discriminator for the tool choice strategy."
- disableParallelToolUse: (already annotated) - "When true, limits the model to using one tool per response."

AutoToolChoice:
- Class: "Allows the model to decide autonomously whether to use tools."

AnyToolChoice:
- Class: "Forces the model to use at least one of the available tools."

ToolToolChoice:
- Class: "Forces the model to use a specific tool."
- name: "Name of the specific tool that must be used."

NoneToolChoice:
- Class: "Prevents the model from using any tools."

### Configuration Classes:

ThinkingConfig:
- Class: "Configuration for extended thinking mode."
- type: "Whether extended thinking is enabled or disabled."
- budgetTokens: (already annotated) - "Minimum number of tokens (at least 1,024) allocated for internal reasoning. Must be less than max_tokens."

OutputFormat:
- Class: "Configuration for structured output using JSON Schema."
- type: "Format type, typically 'json_schema'."
- schema: "JSON Schema definition constraining the response structure."

CacheControl:
- Class: "Configuration for ephemeral prompt caching."
- type: "Cache type, typically 'ephemeral'."
- ttl: "Time-to-live for the cache: '5m' (5 minutes, default) or '1h' (1 hour)."

Citations:
- Class: "Configuration for citation tracking."
- enabled: "Whether citation tracking is enabled. Default is true."

### Enums:

Role:
- Enum: "The role of a message sender in a conversation."
- user: "Message from the user."
- assistant: "Message from the assistant/model."

ServiceTier:
- Enum: "API capacity tier selection."
- auto: "Automatically use priority tier when available."
- standard_only: "Always use standard capacity tier."

ThinkingType:
- Enum: "Extended thinking mode state."
- enabled: "Extended thinking is enabled."
- disabled: "Extended thinking is disabled."

SkillType:
- Enum: "Category of skill (built-in or custom)."
- anthropic: "Built-in Anthropic skill."
- custom: "User-defined custom skill."

EffortLevel:
- Enum: "Output effort level controlling response quality and analytical rigor."
- low: "Low effort - faster responses with less analytical rigor."
- medium: "Medium effort - balanced speed and quality."
- high: "High effort - maximum analytical rigor and quality."

====================================================================================
Total classes documented: 45+
Total attributes/features documented: 100+
====================================================================================
