Skip to content

MCP Plugin Tools

Optional plugins can contribute their own MCP tools. Plugin tools appear in tools/list only when the plugin is active and the tool service classes load successfully.

Helpdesk plugin tools

These tools are available only when the easy_helpdesk plugin is active and their service classes load successfully. The first Helpdesk MCP batch is read-only and targets support/SLA discovery.

Tool Example prompt Example params
easy8_helpdesk_projects_list List Helpdesk project settings. { "name": "easy8_helpdesk_projects_list", "arguments": { "keyword": "support", "limit": 25 } }
easy8_helpdesk_projects_get Show Helpdesk settings 12. { "name": "easy8_helpdesk_projects_get", "arguments": { "id": 12 } }
easy8_helpdesk_sla_events_list Show active SLA events for issue 123. { "name": "easy8_helpdesk_sla_events_list", "arguments": { "issue_id": 123, "state": "active", "limit": 25 } }
easy8_helpdesk_mail_templates_list List Helpdesk mail templates for escalations. { "name": "easy8_helpdesk_mail_templates_list", "arguments": { "name": "escalation", "limit": 25 } }

Attendance plugin tools

These tools are available only when the easy_attendances plugin is active and Easy Attendance is enabled. They are read-only and respect attendance permissions: users without view_easy_attendance_other_users only see their own attendance records, and approval lists require attendance approval permission.

Use cases:

  • review my attendance for a period
  • discover absence/attendance activity types
  • check who is out when the user has permission to view other users
  • review attendance requests waiting for approval
Tool Example prompt Example params
easy8_attendance_activities_list List available attendance activities. { "name": "easy8_attendance_activities_list", "arguments": { "limit": 100 } }
easy8_attendances_list Show my attendance this week. { "name": "easy8_attendances_list", "arguments": { "user_id": "me", "arrival_from": "2026-05-18", "arrival_to": "2026-05-24", "limit": 25 } }
easy8_attendances_get Show attendance record 42. { "name": "easy8_attendances_get", "arguments": { "id": 42 } }
easy8_attendances_approval_list Show attendance requests waiting for approval. { "name": "easy8_attendances_approval_list", "arguments": { "limit": 25 } }

CRM plugin tools

These tools are available only when the easy_crm plugin is active. List/detail tools are read-only and rely on Easy CRM visibility rules, including project permissions and role-level CRM case visibility. easy8_crm_cases_list returns active CRM cases by default; pass active: false only when finished or canceled cases are needed. It returns CRM cases only, not issues/tasks and not customer-account segmentation. For known opportunity IDs, easy8_crm_active_quotes_list batches active quote terms and can report boolean presence of a product code across direct and catalog/bundle product codes. Quote access follows parent CRM case visibility and does not require separate price-book viewing permission. easy8_crm_sales_activities_create is a write tool for recording confirmed customer interactions as sales activities.

Use cases:

  • review current sales pipeline and follow-ups
  • find opportunities assigned to me
  • check opportunities with a specific status or next action date
  • discover CRM case statuses before filtering or reporting
  • inspect active quote terms or check boolean product-code presence for known opportunity IDs, including IDs imported from CSV
  • record a meeting, call, or follow-up as a sales activity on a customer account or opportunity
  • replace an opportunity description after an explicit user-approved change
Tool Example prompt Example params
easy8_crm_case_statuses_list List CRM case statuses. { "name": "easy8_crm_case_statuses_list", "arguments": { "limit": 100 } }
easy8_crm_cases_list Show my active CRM opportunities. { "name": "easy8_crm_cases_list", "arguments": { "assigned_to_id": "me", "active": true, "limit": 25 } }
easy8_crm_cases_get Show CRM case 321. { "name": "easy8_crm_cases_get", "arguments": { "id": 321 } }
easy8_crm_cases_update Replace opportunity 321's description with the approved summary. { "name": "easy8_crm_cases_update", "arguments": { "id": 321, "description": "## Approved summary\n\nCustomer requested a revised proposal.", "description_format": "markdown" } }
easy8_crm_active_quotes_list Show active quote terms and whether the license product is present for these opportunities. { "name": "easy8_crm_active_quotes_list", "arguments": { "crm_case_ids": [321, 654], "product_code": "LICENSE-USER" } }
easy8_crm_sales_activities_create Record that I discussed an upsell with account 123. { "name": "easy8_crm_sales_activities_create", "arguments": { "entity_type": "EasyContact", "entity_id": 123, "description": "Discussed upsell opportunity.", "is_finished": true } }

Opportunity description updates

easy8_crm_cases_update is a write tool that replaces the entire description, rather than appending text. Call it only after the user explicitly approves the change. It accepts a positive integer id, a required string description, and optional description_format (html, markdown, or common_mark). Markdown/CommonMark is converted to HTML using the existing formatter; HTML and omitted format retain the model's HTML sanitization. Success returns the normal crm_case detail payload, including the stored description.

  • Send "description": "" to clear the field. If CRM workflow requires a description, validation fails without saving the change.
  • The case must be visible and editable by the current user. Project permissions, own-case editing rules, locked-case restrictions, workflow readonly fields, and model validations still apply. Read-only API requests are denied; hidden and missing cases both return not found.
  • A changed description is journalized with its old/new values, the current user as author, and automation_source: "MCP". CRM update notifications follow the easy_crm_case_updated setting and are delivered only for a persisted journal. If the save has no journalized changes, it creates no empty journal or update email. Existing model callbacks remain active: even with an identical description, item-based pricing (easy_crm_use_items) can change the derived price and create a journal eligible for notification.
  • If notification delivery or enqueueing fails after saving, the tool still returns success with the saved crm_case detail and an additional warning: "CRM case saved, but the update notification failed." Do not repeat the description update to retry the notification. The warning log includes only the case ID and exception class, not the exception message or description.
  • No other arguments are supported, including name, assignee, project, status, price, custom fields, notes, automation source, or lock_version. Extra arguments and invalid types/formats are rejected server-side before assignment. MCP argument logging includes only id and description_format, not description content.
  • There is no client-side version check between a previous read and this update. Read the current description before preparing a replacement. Server-side optimistic locking still detects a concurrent save during the update and returns a conflict without an automatic overwrite or retry. Read again and obtain approval for a new replacement after a conflict.

CRM account tools

These tools are available only when the easy_crm plugin and CRM account/contact functionality are active. They are read-only and rely on EasyContact visibility rules.

Account payloads expose arr (Annual Recurring Revenue) and acv (Annual Contract Value) when the backing account attributes are available. The values come directly from annual_recurring_revenue and annual_contract_value without UI rounding. This applies to account list/detail tools, issue-linked account outputs, and account sales activity reports.

Use easy8_issues_list for customer-account issue/task segmentation. When Easy CRM account tools are active, they extend easy8_issues_list with these linked-account filters:

  • account_id - linked EasyContact account ID
  • type_id - linked account contact type ID
  • account_status_id - linked account status enumeration ID
  • account_level_id - linked account level enumeration ID
  • account_industry_id - linked account industry enumeration ID
  • account_country_code - linked account contact country ISO code from contact billing info, such as DE
  • account_manager_id - linked account manager user ID, or "me"
  • customer_success_manager_id - linked customer success manager user ID, or "me"
  • accounted_by_id - linked EasyPartner/accounted-by ID
  • include_accounts - include linked customer account references in each issue payload

Use status and status_id only for issue status filtering. Use account_status_id for customer-account status filtering.

Use cases:

  • discover CRM account statuses, levels, and contact types
  • list customer accounts by structured account filters
  • inspect one customer account
  • list customer accounts linked to a known issue
  • report sales activities aggregated on customer accounts and related CRM opportunities
  • analyze sales activity data across many customer accounts in safe batches

For prompts like "analyze all customers and their sales activity data", use easy8_crm_account_sales_activity_analysis first. It returns the number of customers and tells the assistant to ask the user whether to continue in batches or narrow the filters. Use easy8_crm_account_sales_activities_list for a small filtered page, one known account, or an explicit user-approved large_query_mode: "force" call.

Tool Example prompt Example params
easy8_crm_account_enumerations_list List CRM account statuses and levels. { "name": "easy8_crm_account_enumerations_list", "arguments": {} }
easy8_crm_accounts_list List German manufacturing customer accounts. { "name": "easy8_crm_accounts_list", "arguments": { "country_code": "DE", "account_industry_id": 7, "limit": 25 } }
easy8_crm_accounts_get Show customer account 123. { "name": "easy8_crm_accounts_get", "arguments": { "id": 123 } }
easy8_crm_issue_accounts_list Show customer accounts linked to issue 456. { "name": "easy8_crm_issue_accounts_list", "arguments": { "issue_id": 456, "limit": 25 } }
easy8_crm_account_sales_activities_list Show account sales activity summary. { "name": "easy8_crm_account_sales_activities_list", "arguments": { "account_manager_id": "me", "include_user_summary": true, "limit": 25 } }
easy8_crm_account_sales_activity_analysis Analyze sales activity data across many customer accounts. { "name": "easy8_crm_account_sales_activity_analysis", "arguments": { "mode": "preview", "batch_size": 100 } }

Money plugin tools

These tools are available only when the easy_money plugin is active. They are read-only and respect Easy Money permissions. Project summaries include only financial buckets allowed by the current user's specific money permissions.

Use cases:

  • review a project's financial summary
  • list expected revenues or expected expenses for a project
  • list other revenues or other expenses for reporting
  • inspect one visible money item without mutating project budget data
Tool Example prompt Example params
easy8_money_project_summaries_list List visible project financial summaries. { "name": "easy8_money_project_summaries_list", "arguments": { "limit": 25 } }
easy8_money_project_summaries_get Show money summary for project 12. { "name": "easy8_money_project_summaries_get", "arguments": { "project_id": 12 } }
easy8_money_expected_revenues_list List expected revenues for project 12. { "name": "easy8_money_expected_revenues_list", "arguments": { "project_id": 12, "limit": 25 } }
easy8_money_expected_revenues_get Show expected revenue 80. { "name": "easy8_money_expected_revenues_get", "arguments": { "id": 80 } }
easy8_money_expected_expenses_list List expected expenses for project 12. { "name": "easy8_money_expected_expenses_list", "arguments": { "project_id": 12, "limit": 25 } }
easy8_money_expected_expenses_get Show expected expense 81. { "name": "easy8_money_expected_expenses_get", "arguments": { "id": 81 } }
easy8_money_other_revenues_list List other revenues this month. { "name": "easy8_money_other_revenues_list", "arguments": { "spent_on_from": "2026-05-01", "spent_on_to": "2026-05-31", "limit": 25 } }
easy8_money_other_revenues_get Show other revenue 82. { "name": "easy8_money_other_revenues_get", "arguments": { "id": 82 } }
easy8_money_other_expenses_list List other expenses this month. { "name": "easy8_money_other_expenses_list", "arguments": { "spent_on_from": "2026-05-01", "spent_on_to": "2026-05-31", "limit": 25 } }
easy8_money_other_expenses_get Show other expense 83. { "name": "easy8_money_other_expenses_get", "arguments": { "id": 83 } }