Every superhero needs an Alfred. Yours logs the Engagements. MCP server for Dynamics 365 CRM engagement and opportunity management with role-based tools for Sales Consultants and Sales teams.
Alfred MCP has 10 tools with mixed quality. Naming is strong (verb-first, clear intent). Descriptions are verbose and contextual but often exceed 1024 chars, wasting tokens. Critical gap: NO input schemas visible in source code for ANY tool, all schema scores are 0. Parameter descriptions exist in text but lack JSON Schema type definitions. Error handling is implicit (descriptions mention 'call this if X fails') but not formalized. Composition is reasonable (single responsibility per tool), but lack of structured schemas prevents confident LLM parameter binding.
Close the Alfred browser window. This only closes the Alfred Chrome instance (with the debug profile) — your regular Chrome is untouched. Use this when: - The user says "close Alfred", "exit Alfred", "stop Alfred", or "shut down Alfred" - You need to free up resources - The session is done After exiting, all cached auth tokens are cleared. The user will need to relaunch Alfred from the Desktop to use CRM tools again.
Get full account details from Dynamics 365 by account ID.
List open opportunities from Dynamics 365, optionally filtered by account name or minimum NNACV. NOTE: $0 NNACV opportunities are excluded by default (noise). If the user explicitly asks for $0 deals, set include_zero_value=true. Negative NNACV deals are always included. DISPLAY: Always show the nnacv field as the primary deal value (labelled "NNACV"). Never show totalamount as the deal size — it is ACV (full contract value including renewals) and inflates pipeline figures. If the user asks about ACV specifically, show totalamount labelled as "ACV" alongside NNACV. CROSS-REFERENCE: After presenting pipeline results, compare with the Data_Analytics_Connection account_insights tool. Note: Dynamics data is live CRM state; Data Analytics is data lake (may lag by up to 24h). Flag any discrepancies between the two sources.
List all engagements linked to a specific opportunity. If account_insights data has not yet been fetched for this account, also call account_insights with: "Show current subscriptions and license utilization for [accountName]" This gives context on what the customer owns — useful when reviewing engagement history.
NO input schemas visible in source code. All 10 tools lack JSON Schema definitions for parameters. Parameter constraints (type, enum, min/max) are documented only in prose descriptions, not machine-parseable schemas. LLMs cannot validate inputs or discover valid options programmatically.
Descriptions exceed 1024 chars (open_chrome_debug ~450 chars, get_my_opportunities ~600 chars, list_opportunities ~700 chars). Verbose prose with embedded instructions ('IMPORTANT:', 'DISPLAY:', 'CROSS-REFERENCE:') wastes tokens and buries key details. Should be 50-200 chars with constraints in schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
List all engagements linked to a Dynamics account, regardless of whether they have an associated opportunity. Use this when you need a complete picture of engagement activity on an account — some SCs log POVs and other milestones directly at the account level rather than on a specific opportunity, so those records won't appear in list_engagements. Optionally filter by engagement type (e.g. type="POV") to keep the response lean.
List open opportunities from Dynamics 365. Defaults to the current user's pipeline only (SC or territory). Only set my_opportunities_only=false if the user explicitly asks for all opportunities, a colleague's pipeline, a region, or a manager view. IMPORTANT: Before calling this tool, always ask the user these two questions if they haven't specified: 1. "100K+ NNACV only, or all sizes?" (default: 100K+ only) 2. "All your accounts, or a specific account?" (default: all — if they name one, pass it as search) Ask both together in one message. Only call this tool once you have their answers. NOTE: $0 NNACV opportunities are excluded by default (noise). If the user explicitly asks for $0 deals, set include_zero_value=true. DISPLAY: Always show the nnacv field as the primary deal value (labelled "NNACV"). Never show totalamount as the deal size — it is ACV (full contract value including renewals) and inflates pipeline figures. If the user asks about ACV specifically, show totalamount labelled as "ACV" alongside NNACV. CROSS-REFERENCE: After presenting pipeline results, compare with the Data_Analytics_Connection account_insights tool. Note: Dynamics data is live CRM state; Data Analytics is data lake (may lag by up to 24h). Flag any discrepancies between the two sources.
Launch Alfred (browser) if it's not already running. Opens the Dynamics tab automatically. IMPORTANT: Call this tool AUTOMATICALLY — without asking the user — whenever any tool fails with an error mentioning: - "Alfred not running" - "Chrome debug port not available" - "No page targets" - "CDP" or "debug port" - "stale" or "session" - "401" or "unauthorized" - "not logged in" or "not logged into" This tool also clears all cached auth tokens, so call it proactively if you suspect a stale session. IMPORTANT AFTER CALLING THIS TOOL: - Tell the user: "Alfred is open — please log into Dynamics, then let me know when you're ready." - STOP and wait for the user to confirm they are logged in before retrying any other tool. - Do NOT automatically retry the original tool — the user must log in first.
Restart the Alfred browser — closes and relaunches it with a fresh session. Use this when: - Auth tokens are stale or expired (401/403 errors) - The user says "restart Alfred" or "refresh Alfred" - Multiple tools are failing with connection errors - After "exit Alfred" if the user wants to start fresh This only restarts the Alfred Chrome instance — your regular Chrome is untouched. The Alfred icon is preserved on relaunch.
Search Dynamics 365 accounts by name — use this to find the account ID before creating an opportunity.
Search Dynamics 365 system users by name — use this to find the GUID for a Sales Rep or SC when assigning them to an opportunity.
Parameter descriptions lack type information. E.g., 'opportunity_id' described as 'Dynamics opportunity GUID' but no JSON Schema type:string. 'min_nnacv' described as 'Minimum NNACV in USD' but no type:number, minimum:0. LLMs must infer types from prose.
Error handling is implicit and procedural. Descriptions say 'call this tool if X fails' (e.g., open_chrome_debug: 'call this AUTOMATICALLY if any tool fails with error mentioning Alfred not running'). No formalized error classification (retryable, user-fixable, fatal) or recovery guidance in tool output.
Output schemas not documented. Tools like get_my_opportunities and list_opportunities return complex nested structures (nnacv, totalamount, ACV fields) but no schema definition visible. LLMs cannot plan downstream tool calls without knowing what fields are returned.