C# SDK for building AI agents with Claude that can use MCP tools. Provides email operations, Excel file manipulation, and custom tool registration via attributes.
Mixed quality across 17 tools. Email tools have detailed descriptions and clear parameters with proper types and enums where applicable. However, Excel and utility tools lack output schema documentation, and several tools have minimal descriptions. Transport mechanism is UNKNOWN, preventing reliable protocol assessment. Tool definitions are explicitly registered via [GenerateToolRegistration] and [ClaudeTool] attributes, providing compile-time validation. Most tools follow verb_noun naming (search_inbox, mark_as_read, create_workbook). Average description length is 120 chars, below the 194-char baseline for A+ tools. Parameters generally have descriptions and types, but output schemas are completely undocumented.
Add data to a specific range in an Excel workbook. Supports headers, rows, and formulas.
Add a formula to a specific cell.
Add a label to one or more emails.
Archive one or more emails (remove from inbox).
Perform basic arithmetic calculations (add, subtract, multiply, divide)
Create a chart from data in the workbook.
Create a new Excel workbook with specified sheets. Returns the file path.
Missing output schema documentation for all tools. Return types are completely undocumented, forcing LLMs to infer structure from trial-and-error or context clues.
Terse or missing descriptions for non-email tools. 'Perform basic arithmetic calculations' (40 chars) and 'Mock data for demonstration' (27 chars) violate 20-char minimum and lack actionable guidance. create_chart has NO visible description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 11 | - | v1 |
Apply formatting to a range of cells (bold, colors, alignment, number format).
Get recent emails from inbox. Returns up to 'limit' most recent non-archived emails.
Get current weather for a city (mock data for demonstration)
Mark one or more emails as read.
Mark one or more emails as unread.
Read full email content by IDs. Returns complete email details including body.
Remove a label from one or more emails.
Search emails using Gmail-like query syntax. Supported operators: - from:sender@example.com - Filter by sender - to:recipient@example.com - Filter by recipient - is:unread - Only unread emails - is:starred - Only starred emails - has:attachment - Only emails with attachments - label:category - Filter by label - newer_than:7d - Emails from last N days - Plain text - Full-text search in subject/body Examples: - "from:boss is:unread" - Unread emails from boss - "budget newer_than:30d" - Emails mentioning budget in last 30 days - "label:finance has:attachment" - Finance emails with attachments
Star one or more emails.
Remove star from one or more emails.
create_chart tool has NO description at all in provided source, scoring 0/100 on description.
No pagination support documented. Email tools (search_inbox, get_inbox) return lists but lack offset/limit pagination info or total count guidance. search_inbox limits to 20 results but doesn't explain pagination behavior.
Error handling is generic. All tools catch exceptions and return string error messages like 'Search failed: {ex.Message}'. LLM receives no guidance on retryability, recovery steps, or whether the error is transient or permanent.
No destructive operation confirmation. Tools like archive_email, mark_as_unread, and remove_label modify state without any dry-run or confirmation step, violating pattern:confirmation-request.
Parameter descriptions lack constraint details. 'Array of email IDs to read' (ids param) doesn't specify format (comma-separated? JSON array?), length limits, or what constitutes a valid ID.
Excel tools (add_data, format_range, add_formula) accept 'optional' parameters without clear defaults. startRow, startColumn, and sheetName behaviors when omitted are unspecified, risking silent failures or unintended overwrites.