"""
Example of using the Bigeye MCP server in a Claude client.
This script demonstrates how to use the Bigeye MCP server with Claude.
"""
print("# Bigeye API MCP Server Example")
print()
print("The following examples show how to use the Bigeye MCP server with Claude.")
print()
print("## Setup Connection")
print("```python")
print("# Check the current configuration")
print("config = await read_resource(\"bigeye://config\")")
print("print(f\"API URL: {config['api_url']}\")")
print("print(f\"API Key configured: {config['has_api_key']}\")")
print()
print("# Check health")
print("health = await check_health()")
print("print(f\"Health status: {health['status']}\")")
print("```")
print()
print("## Working with Issues")
print("```python")
print("# Get all issues from the configured workspace")
print("issues = await read_resource(\"bigeye://issues\")")
print("print(f\"Found {len(issues.get('issues', []))} issues\")")
print()
print("# Analyze issues")
print("if 'issues' in issues and issues['issues']:")
print(" # Print information about the first issue")
print(" first_issue = issues['issues'][0]")
print(" print(f\"Issue ID: {first_issue.get('id')}\")")
print(" print(f\"Status: {first_issue.get('currentStatus')}\")")
print(" print(f\"Created: {first_issue.get('createdAt')}\")")
print()
print("# Filter issues by status")
print("# Valid statuses: ISSUE_STATUS_NEW, ISSUE_STATUS_ACKNOWLEDGED, ISSUE_STATUS_CLOSED,")
print("# ISSUE_STATUS_MONITORING, ISSUE_STATUS_MERGED")
print()
print("# Get only new issues")
print("new_issues = await get_issues(statuses=[\"ISSUE_STATUS_NEW\"])")
print("print(f\"Found {len(new_issues.get('issues', []))} new issues\")")
print()
print("# Get multiple statuses (open issues)")
print("open_issues = await get_issues(")
print(" statuses=[\"ISSUE_STATUS_NEW\", \"ISSUE_STATUS_ACKNOWLEDGED\"]")
print(")")
print("print(f\"Found {len(open_issues.get('issues', []))} open issues\")")
print()
print("# Filter by schema names")
print("schema_issues = await get_issues(")
print(" schema_names=[\"SALES\", \"MARKETING\"]")
print(")")
print("print(f\"Found {len(schema_issues.get('issues', []))} issues in the SALES and MARKETING schemas\")")
print()
print("# Combine filtering by status and schema")
print("filtered_issues = await get_issues(")
print(" statuses=[\"ISSUE_STATUS_NEW\"],")
print(" schema_names=[\"SALES\"]")
print(")")
print("print(f\"Found {len(filtered_issues.get('issues', []))} new issues in the SALES schema\")")
print()
print("# Custom page size example (optional parameter)")
print("large_page = await get_issues(page_size=50)")
print("print(f\"Found {len(large_page.get('issues', []))} issues with custom page size\")")
print()
print("# Default API page size (omitting the page_size parameter)")
print("default_page = await get_issues()")
print("print(f\"Found {len(default_page.get('issues', []))} issues with default API page size\")")
print()
print("# Pagination example")
print("if \"pageCursor\" in issues:")
print(" next_page = await get_issues(page_cursor=issues[\"pageCursor\"])")
print(" print(f\"Found {len(next_page.get('issues', []))} issues on the next page\")")
print("```")
print()
print("## Merging Issues")
print("```python")
print("# First, find issues to merge (e.g., related issues in the same schema)")
print("schema_issues = await get_issues(")
print(" schema_names=[\"ORDERS\"],")
print(" statuses=[\"ISSUE_STATUS_NEW\"]")
print(")")
print()
print("# Extract issue IDs from the response")
print("issue_ids = []")
print("if \"issues\" in schema_issues and len(schema_issues[\"issues\"]) >= 2:")
print(" # Take the first two issues as an example")
print(" issue_ids = [issue[\"id\"] for issue in schema_issues[\"issues\"][:2]]")
print(" print(f\"Found {len(issue_ids)} issues to merge: {issue_ids}\")")
print(" ")
print(" # Merge the issues into a single incident")
print(" merge_result = await merge_issues(")
print(" issue_ids=issue_ids")
print(" )")
print(" ")
print(" # Check if the merge was successful")
print(" if \"incident\" in merge_result:")
print(" incident = merge_result[\"incident\"]")
print(" print(f\"Successfully created incident with ID: {incident['id']}\")")
print(" print(f\"Incident status: {incident['currentStatus']}\")")
print(" ")
print(" # Display information about the merged issues")
print(" if \"children\" in incident:")
print(" print(f\"Incident contains {len(incident['children'])} merged issues\")")
print(" else:")
print(" print(f\"Error merging issues: {merge_result.get('message')}\")")
print("else:")
print(" print(\"Need at least 2 issues in the same schema to merge\")")
print("```")
print()
print("## Working with Issue Resolution Steps")
print("```python")
print("# First, get an issue to work with (we'll use the first issue in the workspace)")
print("issues = await read_resource(\"bigeye://issues\")")
print("if \"issues\" in issues and issues[\"issues\"]:")
print(" issue = issues[\"issues\"][0]")
print(" issue_id = issue[\"id\"]")
print(" print(f\"Working with issue ID: {issue_id}\")")
print(" ")
print(" # Fetch existing resolution steps")
print(" resolution_steps = await get_issue_resolution_steps(issue_id=issue_id)")
print(" ")
print(" if \"steps\" in resolution_steps and resolution_steps[\"steps\"]:")
print(" steps = resolution_steps[\"steps\"]")
print(" print(f\"Found {len(steps)} existing resolution steps:\")")
print(" ")
print(" # Display the steps")
print(" for i, step in enumerate(steps):")
print(" print(f\"Step {i+1}: {step.get('description')}\")")
print(" print(f\" Status: {step.get('status')}\")")
print(" ")
print(" # Update the status of the first step")
print(" if steps:")
print(" first_step = steps[0]")
print(" step_id = first_step[\"id\"]")
print(" ")
print(" # Mark the step as completed")
print(" updated_step = await update_issue_resolution_step(")
print(" step_id=step_id,")
print(" issue_id=issue_id,")
print(" description=first_step[\"description\"], # Keep the same description")
print(" status=\"STEP_STATUS_COMPLETED\"")
print(" )")
print(" ")
print(" print(f\"Updated step status to: {updated_step['status']}\")")
print(" else:")
print(" print(\"No resolution steps found, generating some...\")")
print(" ")
print(" # Generate AI-powered resolution steps")
print(" generated_steps = await generate_issue_resolution_steps(issue_id=issue_id)")
print(" ")
print(" if \"steps\" in generated_steps and generated_steps[\"steps\"]:")
print(" steps = generated_steps[\"steps\"]")
print(" print(f\"Generated {len(steps)} resolution steps:\")")
print(" ")
print(" # Display the generated steps")
print(" for i, step in enumerate(steps):")
print(" print(f\"Step {i+1}: {step.get('description')}\")")
print(" else:")
print(" print(\"Failed to generate resolution steps\")")
print(" ")
print(" # Get additional resolution info")
print(" print(\"\\nFetching additional resolution information...\")")
print(" info = await get_issue_resolution_info(issue_id=issue_id)")
print(" print(f\"Resolution info: {info}\")")
print("else:")
print(" print(\"No issues found in the workspace\")")
print("```")