# =============================================================================
# Excel Table Test - excel_table Tool
# =============================================================================
#
# Tests: excel_table tool for structured data operations
#
# Tools Covered:
# - excel_table with actions:
# - create: Create table from range
# - list: List all tables
# - get-data: Get table data
# - delete: Delete table
#
# Key Validation:
# - LLM creates tables from existing data ranges
# - LLM understands table naming conventions
# - LLM uses table operations for structured data
#
# Prerequisites:
# - Windows 10/11 with Excel installed
# - Excel MCP Server
# - Environment: AZURE_OPENAI_ENDPOINT
#
# =============================================================================
criteria:
success_rate: 1 # 100% required
providers:
- name: azure-openai-gpt41
type: AZURE
auth_type: entra_id
model: gpt-4.1
baseUrl: "{{AZURE_OPENAI_ENDPOINT}}"
version: 2025-01-01-preview
- name: azure-openai-gpt5-chat
type: AZURE
auth_type: entra_id # Uses DefaultAzureCredential - no API key needed
model: gpt-5.2-chat
baseUrl: "{{AZURE_OPENAI_ENDPOINT}}"
version: 2025-01-01-preview
# Provider for clarification detection judge (using gpt-4.1 for better accuracy)
- name: azure-openai-judge
type: AZURE
auth_type: entra_id
model: gpt-4.1
baseUrl: "{{AZURE_OPENAI_ENDPOINT}}"
version: 2025-01-01-preview
servers:
- name: excel-mcp
type: stdio
command: "{{SERVER_COMMAND}}"
server_delay: 30s
agents:
- name: gpt41-agent
servers:
- name: excel-mcp
provider: azure-openai-gpt41
clarification_detection:
enabled: true
judge_provider: azure-openai-judge
- name: gpt5-chat-agent
servers:
- name: excel-mcp
provider: azure-openai-gpt5-chat
clarification_detection:
enabled: true
judge_provider: azure-openai-judge
settings:
verbose: true
max_iterations: 15
sessions:
# ==========================================================================
# Session 1: Table Creation and Query (combined)
# ==========================================================================
- name: "Table Creation and Query"
tests:
- name: "Create table and query data"
prompt: |
1. Create a new empty Excel file at {{TEMP_DIR}}/llm-test-table-{{randomValue type='UUID'}}.xlsx and open it
2. On the Sheet1 worksheet, put these column headers in A1:D1: Product, Quantity, Price, Total
3. On Sheet1, add data in A2:D3:
Row 2: Widget, 10, 5.99, 59.90
Row 3: Gadget, 5, 12.99, 64.95
4. Create an Excel table from A1:D3 on Sheet1 and name it "SalesData"
5. List all tables to confirm SalesData exists
6. Get the data from the SalesData table
7. Close the file without saving
assertions:
- type: no_hallucinated_tools
- type: no_rate_limit_errors
- type: no_clarification_questions
- type: tool_called
tool: excel_file
- type: tool_called
tool: excel_range
- type: tool_called
tool: excel_table
- type: output_regex
pattern: "(?i)(widget|gadget|salesdata)"
# ==========================================================================
# Session 2: Table Lifecycle (combined)
# ==========================================================================
- name: "Table Lifecycle"
tests:
- name: "Create and delete table"
prompt: |
1. Create a new empty Excel file at {{TEMP_DIR}}/llm-test-table-lifecycle-{{randomValue type='UUID'}}.xlsx and open it
2. Put these column headers in A1:C1: ID, Name, Status
3. Add data in A2:C3:
Row 2: 1, Task One, Active
Row 3: 2, Task Two, Complete
4. Create a table from A1:C3 called "TaskList"
5. List all tables to verify TaskList was created
6. Delete the TaskList table
7. Close the file without saving
assertions:
- type: no_hallucinated_tools
- type: no_rate_limit_errors
- type: no_clarification_questions
- type: tool_called
tool: excel_file
- type: tool_called
tool: excel_table
- type: output_regex
pattern: "(?i)(tasklist|deleted|success)"