# MSPortal tool map

Which tool answers which question. Names are the MSPortal MCP tool names; your client may
prefix them. The exact set you see depends on the connected user's role, the scopes they
granted at consent, the tenant's enabled features, and which integrations are connected,
so treat this as a map rather than a guarantee. Always read a tool's own schema for its
parameters. `companyId` is the standard company filter.

## Orientation and scope

| Need | Tool |
| --- | --- |
| Who am I connected as, tenant, user type, company | `get_current_user` |
| Find a company, ticket, goal, planner item, or report by name | `search_portal` |
| List companies, optionally with assigned vCIO / TAM / account manager | `list_companies` |
| One company profile plus custom fields and team | `get_company` |
| Client contacts, locations, account notes | `list_company_contacts`, `list_locations`, `list_company_account_notes` |
| Portfolio analytics across clients | `get_portfolio_summary` |

## Service delivery

| Need | Tool |
| --- | --- |
| Open, aged, or recent tickets | `list_tickets` |
| One ticket with its notes | `get_ticket`, `list_ticket_notes` |
| Weekly created / closed / backlog trend and forecast | `get_ticket_trends` |
| Available statuses before changing one | `list_ticket_status_options` |
| Triage writes | `create_ticket`, `add_ticket_note`, `update_ticket_status` |
| Projects and deliverables | `list_projects`, `get_project` |
| Team activity | `get_team_activity`, `get_user_activity` |

## Fleet and lifecycle

| Need | Tool |
| --- | --- |
| Counts by OS, type, manufacturer, warranty, staleness, top companies | `device_summary` |
| Offline servers and warranties expiring in 30 days | `list_device_alerts` |
| The device list behind a number | `list_devices`, `list_device_types` |
| One device with custom fields | `get_device` |

## Security and compliance

| Need | Tool |
| --- | --- |
| Cross-provider security posture (Cork, Acronis EDR, Huntress) | `get_security_summary` |
| Vulnerabilities, EDR incidents, Huntress escalations | `list_vulnerabilities`, `list_edr_incidents`, `list_huntress_items` |
| Microsoft Secure Score, history, what to fix | `get_secure_score_summary`, `get_secure_score_trend`, `list_secure_score_recommendations` |
| Security awareness training posture | `get_security_awareness_summary` |
| Compliance totals and scores by company | `get_compliance_company_summary` |
| Individual checks, definitions, groups, runs | `list_compliance_checks`, `get_compliance_check`, `list_compliance_check_definitions`, `list_compliance_groups`, `list_compliance_runs` |
| Risk register and gaps | `list_compliance_risks`, `list_compliance_risk_gaps`, `get_compliance_risk` |
| Assess or update compliance | `create_compliance_run`, `update_compliance_check`, `update_compliance_checks`, `update_compliance_status` |

## Backup and Microsoft 365

| Need | Tool |
| --- | --- |
| Unified backup protection across Cove, Acronis, NinjaOne, Kaseya | `get_backup_summary` |
| Protected devices and failures | `list_backup_devices`, `list_backup_alerts` |
| SaaS protection coverage | `list_saas_protection_customers`, `list_saas_protection_seats` |
| Licenses, seats, renewals | `get_m365_license_summary`, `list_m365_licenses` |
| M365 users and domains | `list_m365_users`, `list_m365_domains` |

## Commercial

| Need | Tool |
| --- | --- |
| Monthly revenue by classification, provider, or line type | `get_revenue_summary` |
| Billed, outstanding, overdue | `get_invoice_summary`, `list_invoices`, `get_invoice` |
| Quotes in flight | `list_quotes`, `get_quote` |
| Budgets and their line items | `list_budgets`, `get_budget`, `list_budget_categories`, `list_budget_products` |
| Budget writes | `create_budget`, `add_budget_item`, `edit_budget` |

## Client relationship

| Need | Tool |
| --- | --- |
| Health scores, risk levels, history | `get_client_health_summary`, `list_client_health`, `get_client_health_history` |
| Satisfaction | `get_nps_summary`, `get_csat_summary` |
| Technology standards and who is off-standard | `list_standards`, `get_company_standards`, `get_standards_compliance`, `get_standard_adoption` |
| Surveys | `list_surveys`, `get_survey_stats`, `list_survey_responses`, `create_survey`, `send_survey_invites` |
| Training | `list_training_courses`, `assign_training`, `get_training_analytics`, `list_training_enrollments` |

## Planning and delivery of the plan

| Need | Tool |
| --- | --- |
| What is already planned | `list_planner_items`, `list_planner_types`, `get_planner_item` |
| Create and maintain plan items | `create_planner_item`, `edit_planner_item`, `archive_planner_item` |
| Tie a plan item to its evidence | `link_planner_item_entities`, `list_planner_item_links` |
| Goals | `list_goals`, `get_goal`, `create_goal`, `edit_goal`, `list_goal_options` |
| Reports | `list_report_types`, `list_report_templates`, `list_reports`, `create_report`, `edit_report`, `publish_report` |
| Report scheduling | `list_report_schedules`, `get_report_schedule`, `run_report_schedule` |
| Meetings and agendas | `list_meeting_types`, `list_meetings`, `create_meeting`, `update_meeting`, `add_meeting_agenda_items`, `list_meeting_agenda` |
| Action items and attendees | `add_meeting_action_item`, `update_meeting_action_item`, `list_meeting_action_items`, `add_meeting_participants` |
| Documentation | `list_documentation_documents`, `get_documentation_document`, `create_documentation_page`, `update_documentation_page` |
| Client onboarding | `list_onboarding_portals`, `get_onboarding_portal`, `create_onboarding_portal`, `update_onboarding_portal_task` |

## Operations

| Need | Tool |
| --- | --- |
| Integration health, pause or resume a sync | `list_integrations`, `get_integration`, `pause_integration`, `resume_integration` |
| Automation rules | `list_automation_rules`, `get_automation_rule`, `create_automation_rule`, `edit_automation_rule`, `toggle_automation_rule` |
| Notifications and broadcasts | `list_notifications`, `mark_notification_read`, `list_broadcasts`, `send_broadcast` |
| Users | `list_users`, `get_user`, `invite_user`, `set_user_status` |

## When a tool is not there

A missing tool means one of four things, in rough order of likelihood:

1. The user did not grant that scope when they connected the client. They can reconnect
   and approve the area they need.
2. Their MSPortal role does not include the permission.
3. The feature is not enabled for the tenant, or no integration supplies that data (there
   is no backup summary without a backup integration).
4. They are a company user, so only their own company's data exists for them.

Say which of those you suspect and what the user can do about it. Do not attempt a
workaround through an unrelated tool, and never present an assumption as portal data.

## Practical limits

- Some MCP clients cap how many tools they will load (MSPortal warns around 128). If the
  user's client is dropping tools, tell them to connect with fewer scopes and grant only
  the areas they use.
- List tools are paginated with capped page sizes. Use summary tools for totals.
- Every mutation tool stages first and returns a `confirmationId` valid for about ten
  minutes. See the write protocol in SKILL.md.
- Tool calls are audited against the connected user's account. There is no anonymous or
  elevated path, and asking for one is not a workaround worth attempting.
