HaloPSA Tools
halo_ · 594 tools · Free 359 · Pro 235
OAuth2 client-credentials (cached tokens); page-size cap 200; raw JSON passthrough.
Tickets & Actions
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_add_action |
Free | Write | [HaloPSA] Add an action (note / email / reply / internal note / time entry / status change) to an existing ticket. REQUIRED: ticketId, note, hiddenFromUser (true = agent-only/private; false = visible to end-user/customer), AND an outcome. The outcome (the action TYPE) is mandatory — supply outcomeId (preferred — enumerate with halo_list_outcomes) OR the outcome name string (e.g. "Private Note", "Public Note", "Email", "Time Entry"). Halo rejects an action with no outcome ("An Outcome must be selected"). For common cases prefer the purpose-built tools, which set the right outcome for you: halo_add_internal_note (private note), halo_send_email_reply (email), halo_log_time (time entry), halo_change_ticket_status_with_note (status change). Set sendEmail=true to dispatch an outbound email; both emailTo AND emailSubject are then required (Halo will not synthesise a safe subject). Set timeTaken to log work hours. Set newStatus/newAgent/newTeam to mutate the ticket as part of this action. Use extraFieldsJson for any Halo Action field not exposed as a named parameter (an outcome supplied there, e.g. {"outcome_id":5}, also satisfies the requirement). |
halo_add_action_reaction |
Pro | Write | [HaloPSA] Add an emoji reaction to a ticket action. Wraps POST /api/Actions/reaction. Useful for AI agents that want to acknowledge customer messages without posting a full reply. Halo's ActionReaction schema keys the reaction by (ticket_id, action_number) — NOT the global action id. DISCOVERY LIMITATION: Halo's Actions list endpoints (used by halo_list_ticket_actions / halo_list_actions) do NOT expose `action_number` in their response schema, so the caller must already know the per-ticket sequence number — typically from a Halo webhook payload, a previously-captured ticket UI link, or out-of-band knowledge. The 200 OK response from this endpoint has no body; the tool returns {"success":true} on success. |
halo_add_internal_note |
Free | Write | [HaloPSA] Add a private/internal note to a ticket — hidden from the end user/customer. Sugar over halo_add_action with hiddenfromuser=true and outcome=Private Note. Use halo_add_action for fully-custom action types. |
halo_change_ticket_status_with_note |
Free | Write | [HaloPSA] Change a ticket's status and record an audit-trail note in one call. Sugar over halo_add_action with new_status + note + outcome=Status Change. Use halo_update_ticket for status-only changes without an audit note. |
halo_create_draft |
Pro | Write | [HaloPSA] Create a draft ticket or action. Drafts are saved but not yet submitted or visible to end users. Use this to prepare ticket content before finalising. Provide draft details as a JSON object. Returns the created draft with its assigned ID. |
halo_create_ticket |
Free | Write | [HaloPSA] Create a new helpdesk ticket. Requires at minimum summary, details, and clientId (use halo_list_clients). Returns the created ticket with its assigned ID. WORKFLOW-BACKED TYPES: for a ticket type backed by a workflow (e.g. a Change Request), pass ticketTypeId TOGETHER with the type's workflow_id (via extraFieldsJson) and any mandatory customFieldsJson in the SAME call — Halo rejects the create if the type's required fields are missing. TARGET DATE: set the type's "Target Date & Time" via targetDate (+ targetDateTimezone); that field (FOppTargetDate) does NOT bind through customfields. `details` is stored as HTML; any <![CDATA[...]]> wrapper is unwrapped automatically. |
halo_delete_action |
Pro | Destructive | [HaloPSA] Delete a ticket action (note, email, or time entry). This permanently removes the action from the ticket. Use with caution — this cannot be undone. Requires BOTH the ticket ID and action ID — use halo_list_actions to find IDs and verify the action with halo_get_action before deleting. |
halo_get_action |
Free | Read-only | [HaloPSA] Retrieve full details for a single action (note, email, or time entry). Requires BOTH the ticket ID and action ID — use halo_list_actions or halo_list_ticket_actions to find valid IDs for both. |
halo_get_ticket |
Free | Read-only | [HaloPSA] Retrieve a single ticket by numeric ID. Returns full ticket details including summary, status, priority, assigned agent, client, and action history. Requires a valid ticket ID — use halo_search_tickets or halo_list_tickets to find IDs. |
halo_list_actions |
Free | Read-only | [HaloPSA] List ticket actions (notes, emails, time entries) with optional filters. Returns action summaries including ID, note content, agent, and timestamps. Use this for escalation analysis, audit trails, or reviewing ticket activity across multiple tickets. NOTE: Halo's /api/Actions endpoint does NOT support page-based pagination — only a max-count limit. To page across large result sets, narrow with date ranges or filters instead. |
halo_list_ticket_actions |
Free | Read-only | [HaloPSA] Fetch all actions for a single ticket in one call. Faster than halo_list_actions when you already know the ticket ID and want the full activity history. Use halo_list_actions for date-range or cross-ticket queries. |
halo_list_ticket_types |
Free | Read-only | [HaloPSA] List all available ticket types with ticket counts. Returns type IDs and names needed for creating tickets or filtering. Use this to discover valid ticket type IDs before calling halo_create_ticket. |
halo_list_tickets |
Free | Read-only | [HaloPSA] List tickets with optional filters. Returns paginated ticket summaries including ID, summary, status, priority, client, and assigned agent. Use this to browse tickets or narrow down by status, client, agent, or priority before fetching full details with halo_get_ticket. |
halo_log_time |
Free | Write | [HaloPSA] Log work time on a ticket. Sugar over halo_add_action with outcome=Time Entry (the canonical Halo default outcome name for time logs). Time is logged in hours (decimal, e.g. 1.5 = 1h30m). Set chargeable=false for non-billable work. Time entries are private by default. |
halo_review_action |
Pro | Write | [HaloPSA] Manager approval/rejection of a ticket action (typically a time entry). Wraps POST /api/Actions/Review which takes an Actions[] body. Sets `actreviewed=true` and maps `approved` to `timesheet_approval_status` (1=approved, 2=rejected). Use `timesheetApprovalStatusOverride` if your tenant uses different status integer values. Relevant for MSPs using Halo's timesheet approval workflow. |
halo_search_tickets |
Free | Read-only | [HaloPSA] Full-text search across ticket summaries, details, and action notes. Returns matching tickets ranked by relevance. Use this when you need to find tickets by keyword, error message, or description rather than browsing by filters. Supports date range and client filtering to narrow results. |
halo_send_email_reply |
Free | Write | [HaloPSA] Send an outbound email reply on a ticket. Sugar over halo_add_action with outcome=Email, sendemail=true, hiddenfromuser=false. The reply is visible to the end user/customer. For private/internal notes use halo_add_internal_note instead. |
halo_update_action |
Free | Write | [HaloPSA] Update an existing action. Halo has no PUT for actions — upserts go through POST /api/Actions with the action ID populated. Provide actionId and ticketId plus the fields you want to change. NOTE: this tool does NOT perform a read-merge-write — it sends only the fields you supply. How Halo's upsert handles omitted fields depends on the field and your Halo configuration; some fields may be left untouched while others may revert to defaults. To guarantee a value, set it explicitly. Use extraFieldsJson for Halo Action fields not exposed as a named parameter. |
halo_update_ticket |
Free | Write | [HaloPSA] Update an existing ticket's fields such as status, assignment, priority, or custom fields. This modifies data visible to helpdesk staff. Requires a valid ticket ID — use halo_search_tickets or halo_list_tickets to find IDs. |
halo_vote_ticket |
Pro | Write | [HaloPSA] Submit a vote on a ticket. Used for ticket voting/polling workflows where agents or users can vote on tickets. Provide the vote details as a JSON object including the ticket ID and vote value. Returns the vote result. |
halo_add_action parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actIsBillable |
boolean | no | null | Is this action billable? Maps to `actisbillable` (Halo's field is `actisbillable`, not `actionchargeable`). |
actionArrivalDate |
string | no | null | Event arrival timestamp ISO 8601. Maps to `actionarrivaldate`. |
actionCompletionDate |
string | no | null | Work completion timestamp ISO 8601 (sets implicit completion). Maps to `actioncompletiondate`. |
actionContractId |
integer | no | null | Contract ID to bill against. Maps to `action_contract_id`. |
actionIsResponse |
boolean | no | null | This action counts as the SLA response. Maps to `action_isresponse` (not `isresponse`). |
agentId |
integer | no | null | Agent ID performing the action. Use halo_list_agents. Maps to `who_agentid`. |
appointmentId |
integer | no | null | Appointment ID this action relates to. Maps to `appointment_id`. |
assetId |
integer | no | null | Asset ID this action relates to. Maps to `asset_id`. |
chargeRate |
integer | no | null | Charge rate ID. Use halo_list_charge_rates. Maps to `chargerate`. |
customFieldsJson |
string | no | null | Custom field values as JSON array, e.g. [{"id":42,"value":"hello"}]. Maps to `customfields`. |
dateTime |
string | no | null | Action timestamp ISO 8601 (e.g. 2026-05-10T14:30:00Z). Defaults to now. Maps to `datetime`. |
dontDoRules |
boolean | no | null | Suppress automation rules for this action. Maps to `dont_do_rules`. |
emailCc |
string | no | null | Email CC: address(es). Maps to `emailcc`. |
emailFrom |
string | no | null | Email From: address override. Maps to `emailfrom`. |
emailSubject |
string | no | null | Email subject line. Maps to `emailsubject`. |
emailTemplateId |
integer | no | null | Email template ID to render the outbound body. Maps to `emailtemplate_id`. |
emailTo |
string | no | null | Email To: address(es), comma-separated. Maps to `emailto`. |
extraFieldsJson |
string | no | null | Free-form JSON object of any Halo Action field not exposed as a named parameter (e.g. {"signature_method":1,"emailimportance":"high"}). Merged into the request body. Explicit named parameters override extraFieldsJson on conflict. Use sparingly. |
fromMailboxId |
integer | no | null | Mailbox ID to send from. Maps to `from_mailbox_id`. |
hiddenFromUser |
boolean | yes | REQUIRED. true = HIDDEN from end user/customer (agent-only / private). false = PUBLIC on customer portal. Maps to Halo's `hiddenfromuser` field. | |
important |
boolean | no | null | Urgent/important flag (shows a red flag in Halo UI). Maps to `important`. |
informTicketOwner |
boolean | no | null | Notify the ticket owner of this action. Maps to `actioninformownerofaction`. |
isHiddenFromInternalIt |
boolean | no | null | Hide from internal IT team specifically (distinct from hiddenFromUser). Maps to `ishiddenfrominternalit`. |
mileage |
number | no | null | Mileage logged. Maps to `mileage`. |
newAgent |
integer | no | null | Reassign ticket to this agent ID as part of the action. Maps to `new_agent`. |
newFixByDate |
string | no | null | New ticket fix-by date ISO 8601. Maps to `new_fixbydate`. |
newFollowUpDate |
string | no | null | New follow-up reminder date ISO 8601. Maps to `new_followupdate`. |
newPriority |
integer | no | null | New ticket priority ID. Maps to `new_priority`. |
newStatus |
integer | no | null | New ticket status ID after this action. Use halo_list_statuses. Maps to `new_status`. |
newTargetDate |
string | no | null | New target/SLA date ISO 8601. Maps to `new_targetdate`. |
newTeam |
string | no | null | Reassign ticket to this team (name or id). Maps to `new_team`. |
nonBillTime |
number | no | null | Non-billable portion of timeTaken in hours. Maps to `nonbilltime` (Halo's field is `nonbilltime`, not `nonbillabletime`). |
note |
string | yes | REQUIRED. Action body as plain text. For HTML use noteHtml instead (Halo derives the other). | |
noteHtml |
string | no | null | HTML body. Takes precedence over note when both supplied. Maps to `note_html`. |
onBehalfOfUserId |
integer | no | null | End-user this action is posted on behalf of. Maps to `on_behalf_of`. |
outcome |
string | no | null | REQUIRED (unless `outcomeId` is supplied). Outcome by display name, e.g. 'Email', 'Private Note', 'Public Note', 'Time Entry'. Halo rejects an action with no outcome. Maps to `outcome`. |
outcomeId |
integer | no | null | REQUIRED (unless `outcome` or an outcome is supplied via extraFieldsJson). Outcome ID — the action type. Preferred over the name. Enumerate valid ids with halo_list_outcomes. Maps to `outcome_id`. |
privateNote |
string | no | null | Agent-only side note, always hidden from customer regardless of hiddenFromUser. Maps to `private_note`. |
replyToAddress |
string | no | null | Reply-To: header override. Maps to `replytoaddress`. |
sendEmail |
boolean | no | null | Dispatch this action as an outbound email. When true, BOTH emailTo AND emailSubject are required. Maps to `sendemail`. |
sendSurvey |
boolean | no | null | Trigger CSAT survey on save. Maps to `send_survey`. |
setNoteToEmailBody |
boolean | no | null | Use the action's note/noteHtml as the email body. Maps to `setnotetoemailbody`. |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID. Use halo_search_tickets or halo_list_tickets to find IDs. | |
timeTaken |
number | no | null | Hours of work logged (decimal, e.g. 1.5 = 1h30m). Maps to `timetaken`. |
travelTime |
number | no | null | Travel time in hours. Maps to `traveltime`. |
updateChildren |
boolean | no | null | Propagate this action to child tickets. Maps to `update_children`. |
updateParent |
boolean | no | null | Propagate this action to the parent ticket. Maps to `update_parent`. |
whoType |
integer | no | null | Actor type: 0=Agent, 1=End-User. Maps to `who_type`. |
halo_add_action_reaction parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actionNumber |
integer | yes | REQUIRED. Per-ticket action sequence number (1-based). NOT the global action id and NOT returned by halo_list_ticket_actions — must come from a webhook payload, UI link, or out-of-band knowledge. | |
agentId |
integer | no | null | Agent ID adding the reaction. Defaults to the calling agent. |
reactionType |
string | yes | REQUIRED. Reaction type/emoji shortcode (e.g. ':thumbsup:' or 'like'). Maps to Halo's `type` field on the ActionReaction schema. | |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID containing the action. | |
timestamp |
string | no | null | Reaction timestamp ISO 8601. Defaults to now. Maps to `timestamp`. |
halo_add_internal_note parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Agent ID adding the note. |
important |
boolean | no | null | Mark as important (red flag in Halo UI). |
note |
string | yes | REQUIRED. Note body (plain text or HTML). | |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID. |
halo_change_ticket_status_with_note parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Agent ID performing the status change. |
hiddenFromUser |
boolean | no | false | Hide the audit note from the end user/customer. Default false (visible). |
newStatusId |
integer | yes | REQUIRED. New ticket status ID. Use halo_list_statuses to find valid IDs. | |
note |
string | yes | REQUIRED. Audit-trail note explaining the status change. | |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID. |
halo_create_draft parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
draftJson |
string | yes | JSON object with draft fields. Example: {"ticket_id": 42, "note": "Draft response...", "outcome": "note"}. Field names must match HaloPSA API field names. |
halo_create_ticket parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Agent ID to assign the ticket to (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | yes | Client ID the ticket belongs to. Use halo_list_clients or halo_search_clients to find valid IDs. | |
customFieldsJson |
string | no | null | Custom field values as a JSON array, e.g. [{"id":151,"value":"Change"}]. Maps to Halo's `customfields`. Some workflow-backed ticket types REQUIRE their mandatory custom fields here or Halo rejects the create. Look up field IDs with halo_list_fields. |
details |
string | yes | Full ticket description with details of the issue or request. Supports plain text or HTML. | |
extraFieldsJson |
string | no | null | Free-form JSON object of any Halo Ticket field not exposed as a named parameter (e.g. {"workflow_id":10,"apply_workflow_on_type_change":true,"categoryid_1":5}). Merged into the create body; explicit named parameters override extraFieldsJson on conflict. Use this to satisfy workflow-backed ticket types in a single call. |
impactId |
integer | no | null | Impact level ID (optional). Sent as the raw `impact` integer; Halo derives priority server-side. Affects SLA calculations. |
priorityId |
integer | no | null | Priority ID (optional). Omit to use the default priority. |
siteId |
integer | no | null | Site ID (optional). Use halo_list_sites to find valid IDs. |
summary |
string | yes | Ticket summary/subject line. Keep concise and descriptive — this is the primary identifier for helpdesk staff. | |
targetDate |
string | no | null | Target Date & Time (ISO 8601, e.g. 2026-05-26T16:00:00) for the type's "Target Date" field (FOppTargetDate, fieldid -104). This field does NOT bind via customfields — this param writes Halo's working `targetdate` + `targetdate_timezone` + `targetdate_with_timezone` triple. Supply targetDateTimezone for DST-correct handling. |
targetDateTimezone |
string | no | null | Windows timezone id for targetDate (e.g. "GMT Standard Time", "Eastern Standard Time"). Halo resolves DST from the zone id. Ignored unless targetDate is set. |
teamId |
integer | no | null | Team ID to assign the ticket to (optional). Use halo_list_teams to find valid IDs. |
ticketTypeId |
integer | no | null | Ticket type ID (optional). Use halo_list_ticket_types to see available types. For workflow-backed types, also supply workflow_id via extraFieldsJson and the type's mandatory customFieldsJson. |
urgencyId |
integer | no | null | Urgency level ID (optional). Sent as the raw `urgency` integer; Halo derives priority server-side. Affects SLA calculations. |
userId |
integer | no | null | End user/contact ID (optional). Use halo_list_users to find valid IDs. |
halo_delete_action parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actionId |
integer | no | null | REQUIRED. The numeric HaloPSA action ID to delete. Use halo_list_actions to find valid IDs. Verify the action with halo_get_action before deleting. |
ticketId |
integer | no | null | REQUIRED. The numeric HaloPSA ticket ID that contains the action. |
halo_get_action parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actionId |
integer | no | null | REQUIRED. The numeric HaloPSA action ID. |
agentOnly |
boolean | no | null | Return only agent-authored actions (optional). Maps to `agentonly`. |
emailOnly |
boolean | no | null | Return only the email portion of the action (optional). Maps to `emailonly`. |
includeDetails |
boolean | no | null | Include full action details (extended payload). Maps to `includedetails`. |
includeEmail |
boolean | no | null | Include email-specific fields when the action is an email. Maps to `includeemail`. |
mostRecent |
boolean | no | null | Return the most recent matching action (optional). Maps to `mostrecent`. |
nonSystem |
boolean | no | null | Exclude system-generated content from the action (optional). Maps to `nonsystem`. |
penultimate |
boolean | no | null | Return the penultimate (second-to-last) action (optional). Maps to `penultimate`. |
ticketId |
integer | no | null | REQUIRED. The numeric HaloPSA ticket ID that contains the action. |
halo_get_ticket parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
includeAgent |
boolean | no | null | When true, includes assigned-agent detail (optional). |
includeAuditing |
boolean | no | null | When true, includes the ticket's audit trail (optional). |
includeChildIds |
boolean | no | null | When true, includes child ticket IDs (optional). |
includeDetails |
boolean | no | null | When true, includes full ticket detail (optional). |
includeLastAction |
boolean | no | null | When true, includes the last action (optional). |
includeLastAppointment |
boolean | no | null | When true, includes the last appointment (optional). |
includeLinkedObjects |
boolean | no | null | When true, includes linked objects (assets, etc.) (optional). |
includeNextAppointment |
boolean | no | null | When true, includes the next appointment (optional). |
includeParentChangeInfo |
boolean | no | null | When true, includes parent change info (optional). |
includeSeenBy |
boolean | no | null | When true, includes seen-by information (optional). |
isDetailScreen |
boolean | no | null | When true, returns the detail-screen representation (optional). |
isPreview |
boolean | no | null | When true, returns a lightweight preview (optional). |
ticketId |
integer | yes | The numeric HaloPSA ticket ID. Use halo_search_tickets or halo_list_tickets to find valid IDs. |
halo_list_actions parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actOutcome |
string | no | null | Filter by action outcome name, e.g. 'Email' or 'Note' (optional). Maps to `actoutcome`. |
actOutcomeNum |
integer | no | null | Filter by numeric action outcome ID (optional). Maps to `actoutcomenum`. |
agentOnly |
boolean | no | null | Hide system-generated actions; return only those performed by agents. Maps to `agentonly`. |
conversationOnly |
boolean | no | null | Return only customer-facing conversation actions. Maps to `conversationonly`. |
count |
integer | no | 50 | Maximum number of actions to return (default 50, max 200). Halo does not support page-based pagination on this endpoint — use date ranges/filters to narrow large result sets. |
dateSearch |
string | no | null | Date field to apply the start/end range against, e.g. 'dateoccurred' (optional). Maps to `datesearch`. |
endDate |
string | no | null | Filter by end date in yyyy-MM-dd format (optional). Example: '2026-03-21'. Returns actions created on or before this date. |
excludeBilling |
boolean | no | null | Skip time-entry / billing actions. Maps to `excludebilling`. |
excludeHiddenFromInternalIt |
boolean | no | null | Exclude actions hidden from internal IT (optional). Maps to `excludehiddenfrominternalit`. |
excludePrivate |
boolean | no | null | Skip actions marked hidden from the customer. Maps to `excludeprivate`. Useful for building a customer-visible audit trail. |
excludeSys |
boolean | no | null | Exclude system-generated actions (optional). Maps to `excludesys`. |
importantOnly |
boolean | no | null | Return only actions marked important. Maps to `importantonly`. |
importantTop |
boolean | no | null | Return only the single most important action per ticket (optional). Maps to `importanttop`. |
includeAgentDetails |
boolean | no | null | Include agent detail fields with each action (optional). Maps to `includeagentdetails`. |
includeAttachments |
boolean | no | null | Include attachment metadata inline with each action. Maps to `includeattachments`. |
includeHtmlEmail |
boolean | no | null | Include the HTML-rendered email body (optional). Maps to `includehtmlemail`. |
includeHtmlNote |
boolean | no | null | Include the HTML-rendered note body (optional). Maps to `includehtmlnote`. |
includeNonActionAttachments |
boolean | no | null | Include attachments that are not tied to an action (optional). Maps to `includenonactionattachments`. |
includeTranslations |
boolean | no | null | Include translated content for actions (optional). Maps to `includetranslations`. |
intraTicketOnly |
boolean | no | null | Return only intra-ticket actions (optional). Maps to `intraticketonly`. |
isChildNotes |
boolean | no | null | Treat the result as child notes (optional). Maps to `ischildnotes`. |
isRelatedNotes |
boolean | no | null | Treat the result as related notes (optional). Maps to `isrelatednotes`. |
slaOnly |
boolean | no | null | Return only SLA-related actions (optional). Maps to `slaonly`. |
startDate |
string | no | null | Filter by start date in yyyy-MM-dd format (optional). Example: '2026-03-16'. Returns actions created on or after this date. |
supplierOnly |
boolean | no | null | Return only supplier-related actions (optional). Maps to `supplieronly`. |
ticketId |
integer | no | null | Filter by ticket ID (optional). Returns only actions for the specified ticket. |
timeEntriesOnly |
boolean | no | null | Return only time-log actions. Maps to `timeentriesonly`. |
halo_list_ticket_actions parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count |
integer | no | 200 | Maximum number of actions to return (default 200, max 200). |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID. |
halo_list_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID. Use halo_list_agents to find valid IDs. |
assetId |
integer | no | null | Filter by linked asset ID (optional). |
billableOnly |
boolean | no | null | When true, returns only billable tickets (optional). |
category1 |
string | no | null | Filter by category slot 1 value (optional). |
category2 |
string | no | null | Filter by category slot 2 value (optional). |
category3 |
string | no | null | Filter by category slot 3 value (optional). |
category4 |
string | no | null | Filter by category slot 4 value (optional). |
cfDisplayValuesOnly |
boolean | no | null | When true, returns custom-field display values only (optional). |
clientId |
integer | no | null | Filter by client ID. Use halo_list_clients or halo_search_clients to find valid IDs. |
closedOnly |
boolean | no | null | When true, returns only closed tickets (optional). |
deleted |
boolean | no | null | When true, includes deleted tickets (optional). |
endDate |
string | no | null | Filter by end date in yyyy-MM-dd format (optional). Returns tickets created on or before this date. |
filetypeFilter |
string | no | null | Filter to tickets with attachments of this file type (optional). |
includeAgent |
boolean | no | null | When true, includes assigned-agent details in each ticket (optional). |
includeCustomFields |
boolean | no | null | When true, includes custom field values on each ticket (optional). |
includeLastAction |
boolean | no | null | When true, includes the last action on each ticket (optional). |
includeLastNote |
boolean | no | null | When true, includes the last note on each ticket (optional). |
includeSlaTimer |
boolean | no | null | When true, includes SLA timer detail on each ticket (optional). |
includeStatus |
boolean | no | null | When true, includes status detail on each ticket (optional). |
includeTicketType |
boolean | no | null | When true, includes ticket-type detail on each ticket (optional). |
listId |
integer | no | null | Filter to a saved list ID (optional). |
noChargeOnly |
boolean | no | null | When true, returns only no-charge tickets (optional). |
openOnly |
boolean | no | null | When true, returns only open/active tickets. Useful for daily triage. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). Start with 20 when exploring, increase for bulk data needs. |
parentId |
integer | no | null | Filter by parent ticket ID (optional). |
pendingReview |
boolean | no | null | When true, returns only tickets pending review (optional). |
priorityId |
integer | no | null | Filter by priority ID. |
readyForInvoicing |
boolean | no | null | When true, returns only tickets ready for invoicing (optional). |
requestTypeId |
integer | no | null | Filter by request type ID (optional). |
search |
string | no | null | Search query string (optional). Matches against ticket summary and details. |
siteId |
integer | no | null | Filter by site ID (optional). |
startDate |
string | no | null | Filter by start date in yyyy-MM-dd format (optional). Returns tickets created on or after this date. |
statusId |
integer | no | null | Filter by HaloPSA status ID. Use halo_list_ticket_types to find valid status IDs. |
teamId |
integer | no | null | Filter by team ID (optional). |
teamName |
string | no | null | Filter by team name (optional). |
ticketIds |
string | no | null | Return only these ticket IDs as a comma-separated list (optional), e.g. "101,102". |
userId |
integer | no | null | Filter by end-user ID (optional). |
viewId |
integer | no | null | Filter to a saved view ID (optional). |
withAttachments |
boolean | no | null | When true, returns only tickets with attachments (optional). |
halo_log_time parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Agent ID logging the time. |
chargeRateId |
integer | no | null | Charge rate ID. Maps to `chargerate`. |
chargeable |
boolean | no | true | Is this time billable to the client? Default true. Maps to `actisbillable`. |
contractId |
integer | no | null | Contract ID to bill against. Maps to `action_contract_id`. |
dateTime |
string | no | null | Action timestamp ISO 8601. Defaults to now. |
nonBillTimeHours |
number | no | null | Non-billable portion of timeTakenHours. Maps to `nonbilltime`. |
note |
string | no | null | Note describing the work. Defaults to 'Time logged' when null. |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID. | |
timeTakenHours |
number | yes | REQUIRED. Hours worked as a decimal (e.g. 1.5 for 1h30m). |
halo_review_action parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actionId |
integer | yes | REQUIRED. Numeric HaloPSA action ID being reviewed. | |
approved |
boolean | yes | REQUIRED. true = approve (timesheet_approval_status=1), false = reject (timesheet_approval_status=2). Override via timesheetApprovalStatusOverride for tenant-specific values. | |
extraFieldsJson |
string | no | null | Free-form JSON of any additional fields. Merged into the body; explicit params win on conflict. |
reviewNote |
string | no | null | Optional reviewer note. Maps to `note` on the Actions schema. |
reviewerAgentId |
integer | no | null | Reviewer agent ID. Maps to `who_agentid` (the agent performing the review). Defaults to the calling agent. |
timesheetApprovalStatusOverride |
integer | no | null | Override the int value sent to `timesheet_approval_status`. Some tenants use values other than 1=approved/2=rejected (e.g. 0=pending, 3=needs-info). When set, ignores the `approved` mapping. |
halo_search_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | Filter by end date in yyyy-MM-dd format (optional). Returns tickets created on or before this date. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Maximum number of results per page (default 50, max 200). Start with 20 when exploring, increase for comprehensive searches. |
query |
string | yes | Search query string. Matches against ticket summary, details, and action notes. Use specific terms for better results. | |
startDate |
string | no | null | Filter by start date in yyyy-MM-dd format (optional). Returns tickets created on or after this date. |
halo_send_email_reply parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actionIsResponse |
boolean | no | null | Mark this reply as the SLA response. Maps to `action_isresponse`. |
agentId |
integer | no | null | Agent ID sending the reply. |
body |
string | yes | REQUIRED. Reply body. Defaults to HTML; set useHtml=false for plain text. | |
emailCc |
string | no | null | CC address(es). |
emailSubject |
string | yes | REQUIRED. Email subject line. | |
emailTemplateId |
integer | no | null | Halo email template ID to render the body. |
emailTo |
string | yes | REQUIRED. Recipient address(es), comma-separated. | |
fromMailboxId |
integer | no | null | Mailbox ID to send from. |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID. | |
useHtml |
boolean | no | true | Treat body as HTML (true, default) or plain text (false). |
halo_update_action parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actIsBillable |
boolean | no | null | Billable flag. Maps to `actisbillable`. |
actionArrivalDate |
string | no | null | Event arrival ISO 8601. Maps to `actionarrivaldate`. |
actionCompletionDate |
string | no | null | Completion timestamp ISO 8601. Maps to `actioncompletiondate`. |
actionContractId |
integer | no | null | Contract ID. Maps to `action_contract_id`. |
actionId |
integer | yes | REQUIRED. Numeric HaloPSA action ID to update. Use halo_list_actions or halo_list_ticket_actions to find IDs. | |
actionIsResponse |
boolean | no | null | SLA response flag. Maps to `action_isresponse`. |
agentId |
integer | no | null | Agent ID for this update. Maps to `who_agentid`. |
appointmentId |
integer | no | null | Linked appointment ID. Maps to `appointment_id`. |
assetId |
integer | no | null | Linked asset ID. Maps to `asset_id`. |
chargeRate |
integer | no | null | Charge rate ID. Maps to `chargerate`. |
customFieldsJson |
string | no | null | Custom field JSON array. Maps to `customfields`. |
dateTime |
string | no | null | New action timestamp ISO 8601. Maps to `datetime`. |
dontDoRules |
boolean | no | null | Suppress automations. Maps to `dont_do_rules`. |
emailCc |
string | no | null | Email CC. Maps to `emailcc`. |
emailFrom |
string | no | null | Email From override. Maps to `emailfrom`. |
emailSubject |
string | no | null | Email subject. Maps to `emailsubject`. |
emailTemplateId |
integer | no | null | Email template ID. Maps to `emailtemplate_id`. |
emailTo |
string | no | null | Email To: address(es). Maps to `emailto`. |
extraFieldsJson |
string | no | null | Free-form JSON of unexposed Halo Action fields. Explicit params win on conflict. |
fromMailboxId |
integer | no | null | Mailbox ID. Maps to `from_mailbox_id`. |
hiddenFromUser |
boolean | no | null | New visibility: true = HIDDEN from customer, false = PUBLIC. Maps to `hiddenfromuser`. Omit to leave this field out of the update payload; Halo's per-field upsert behavior determines whether the existing value is preserved. |
important |
boolean | no | null | Important flag. Maps to `important`. |
informTicketOwner |
boolean | no | null | Notify ticket owner. Maps to `actioninformownerofaction`. |
isHiddenFromInternalIt |
boolean | no | null | Hide from internal IT only. Maps to `ishiddenfrominternalit`. |
mileage |
number | no | null | Mileage. Maps to `mileage`. |
newAgent |
integer | no | null | Reassign to agent ID. Maps to `new_agent`. |
newFixByDate |
string | no | null | New fix-by date ISO 8601. Maps to `new_fixbydate`. |
newFollowUpDate |
string | no | null | New follow-up date ISO 8601. Maps to `new_followupdate`. |
newPriority |
integer | no | null | New priority ID. Maps to `new_priority`. |
newStatus |
integer | no | null | New ticket status ID. Maps to `new_status`. |
newTargetDate |
string | no | null | New target date ISO 8601. Maps to `new_targetdate`. |
newTeam |
string | no | null | Reassign to team. Maps to `new_team`. |
nonBillTime |
number | no | null | Non-billable hours. Maps to `nonbilltime`. |
note |
string | no | null | New action body (plain text). Omit to leave this field out of the update payload; Halo's per-field upsert behavior determines whether the existing value is preserved. |
noteHtml |
string | no | null | New HTML body. Maps to `note_html`. Omit to leave this field out of the update payload; Halo's per-field upsert behavior determines whether the existing value is preserved. |
onBehalfOfUserId |
integer | no | null | On-behalf-of user ID. Maps to `on_behalf_of`. |
outcome |
string | no | null | New outcome display name. Maps to `outcome`. |
outcomeId |
integer | no | null | New outcome ID. Maps to `outcome_id`. |
privateNote |
string | no | null | New agent-only side note. Maps to `private_note`. |
replyToAddress |
string | no | null | Reply-To header. Maps to `replytoaddress`. |
sendEmail |
boolean | no | null | Dispatch as outbound email. When true, BOTH emailTo AND emailSubject are required. Maps to `sendemail`. |
sendSurvey |
boolean | no | null | Trigger CSAT survey. Maps to `send_survey`. |
setNoteToEmailBody |
boolean | no | null | Use note as email body. Maps to `setnotetoemailbody`. |
ticketId |
integer | yes | REQUIRED. Numeric HaloPSA ticket ID the action belongs to. | |
timeTaken |
number | no | null | Hours worked. Maps to `timetaken`. |
travelTime |
number | no | null | Travel hours. Maps to `traveltime`. |
updateChildren |
boolean | no | null | Propagate to children. Maps to `update_children`. |
updateParent |
boolean | no | null | Propagate to parent. Maps to `update_parent`. |
whoType |
integer | no | null | Actor type: 0=Agent, 1=End-User. Maps to `who_type`. |
halo_update_ticket parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
fieldsJson |
string | yes | JSON object with fields to update. Example: {"status_id": 2, "agent_id": 5, "priority_id": 3}. Field names must match HaloPSA API field names. | |
ticketId |
integer | yes | The numeric ticket ID to update. Use halo_search_tickets or halo_list_tickets to find valid IDs. |
halo_vote_ticket parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
voteJson |
string | yes | JSON object with vote details. Required: ticket_id. Example: {"ticket_id": 42, "vote": 1}. Field names must match HaloPSA API field names. |
Clients
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_client |
Pro | Write | [HaloPSA] Create a new client (customer organization) record. This creates data visible to helpdesk staff. Returns the created client with its assigned ID. The JSON should include at minimum a name. Follow up with halo_get_client to verify creation. Use halo_list_sites to associate sites after creation. |
halo_get_client |
Free | Read-only | [HaloPSA] Retrieve full details for a single client by numeric ID. Returns client info including associated sites, contracts, and users. Requires a valid client ID — use halo_list_clients or halo_search_clients to find IDs. |
halo_list_clients |
Free | Read-only | [HaloPSA] List all clients (customer organizations) with pagination. Returns client name, ID, and basic details. Use this to discover valid client IDs for filtering tickets, assets, contracts, and other client-scoped data. |
halo_list_users |
Free | Read-only | [HaloPSA] List end users (contacts), optionally filtered by client. Returns user details including name, email, and contact info. Use this to find user IDs for ticket creation or to see who belongs to a client. |
halo_search_clients |
Free | Read-only | [HaloPSA] Search clients by name or reference number. Returns matching clients ranked by relevance. Use this when you know the client name but not the ID. |
halo_update_client |
Pro | Write | [HaloPSA] Update an existing client's fields such as name, contact details, or custom fields. This modifies data visible to helpdesk staff. The JSON must include the client 'id' field. Use halo_list_clients, halo_search_clients, or halo_get_client to find valid IDs and current field values. |
halo_create_client parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientJson |
string | yes | JSON object representing the client to create. Example: {"name": "Acme Corp", "website": "https://acme.com", "phone_number": "555-0100"}. Field names must match HaloPSA API field names. |
halo_get_client parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | The numeric HaloPSA client ID. Use halo_list_clients or halo_search_clients to find valid IDs. |
halo_list_clients parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
activeInactive |
string | no | null | Filter by active/inactive state, e.g. 'active' or 'inactive' (optional). |
excludeInternal |
boolean | no | null | When true, excludes internal clients from results (optional). |
idOnly |
boolean | no | null | When true, returns only client IDs rather than full records (optional). |
includeActive |
boolean | no | null | When true, includes active clients in results (optional). |
includeCustomFields |
boolean | no | null | When true, includes custom fields in results (optional). |
includeInactive |
boolean | no | null | When true, includes inactive clients in results (optional). |
includeNotes |
boolean | no | null | When true, includes client notes in results (optional). |
includeQboFields |
boolean | no | null | When true, includes QuickBooks Online fields in results (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). Start with 20 when exploring, increase for bulk exports. |
search |
string | no | null | Free-text search to match against client name and reference fields (optional). |
ticketAreaId |
integer | no | null | Filter by ticket area ID (optional). |
topLevelId |
integer | no | null | Filter by top-level organization ID (optional). |
viewId |
integer | no | null | Apply a saved Halo view by its numeric ID (optional). |
halo_list_users parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
approversOnly |
boolean | no | null | When true, returns only users who are approvers (optional). |
assetId |
integer | no | null | Filter by asset ID (optional). Returns users linked to the given asset. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
excludeAgents |
boolean | no | null | When true, excludes agent records from results (optional). |
excludeGeneralUser |
boolean | no | null | When true, excludes general (non-specific) users from results (optional). |
includeBillingInfo |
boolean | no | null | When true, includes billing information in results (optional). |
includeCustomFields |
boolean | no | null | When true, includes custom fields in results (optional). |
includeInactive |
boolean | no | false | When true, includes inactive/disabled users in results (default false). |
linkedToUserId |
integer | no | null | Filter by the user ID this user is linked to (optional). |
organisationId |
integer | no | null | Filter by organisation ID (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). Start with 20 when exploring, increase for bulk data needs. |
role |
string | no | null | Filter by role name (optional). |
searchPhoneNumbers |
boolean | no | null | When true, searches phone numbers as part of free-text matching (optional). |
siteId |
integer | no | null | Filter by site ID (optional). |
supplierId |
integer | no | null | Filter by supplier ID (optional). |
halo_search_clients parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageSize |
integer | no | 50 | Maximum number of results to return (default 50, max 200). |
query |
string | yes | Search query string. Matches against client name and reference fields. |
halo_update_client parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientJson |
string | yes | JSON object with client fields to update. Must include 'id'. Example: {"id": 42, "name": "Acme Corp Updated", "phone_number": "555-0200"}. Field names must match HaloPSA API field names. |
Assets
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_asset |
Pro | Write | [HaloPSA] Create a new asset (device, hardware, or software) record. This creates data visible to helpdesk staff. Returns the created asset with its assigned ID. The JSON should include at minimum a name and asset type — use halo_list_asset_types to find valid type IDs and halo_list_clients to find valid client IDs. Follow up with halo_get_asset to verify creation. |
halo_get_asset |
Free | Read-only | [HaloPSA] Retrieve full details for a single asset by numeric ID. Returns asset info including linked tickets, assigned users, warranty status, and custom fields. Requires a valid asset ID — use halo_list_assets or halo_search_assets to find IDs. |
halo_get_asset_next_tag |
Free | Read-only | [HaloPSA] Retrieve the next available asset tag number from HaloPSA's auto-numbering sequence. Returns the next tag value that would be assigned to a new asset. Use this before creating assets to preview or reserve the next asset tag. No parameters required. |
halo_list_asset_changes |
Free | Read-only | [HaloPSA] List change history for assets. Returns records of modifications made to assets including field changes, timestamps, and who made the change. Optionally filter by a specific asset ID. Use this for asset audit trails and change tracking. |
halo_list_asset_software |
Free | Read-only | [HaloPSA] List software discovered on assets, optionally filtered by device. Returns software names, versions, and installation details. Use this to audit installed software for a specific device or across your environment. |
halo_list_asset_software_versions |
Free | Read-only | [HaloPSA] List software version records across assets. Returns software names with their detected versions, useful for version auditing and compliance checks. Use this to identify outdated software or track version distribution across your environment. |
halo_list_asset_types |
Free | Read-only | [HaloPSA] List all available asset types defined in HaloPSA. Returns type IDs and names needed for creating assets or filtering asset lists. Use this to discover valid asset type IDs before calling halo_create_asset or filtering halo_list_assets. |
halo_list_assets |
Free | Read-only | [HaloPSA] List assets (devices, hardware, software) with optional filters for client and asset type. Returns paginated asset summaries including name, type, client, and status. Use this to browse assets or narrow down before fetching full details with halo_get_asset. |
halo_list_device_licences |
Free | Read-only | [HaloPSA] List software licences assigned to devices/assets. Returns licence assignments including software name, licence key, and expiry. Optionally filter by device ID. Use this to audit licence compliance or check which licences are assigned to a specific device. |
halo_search_assets |
Free | Read-only | [HaloPSA] Search assets by name, serial number, or asset tag. Returns matching assets ranked by relevance. Use this when you know identifying details but not the asset ID. |
halo_update_asset |
Pro | Write | [HaloPSA] Update an existing asset's fields such as status, assignment, or custom fields. This modifies data visible to helpdesk staff. The JSON must include the asset 'id' field. Use halo_list_assets, halo_search_assets, or halo_get_asset to find valid IDs and current field values. |
halo_create_asset parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
assetJson |
string | yes | JSON object representing the asset to create. Example: {"inventory_number": "PC-001", "client_id": 42, "assettype_id": 1, "status": "Active"}. Field names must match HaloPSA API field names. |
halo_get_asset parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
assetId |
integer | yes | The numeric HaloPSA asset ID. Use halo_list_assets or halo_search_assets to find valid IDs. |
halo_list_asset_changes parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
assetId |
integer | no | null | Filter by asset ID (optional). Returns changes for a specific asset. Use halo_list_assets or halo_search_assets to find valid IDs. |
count |
integer | no | 200 | Maximum number of results to return (default 200). |
halo_list_asset_software parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count |
integer | no | 200 | Maximum number of results to return (default 200). |
deviceId |
integer | no | null | Filter by device/asset ID (optional). Use halo_list_assets or halo_search_assets to find valid IDs. |
halo_list_asset_software_versions parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_assets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
activeInactive |
string | no | null | Filter by active/inactive state, e.g. 'active' or 'inactive' (optional). |
assetGroups |
string | no | null | Filter by one or more asset group IDs, comma-separated (optional). |
assetStatuses |
string | no | null | Filter by one or more asset status IDs, comma-separated (optional). |
assetTypeId |
integer | no | null | Filter by asset type ID (optional). |
assetTypes |
string | no | null | Filter by one or more asset type IDs, comma-separated (optional). |
bookmarked |
boolean | no | null | When true, returns only bookmarked assets (optional). |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
contractId |
integer | no | null | Filter by contract ID (optional). |
includeAssetFields |
boolean | no | null | When true, includes asset field values in results (optional). |
includeChangeHistoryLastUpdated |
boolean | no | null | When true, includes the last-updated timestamp from change history (optional). |
includeChildren |
boolean | no | null | When true, includes child assets in results (optional). |
includeCustomFields |
boolean | no | null | When true, includes custom fields in results (optional). |
includeServices |
boolean | no | null | When true, includes linked services in results (optional). |
includeUser |
boolean | no | null | When true, includes the assigned user details in results (optional). |
inventoryNumber |
string | no | null | Filter by asset inventory number (optional). |
linkedToTicket |
integer | no | null | Filter to assets linked to the given ticket ID (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). Start with 20 when exploring, increase for bulk data needs. |
siteId |
integer | no | null | Filter by site ID (optional). |
supplierId |
integer | no | null | Filter by supplier ID (optional). |
ticketId |
integer | no | null | Filter by linked ticket ID (optional). |
userId |
integer | no | null | Filter by assigned user ID (optional). |
halo_list_device_licences parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
deviceId |
integer | no | null | Filter by device/asset ID (optional). Use halo_list_assets or halo_search_assets to find valid IDs. |
halo_search_assets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageSize |
integer | no | 50 | Maximum number of results to return (default 50, max 200). |
query |
string | yes | Search query string. Matches against asset name, serial number, and asset tag fields. |
halo_update_asset parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
assetJson |
string | yes | JSON object with asset fields to update. Must include 'id'. Example: {"id": 10, "status": "Retired", "client_id": 42}. Field names must match HaloPSA API field names. |
Agents & Teams
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_clear_agent_cache |
Pro | Write | [HaloPSA] Clear the cached agent data in HaloPSA. Use this when agent data appears stale or after bulk agent changes to force the system to refresh agent information. Returns confirmation of the cache clear operation. No parameters required. |
halo_get_agent |
Free | Read-only | [HaloPSA] Retrieve full details for a single agent by numeric ID. Returns agent info including skills, team membership, and current workload. Requires a valid agent ID — use halo_list_agents to find IDs. |
halo_get_agent_me |
Free | Read-only | [HaloPSA] Retrieve details for the currently authenticated agent. Returns the agent profile associated with the API credentials, including name, email, team membership, and permissions. Use this to identify which agent is making requests or to get the current agent's ID for filtering. |
halo_list_agents |
Free | Read-only | [HaloPSA] List helpdesk agents (technicians) with optional team and department filters. Returns agent names, IDs, and team assignments. Use this to discover valid agent IDs for ticket assignment or filtering. |
halo_list_teams |
Free | Read-only | [HaloPSA] List all teams defined in HaloPSA. Returns team names and IDs. Use this to discover valid team IDs for filtering agents or assigning tickets. |
halo_search_agents |
Free | Read-only | [HaloPSA] Search agents (technicians) by name or email. Returns matching agents ranked by relevance. Use this when you know an agent's name but not their ID. Follow up with halo_get_agent for full details. |
halo_get_agent parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | yes | The numeric HaloPSA agent ID. Use halo_list_agents to find valid IDs. |
halo_list_agents parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
activeInactive |
string | no | null | Filter by active/inactive state, e.g. 'active' or 'inactive' (optional). |
departmentId |
integer | no | null | Filter by department ID (optional). |
includeApiAgents |
boolean | no | null | When true, includes API/system agents in results (optional). |
includeDisabled |
string | no | null | When set, includes disabled agents in results; pass 'true' or 'false' (optional). |
includeEnabled |
string | no | null | When set, includes enabled agents in results; pass 'true' or 'false' (optional). |
includeMembershipInfo |
boolean | no | null | When true, includes team membership info in results (optional). |
includeRoles |
boolean | no | null | When true, includes each agent's roles in results (optional). |
includeStatus |
boolean | no | null | When true, includes each agent's current status in results (optional). |
includeUnassigned |
string | no | null | When set, includes unassigned agents in results; pass 'true' or 'false' (optional). |
qualifications |
string | no | null | Filter by agent qualifications (optional). |
remoteAgents |
boolean | no | null | When true, returns only remote-access-capable agents (optional). |
role |
string | no | null | Filter by agent role (optional). |
search |
string | no | null | Free-text search to match against agent name and email fields (optional). |
showAll |
boolean | no | null | When true, returns all agents regardless of default scoping (optional). |
teamId |
integer | no | null | Filter by team ID (optional). Use halo_list_teams to find valid team IDs. |
withEmail |
boolean | no | null | When true, includes each agent's email address in results (optional). |
halo_search_agents parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageSize |
integer | no | 50 | Maximum number of results to return (default 50, max 200). |
query |
string | yes | Search query string. Matches against agent name and email fields. |
Contracts
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_contract |
Pro | Write | [HaloPSA] Create a new client contract/agreement. This creates data visible to helpdesk staff and affects billing. Returns the created contract with its assigned ID. The JSON should include at minimum a name and client_id — use halo_list_clients to find valid client IDs. Follow up with halo_get_contract to verify creation. |
halo_get_contract |
Free | Read-only | [HaloPSA] Retrieve full details for a single contract by numeric ID, including contract lines and billing items. Returns contract info including name, type, client, dates, and line items. Requires a valid contract ID — use halo_list_contracts to find IDs. |
halo_get_supplier_contract |
Free | Read-only | [HaloPSA] Retrieve full details for a single supplier contract by numeric ID. Returns supplier contract info including name, supplier, dates, terms, and line items. Requires a valid supplier contract ID — use halo_list_supplier_contracts to find IDs. |
halo_list_charge_rates |
Free | Read-only | [HaloPSA] List all charge rates defined in HaloPSA. Returns rate IDs, names, and hourly amounts. Use this to discover valid charge rate IDs for contract creation or billing configuration. |
halo_list_contracts |
Free | Read-only | [HaloPSA] List contracts/agreements with optional client filter. Returns contract summaries including ID, name, client, type, and billing details. Use this to discover valid contract IDs for utilization or profitability analysis. |
halo_list_invoices |
Free | Read-only | [HaloPSA] List invoices with optional client and date filters. Returns invoice summaries including ID, amount, date, status, and client. Use this to review billing history or find specific invoices. |
halo_list_supplier_contracts |
Free | Read-only | [HaloPSA] List supplier contracts/agreements with optional filters and pagination. Returns supplier contract summaries including ID, name, supplier, and dates. Use this to review vendor agreements or discover supplier contract IDs for further details. |
halo_create_contract parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractJson |
string | yes | JSON object representing the contract to create. Example: {"name": "Managed Services", "client_id": 42, "type": "Recurring", "start_date": "2024-01-01"}. Field names must match HaloPSA API field names. |
halo_get_contract parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractId |
integer | yes | The numeric HaloPSA contract ID. Use halo_list_contracts to find valid IDs. |
halo_get_supplier_contract parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractId |
integer | yes | The numeric HaloPSA supplier contract ID. Use halo_list_supplier_contracts to find valid IDs. |
halo_list_contracts parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_invoices parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
awaitingApproval |
boolean | no | null | Return only invoices awaiting approval (optional). |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | Filter by end date in yyyy-MM-dd format (optional). Returns invoices dated on or before this date. |
includeLinkedItemDetails |
boolean | no | null | Include linked item details in the results (optional). |
notPostedOnly |
boolean | no | null | Return only invoices that have not been posted (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
paymentStatuses |
string | no | null | Filter by payment statuses, comma-separated (optional). |
postedOnly |
boolean | no | null | Return only posted invoices (optional). |
purchaseOrderId |
integer | no | null | Filter by linked purchase order ID (optional). |
quickbooksId |
integer | no | null | Filter by linked QuickBooks ID (optional). |
readyForInvoicing |
boolean | no | null | Return only invoices ready for invoicing (optional). |
recurringInvoiceId |
integer | no | null | Filter by linked recurring invoice ID (optional). |
reviewRequired |
boolean | no | null | Return only invoices requiring review (optional). |
salesOrderId |
integer | no | null | Filter by linked sales order ID (optional). |
sentStatus |
integer | no | null | Filter by sent status (optional). |
siteId |
integer | no | null | Filter by site ID (optional). |
startDate |
string | no | null | Filter by start date in yyyy-MM-dd format (optional). Returns invoices dated on or after this date. |
thirdPartyId |
string | no | null | Filter by linked third-party ID (optional). |
ticketId |
integer | no | null | Filter by linked ticket ID (optional). |
userId |
integer | no | null | Filter by user ID (optional). |
xeroId |
string | no | null | Filter by linked Xero ID (optional). |
halo_list_supplier_contracts parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
supplierId |
integer | no | null | Filter by supplier ID (optional). Use halo_list_suppliers to find valid IDs. |
Invoices
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_invoice |
Pro | Write | [HaloPSA] Create a new invoice. This creates a billable document visible to finance staff and clients. Returns the created invoice with its assigned ID. Provide invoice details as a JSON object — use halo_list_clients to find valid client IDs. |
halo_generate_invoice_pdf |
Pro | Write | [HaloPSA] Generate a PDF document for an invoice. Returns the PDF generation result including a download URL or base64-encoded content. Use this to produce a printable or email-ready invoice document. Requires a valid invoice ID — use halo_list_invoices to find IDs. |
halo_get_invoice |
Free | Read-only | [HaloPSA] Retrieve a single invoice by numeric ID. Returns full invoice details including line items, amounts, tax, status, and client. Requires a valid invoice ID — use halo_list_invoices to find IDs. |
halo_list_invoice_lines |
Free | Read-only | [HaloPSA] List invoice line items. If an invoice ID is provided, returns that invoice with full line details. Otherwise returns recent invoices with their lines included. Use this to review itemized charges on invoices. |
halo_list_invoice_payments |
Free | Read-only | [HaloPSA] List invoice payments with optional filters. Returns payment records including amount, date, method, and associated invoice. Use this to reconcile payments or check payment history. |
halo_record_invoice_payment |
Pro | Write | [HaloPSA] Record a payment against an invoice. This creates a financial record visible to finance staff. Returns the created payment record. Provide payment details as a JSON object — use halo_list_invoices to find valid invoice IDs. |
halo_update_invoice |
Pro | Write | [HaloPSA] Update an EXISTING invoice by fetch-merge-write. This GETs the current invoice (with all its line items), overlays ONLY the fields you supply, and posts the complete merged document back — so every field you do NOT supply is PRESERVED exactly as it was. This is the safe way to edit a live billing document: HaloPSA's POST /Invoice is an upsert that DEFAULTS every omitted header field, so sending a partial payload directly would silently reset status/dates/totals; this tool re-sends the full record to avoid that. Provide invoiceId (the invoice to change) and updateJson (a JSON object of ONLY the fields to change). Header fields overwrite the fetched values. To change LINE items, include a "lines" array: a line carrying an existing line "id" (from halo_get_invoice / halo_list_invoice_lines) is overlaid onto that FULL existing line, so its other columns (department, tax, nominal codes, etc.) are preserved; a line WITHOUT an id is appended as a NEW line; existing lines you do not mention are kept unchanged. A line id that does not exist on the invoice is rejected. updateJson must NOT carry an "id" that differs from invoiceId. Caveats: (1) idempotent for updates to existing fields/lines, but each call with a NEW (id-less) line appends it again, so do not blindly retry an append. (2) HaloPSA is expected to recompute header totals/tax from the lines on save — if you change line pricing, verify the resulting invoice total. Use halo_create_invoice for a brand-new invoice. |
halo_void_invoice |
Pro | Destructive | [HaloPSA] Void an existing invoice by ID. This marks the invoice as void — it cannot be undone. Use this only when an invoice was created in error. Requires a valid invoice ID — use halo_list_invoices to find IDs. |
halo_create_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
invoiceJson |
string | yes | JSON object with invoice fields. Required: client_id. Optional: lines (array of line items), contract_id, po_number, notes. Example: {"client_id": 1, "lines": [{"description": "Support", "quantity": 1, "unit_price": 150}]} |
halo_generate_invoice_pdf parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
invoiceId |
integer | yes | The numeric HaloPSA invoice ID to generate a PDF for. Use halo_list_invoices to find valid IDs. |
halo_get_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
invoiceId |
integer | yes | The numeric HaloPSA invoice ID. Use halo_list_invoices to find valid IDs. |
halo_list_invoice_lines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count |
integer | no | 50 | Number of invoices to return when no invoice ID is specified (default 50, max 200). |
invoiceId |
integer | no | null | Filter by invoice ID (optional). Returns the specific invoice with full line item details. |
halo_list_invoice_payments parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count |
integer | no | 50 | Number of results to return (default 50). |
invoiceId |
integer | no | null | Filter by invoice ID (optional). Narrows results to payments against a specific invoice. |
halo_record_invoice_payment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
paymentJson |
string | yes | JSON object with payment fields. Required: invoice_id, amount. Optional: payment_date, payment_method, reference. Example: {"invoice_id": 1, "amount": 500.00, "payment_method": "bank_transfer"} |
halo_update_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
invoiceId |
integer | yes | The numeric HaloPSA invoice ID to update. Use halo_list_invoices to find valid IDs. | |
updateJson |
string | yes | JSON object of ONLY the fields to change; omitted fields are preserved. Header example: {"po_number":"PO-4471"}. Line example (edit line 4689 + add a new line): {"lines":[{"id":4689,"quantity":3},{"description":"New item","quantity":1,"unit_price":50}]}. Do not include an "id" that differs from invoiceId. |
halo_void_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
invoiceId |
integer | yes | The numeric HaloPSA invoice ID to void. Use halo_list_invoices to find valid IDs. |
Knowledge Base
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_kb_article |
Pro | Write | [HaloPSA] Create a new knowledge base article. This creates documentation visible to helpdesk staff and potentially end users. Returns the created article with its assigned ID. The JSON should include at minimum a title and content. Follow up with halo_get_kb_article to verify creation. |
halo_get_kb_article |
Free | Read-only | [HaloPSA] Retrieve full details for a single knowledge base article by numeric ID. Returns the complete article including title, content, and metadata. Requires a valid article ID — use halo_list_kb_articles or halo_search_kb to find IDs. |
halo_list_kb_articles |
Free | Read-only | [HaloPSA] List knowledge base articles with pagination. Returns article summaries including ID, title, and category. Use this to browse the knowledge base or discover article IDs before fetching full content with halo_get_kb_article. |
halo_search_kb |
Free | Read-only | [HaloPSA] Search the knowledge base for articles matching a query. Returns matching KB articles with titles and content. Use this to find existing documentation, troubleshooting guides, or standard operating procedures before creating tickets or responding to issues. |
halo_update_kb_article |
Pro | Write | [HaloPSA] Update an existing knowledge base article's fields such as title, content, or category. This modifies documentation visible to helpdesk staff. The JSON must include the article 'id' field. Use halo_list_kb_articles or halo_get_kb_article to find valid IDs and current field values. |
halo_create_kb_article parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
articleJson |
string | yes | JSON object representing the KB article to create. Example: {"name": "How to Reset Password", "article_content": "<p>Step 1...</p>", "type": 0}. Field names must match HaloPSA API field names. |
halo_get_kb_article parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
articleId |
integer | yes | The numeric HaloPSA KB article ID. Use halo_list_kb_articles or halo_search_kb to find valid IDs. |
halo_list_kb_articles parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). Start with 20 when exploring, increase for bulk data needs. |
halo_search_kb parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string | yes | Search query string. Matches against article titles and content. Use specific technical terms for better results. |
halo_update_kb_article parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
articleJson |
string | yes | JSON object with KB article fields to update. Must include 'id'. Example: {"id": 15, "name": "Updated Title", "article_content": "<p>Updated content...</p>"}. Field names must match HaloPSA API field names. |
Projects
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_project |
Pro | Write | [HaloPSA] Create a new project. This creates data visible to helpdesk staff. Returns the created project with its assigned ID. The JSON should include at minimum a name and client_id — use halo_list_clients to find valid client IDs. Follow up with halo_get_project to verify creation. |
halo_get_project |
Free | Read-only | [HaloPSA] Retrieve full details for a single project by numeric ID. Returns project info including tasks, milestones, budget, and team assignments. Requires a valid project ID — use halo_list_projects to find IDs. |
halo_list_project_tasks |
Free | Read-only | [HaloPSA] List tickets/tasks associated with a specific project. Returns paginated ticket summaries scoped to the project, including ID, summary, status, and assigned agent. Requires a valid project ID — use halo_list_projects to find IDs. |
halo_list_projects |
Free | Read-only | [HaloPSA] List projects with optional client filter. Returns project summaries including ID, name, status, and client. Use this to discover valid project IDs before fetching full details with halo_get_project. |
halo_update_project |
Pro | Write | [HaloPSA] Update an existing project's fields such as name, dates, status, or budget. This modifies data visible to helpdesk staff. The JSON must include the project 'id' field. Use halo_list_projects or halo_get_project to find valid IDs and current field values. |
halo_create_project parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
projectJson |
string | yes | JSON object representing the project to create. Example: {"name": "Office Migration", "client_id": 42, "start_date": "2024-01-01", "end_date": "2024-06-30"}. Field names must match HaloPSA API field names. |
halo_get_project parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
projectId |
integer | yes | The numeric HaloPSA project ID. Use halo_list_projects to find valid IDs. |
halo_list_project_tasks parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). Start with 20 when exploring, increase for bulk data needs. |
projectId |
integer | yes | The numeric HaloPSA project ID. Use halo_list_projects to find valid IDs. |
halo_list_projects parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_update_project parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
projectJson |
string | yes | JSON object with project fields to update. Must include 'id'. Example: {"id": 10, "name": "Updated Project", "status": "In Progress"}. Field names must match HaloPSA API field names. |
Reports
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_report_pdf |
Pro | Write | [HaloPSA] Generate a PDF from a saved report. Returns the PDF generation result. The JSON must include the report ID and any required parameters. Use halo_list_reports to discover available report IDs and their expected parameters. |
halo_get_report_parameters |
Free | Read-only | [HaloPSA] Discover the parameters/filters of a saved report so it can be run parameterized. Returns the report's full definition (GET api/Report/?includedetails=true). HaloPSA does NOT expose a dedicated parameter schema; the parameter/filter metadata lives in the returned `filters` array (each item has fieldname, data_type, data_type_group, rule types, and string/numeric rule values) plus the reporting-period fields (reportingperiod, reportingperiodstartdate, reportingperiodenddate, reportingperioddatefield). Pass the values you want as the `parameters` object to halo_run_report. |
halo_list_reports |
Free | Read-only | [HaloPSA] List all saved reports available in HaloPSA. Returns report IDs, names, and categories. Use this to discover valid report IDs before running reports with halo_run_report or generating PDFs with halo_create_report_pdf. |
halo_run_report |
Free | Read-only | [HaloPSA] Execute a saved report by its numeric ID and return the result rows as JSON (via GET api/Report/?loadreport=true). Optionally pass a `parameters` JSON object to apply report parameters server-side (the same parameter shape halo_create_report_pdf accepts). Each property becomes a report load query parameter — HaloPSA honors reportingperiod (int), reportingperiodstartdate, reportingperiodenddate, reportingperioddatefield, client_id, and invoice_id; unrecognized keys are ignored by Halo. Use halo_get_report_parameters to discover a report's filter/period parameters, and halo_list_reports to discover report IDs. |
halo_create_report_pdf parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
requestJson |
string | yes | JSON object with the PDF generation request. Must include the report ID. Example: {"report_id": 5, "parameters": {"start_date": "2024-01-01", "end_date": "2024-12-31"}}. Field names must match HaloPSA API field names. |
halo_get_report_parameters parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
reportId |
integer | yes | The numeric HaloPSA report ID. Use halo_list_reports to discover available report IDs. |
halo_run_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
parameters |
string | no | null | Optional JSON object of report parameters applied server-side, e.g. {"reportingperiodstartdate":"2024-01-01","reportingperiodenddate":"2024-12-31","client_id":42}. Property names must match HaloPSA report load parameter names (see halo_get_report_parameters). Omit to run with the report's baked-in filters. |
reportId |
integer | yes | The numeric HaloPSA report ID. Use halo_list_reports to discover available report IDs. |
SLAs
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_sla |
Free | Read-only | [HaloPSA] Get full SLA definition by ID including response time targets, resolution time targets, priority-based conditions, and applicable hours. Use halo_list_slas to discover available SLA IDs first. Useful for understanding SLA breach risks identified by halo_sla_breach_alerts. |
halo_list_slas |
Free | Read-only | [HaloPSA] List all SLA (Service Level Agreement) definitions configured in HaloPSA. Returns SLA names, IDs, response targets, and resolution targets. Use this to understand the SLA commitments before analyzing compliance with halo_sla_compliance_dashboard. |
halo_get_sla parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
slaId |
integer | yes | The numeric HaloPSA SLA ID. Use halo_list_slas to find valid IDs. |
Sites
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_site |
Pro | Write | [HaloPSA] Create a new site (physical location) record. This creates data visible to helpdesk staff. Returns the created site with its assigned ID. The JSON must include at minimum a name and client_id — use halo_list_clients to find valid client IDs. Follow up with halo_get_site to verify creation. |
halo_get_site |
Free | Read-only | [HaloPSA] Retrieve full details for a single site by numeric ID. Returns site info including name, address, client association, and contact details. Requires a valid site ID — use halo_list_sites to find IDs. |
halo_list_sites |
Free | Read-only | [HaloPSA] List sites (physical locations), optionally filtered by client. Returns site names, IDs, addresses, and client associations. Use this to discover valid site IDs for ticket creation or to see a client's locations. |
halo_update_site |
Pro | Write | [HaloPSA] Update an existing site's fields such as name, address, or contact information. This modifies data visible to helpdesk staff. The JSON must include the site 'id' field. Use halo_list_sites or halo_get_site to find valid IDs and current field values. |
halo_create_site parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
siteJson |
string | yes | JSON object representing the site to create. Must include 'name' and 'client_id'. Example: {"name": "Main Office", "client_id": 42, "line1": "123 Main St", "city": "Springfield"}. Field names must match HaloPSA API field names. |
halo_get_site parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
siteId |
integer | yes | The numeric HaloPSA site ID. Use halo_list_sites to find valid IDs. |
halo_list_sites parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
activeInactive |
string | no | null | Filter by active/inactive state, e.g. 'active' or 'inactive' (optional). |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
idOnly |
boolean | no | null | When true, returns only site IDs rather than full records (optional). |
includeActive |
boolean | no | null | When true, includes active sites in results (optional). |
includeAddress |
boolean | no | null | When true, includes site address details in results (optional). |
includeCustomFields |
boolean | no | null | When true, includes custom fields in results (optional). |
includeInactive |
boolean | no | null | When true, includes inactive sites in results (optional). |
includeNotes |
boolean | no | null | When true, includes site notes in results (optional). |
search |
string | no | null | Free-text search to match against site name and reference fields (optional). |
stockLocation |
boolean | no | null | When true, returns only stock-location sites (optional). |
halo_update_site parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
siteJson |
string | yes | JSON object with site fields to update. Must include 'id'. Example: {"id": 5, "name": "Updated Office", "line1": "456 New St"}. Field names must match HaloPSA API field names. |
Users
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_user |
Pro | Write | [HaloPSA] Create a new client end user (contact) record. This creates data visible to helpdesk staff and potentially end users. Returns the created user with their assigned ID. Requires first name, surname, display name, client ID, and site ID — use halo_list_clients to find valid client IDs and halo_list_sites to find valid site IDs. Some Halo instances may require additional parameters such as email address or phone number. Optionally pass username to set the portal login — some Halo instance configurations require this. Use halo_create_supplier_user to create a supplier-side contact. |
halo_get_user |
Free | Read-only | [HaloPSA] Retrieve full details for a single end user (contact) by numeric ID. Returns user info including name, email, phone, and associated client. Requires a valid user ID — use halo_search_users or halo_list_users to find IDs. Optionally scope to a specific client with clientId. |
halo_search_users |
Free | Read-only | [HaloPSA] Search end users (contacts) by name or email. Returns matching users ranked by relevance. Use this when you know a user's name or email but not their ID. Optionally scope to a specific client. Follow up with halo_get_user for full details. |
halo_update_user |
Pro | Write | [HaloPSA] Update an existing end user's (contact's) fields such as name, email, phone, or site assignment. This modifies data visible to helpdesk staff. Requires a valid user ID — use halo_search_users or halo_list_users to find IDs. |
halo_update_user_prefs |
Pro | Write | [HaloPSA] Update preferences for an end user (contact). This modifies user-level settings such as notification preferences, portal settings, or communication options. Provide the preference details as a JSON object including the user ID. Returns the updated preferences. |
halo_create_user parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID the user belongs to. Use halo_list_clients or halo_search_clients to find valid IDs. | |
displayName |
string | yes | User's combined display name (first + last name in one string). | |
emailAddress |
string | no | null | User's email address (optional but may be required depending on Halo instance configuration; recommended for notifications and portal access). |
firstName |
string | yes | User's first name. | |
lastName |
string | yes | User's last name. | |
phoneNumber |
string | no | null | User's phone number (optional but may be required by some instance configurations). |
siteId |
integer | yes | Site ID the user is located at. Use halo_list_sites to find valid IDs. | |
username |
string | no | null | Portal login / username (writes to the Halo `login` field). Some instance configurations require this. Optional. |
halo_get_user parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Scopes the lookup to a specific client. Use halo_list_clients or halo_search_clients to find valid IDs. |
userId |
integer | yes | The numeric HaloPSA user ID. Use halo_search_users or halo_list_users to find valid IDs. |
halo_search_users parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Scopes search to a specific client. Use halo_list_clients or halo_search_clients to find valid IDs. |
pageSize |
integer | no | 50 | Maximum number of results to return (default 50, max 200). Start with 20 when exploring, increase for comprehensive searches. |
query |
string | yes | Search query string. Matches against user name and email fields. |
halo_update_user parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
fieldsJson |
string | yes | JSON object with fields to update. Example: {"emailaddress": "new@example.com", "phonenumber": "555-1234"}. Field names must match HaloPSA API field names. | |
userId |
integer | yes | The numeric user ID to update. Use halo_search_users or halo_list_users to find valid IDs. |
halo_update_user_prefs parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
prefsJson |
string | yes | JSON object with user preference fields. Must include user 'id'. Example: {"id": 10, "email_notifications": true, "portal_access": true}. Field names must match HaloPSA API field names. |
Timesheets
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_timesheet |
Pro | Write | [HaloPSA] Create a new timesheet entry. This records time worked by an agent against a ticket or client. Returns the created timesheet entry with its assigned ID. Provide timesheet details as a JSON object. |
halo_get_my_timesheets |
Free | Read-only | [HaloPSA] Retrieve timesheet entries for the currently authenticated agent. Returns the agent's own time entries including hours, tickets, and billable status. Use this for personal timesheet review without needing to know the agent ID. |
halo_get_timesheet |
Free | Read-only | [HaloPSA] Retrieve a single timesheet entry by numeric ID. Returns full timesheet details including hours, agent, client, ticket, notes, and billable status. Requires a valid timesheet ID — use halo_list_timesheets to find IDs. |
halo_list_timesheets |
Free | Read-only | [HaloPSA] List individual time entries with optional filters for agent, client, and date range. Each entry includes the ticket, client, agent, hours worked, adjusted/billable hours, and charge type. Sourced from client-attributed timesheet events (not the org-wide capacity grid), so the agent and client filters and the date range are all honored. Use this to review time logged for a specific client or agent; use halo_timesheet_summary for aggregated totals. |
halo_create_timesheet parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
timesheetJson |
string | yes | JSON object with timesheet fields. Required: agent_id, hours. Optional: ticket_id, client_id, date, notes, billable. Example: {"agent_id": 5, "hours": 1.5, "ticket_id": 1234, "notes": "Troubleshooting network issue", "billable": true} |
halo_get_timesheet parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
timesheetId |
integer | yes | The numeric HaloPSA timesheet entry ID. Use halo_list_timesheets to find valid IDs. |
halo_list_timesheets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients to find valid IDs. |
endDate |
string | no | null | End date filter in yyyy-MM-dd format (optional; defaults to today). Shows entries up to this date. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
startDate |
string | no | null | Start date filter in yyyy-MM-dd format (optional; defaults to one month ago). Shows entries from this date forward. |
Lookups
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_lookup_values |
Free | Read-only | [HaloPSA] Retrieve values for a specific lookup list by numeric lookup ID. Returns the configured values for drop-down fields such as impact, urgency, or custom lookups. Use this when a ticket field references a lookup ID and you need to see the available options. |
halo_list_categories |
Free | Read-only | [HaloPSA] List all ticket categories configured in the system. Returns category IDs and names used for classifying tickets. Use this to discover valid category values before creating or filtering tickets with halo_create_ticket or halo_list_tickets. |
halo_list_currencies |
Free | Read-only | [HaloPSA] List all currencies configured in HaloPSA. Returns currency codes, names, symbols, and exchange rates. Use this to discover valid currency options for invoices, quotations, and financial reporting across multi-currency environments. |
halo_list_outcomes |
Free | Read-only | [HaloPSA] List all action outcome types configured in the system. Returns outcome IDs and names such as 'note', 'email', and 'timeentry'. Use this to discover valid outcome values before adding actions to tickets with halo_add_action. |
halo_list_priorities |
Free | Read-only | [HaloPSA] List all priority levels configured in the system. Returns priority IDs, names, and colour codes. Use this to discover valid priority IDs before creating or updating tickets with halo_create_ticket or halo_update_ticket. |
halo_list_statuses |
Free | Read-only | [HaloPSA] List all ticket statuses configured in the system. Returns status IDs and names used for ticket workflow transitions. Use this to discover valid status IDs before filtering tickets with halo_list_tickets or updating tickets with halo_update_ticket. |
halo_list_tax_rules |
Free | Read-only | [HaloPSA] List all tax rules configured in HaloPSA. Returns tax rule IDs, names, and conditions that determine how taxes are applied to invoices and quotations. Use this to understand the tax calculation logic for different regions or product types. |
halo_list_taxes |
Free | Read-only | [HaloPSA] List all tax configurations defined in HaloPSA. Returns tax IDs, names, and rates. Use this to discover valid tax settings for invoices, quotations, and billing. Needed when creating or reviewing financial documents. |
halo_get_lookup_values parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
lookupId |
integer | yes | The numeric HaloPSA lookup ID. This is the ID of the lookup list, not an individual value. Check field definitions from halo_list_ticket_type_fields or halo_list_custom_fields to find lookup IDs. |
halo_list_taxes parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
kashflowTenantId |
integer | no | null | Filter by Kashflow tenant ID (optional). |
qboCompanyId |
string | no | null | Filter by QuickBooks Online company ID (optional). |
relatedTo |
integer | no | null | Filter by the related-to entity ID (optional). |
xeroTenantId |
string | no | null | Filter by Xero tenant ID (optional). |
Categories
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_category |
Pro | Write | [HaloPSA] Create a new ticket category. The `value` parameter is the label Halo shows in the category picker; use `>` as a separator to build hierarchy up to 3 levels deep (e.g. `Email>Outlook>PST`). `categoryType` controls whether this is a regular ticket category (1, default) or a resolution category (2). Returns the created category with its assigned ID. Halo tickets have four independent category slots (`categoryid_1` through `categoryid_4`); this tool just creates the category record — assign it to a ticket via `halo_update_ticket` using the `categoryid_N` integer field. This does not include subcategory hierarchy beyond three `>`-separated levels. |
halo_delete_category |
Pro | Destructive | [HaloPSA] Permanently delete a category record by numeric ID. This cannot be undone. Any tickets currently referencing this category via `categoryid_1`/`_2`/`_3`/`_4` may end up with a dangling category id — prefer marking the category inactive via halo_update_category ({"inactive": true}) when possible. Use halo_list_categories to find valid IDs. |
halo_update_category |
Pro | Write | [HaloPSA] Update an existing category. Provide a JSON object of fields to change. Valid keys: `value` (use `>` for hierarchy), `type_id` (1=category, 2=resolution), `priority_id`, `sla_id`, `category_group_id`, `note`, `inactive`. Example: {"value": "Email>Outlook", "priority_id": 3}. Field names must match HaloPSA API field names. |
halo_create_category parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
categoryGroupId |
integer | no | null | Optional category group ID. |
categoryType |
integer | no | 1 | Halo category type. 1 = regular ticket category (default). 2 = resolution category used when closing tickets. |
note |
string | no | null | Optional internal note on this category. |
priorityId |
integer | no | null | Default priority ID to apply when this category is selected on a ticket. Use halo_list_priorities to find valid IDs. |
slaId |
integer | no | null | Default SLA ID. Use halo_list_slas to find valid IDs. |
value |
string | yes | Category label. Use `>` to create hierarchy up to 3 levels deep (e.g. Email>Outlook>PST). |
halo_delete_category parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
categoryId |
integer | yes | The numeric category ID to delete. Use halo_list_categories to find valid IDs. |
halo_update_category parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
categoryId |
integer | yes | The numeric category ID to update. Use halo_list_categories to find valid IDs. | |
fieldsJson |
string | yes | JSON object with fields to update. Example: {"value": "Email>Outlook", "priority_id": 3}. Field names must match HaloPSA API field names. |
Suppliers
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_supplier |
Pro | Write | [HaloPSA] Create a new supplier/vendor record. This adds a supplier to the system for procurement and contract management. Returns the created supplier with its assigned ID. Provide supplier details as a JSON object. |
halo_create_supplier_user |
Pro | Write | [HaloPSA] Create a new supplier-side user (contact) attached to an existing supplier. Posts to api/Users with the Halo UI-style supplier user payload (isuserdetails=true, embedded supplier object with lookupdisplay). Use halo_list_suppliers / halo_get_supplier to find a valid supplierId and the matching supplierName. Returns the created supplier user with their assigned ID. |
halo_get_supplier |
Free | Read-only | [HaloPSA] Retrieve a single supplier by numeric ID. Returns full supplier details including name, address, contact information, and linked contracts. Requires a valid supplier ID — use halo_list_suppliers to find IDs. |
halo_list_suppliers |
Free | Read-only | [HaloPSA] List suppliers/vendors with optional filters. Returns supplier summaries including ID, name, contact details, and account status. Use this to browse suppliers or find valid supplier IDs for purchase orders and contracts. |
halo_create_supplier parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
supplierJson |
string | yes | JSON object with supplier fields. Required: name. Optional: address, phone, email, website, account_number, notes. Example: {"name": "Acme Hardware Inc.", "email": "sales@acmehw.com", "phone": "555-0100"} |
halo_create_supplier_user parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
displayName |
string | yes | Combined display name (first + last name in one string). | |
emailAddress |
string | yes | Supplier user's email address. | |
firstName |
string | yes | Supplier user's first name. | |
inactive |
boolean | no | false | Mark the supplier user inactive on creation (default false). |
lastName |
string | yes | Supplier user's last name. | |
sendAccountsEmails |
boolean | no | false | Send accounting / billing notification emails to this contact (default false). |
sendWelcomeEmail |
boolean | no | false | Send a Halo welcome email when the user is created (default false). |
supplierId |
integer | yes | ID of the supplier this user belongs to. Use halo_list_suppliers to find valid IDs. | |
supplierName |
string | yes | Display name of the supplier this user belongs to (must match the supplier record). Use halo_get_supplier to retrieve. | |
telPref |
integer | no | 0 | Telephone preference flag — Halo internal numeric code (default 0). |
title |
string | no | "" | Job title (optional). |
halo_get_supplier parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
supplierId |
integer | yes | The numeric HaloPSA supplier ID. Use halo_list_suppliers to find valid IDs. |
halo_list_suppliers parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count |
integer | no | 50 | Number of results to return (default 50). |
Quotations
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_add_quotation_lines |
Pro | Write | [HaloPSA] Append NEW line items to an existing quotation (e.g. bulk quote-import workflows). Provide the quotation id plus the new lines — the tool stamps the parent link ('qhid') onto each and forces INSERT semantics by dropping any line-level 'id' you pass, so an existing line is never overwritten. To modify existing lines instead, use halo_update_quotation_lines. |
halo_approve_quotation |
Pro | Write | [HaloPSA] Approve or reject a quotation. This changes the quotation status and may trigger downstream workflows such as invoice or sales order creation. Provide the approval details as a JSON object. |
halo_create_quotation |
Pro | Write | [HaloPSA] Create a new quotation/quote. This creates a sales document visible to staff and optionally clients. Returns the created quotation with its assigned ID. Provide quotation details as a JSON object — use halo_list_clients to find valid client IDs. IMPORTANT: use HaloPSA's real field names on line items or the sell price silently drops to zero. On each line, the SELL price is 'baseprice' (unit list price) and/or 'current_price'; the QUANTITY is 'current_quantity'; the unit COST is 'costprice'. Halo does NOT recognise 'unit_price' or 'quantity' and will ignore them, leaving the line at $0 revenue. |
halo_get_quotation |
Free | Read-only | [HaloPSA] Retrieve a single quotation by numeric ID. Returns full quotation details including line items, pricing, client, and approval status. Requires a valid quotation ID — use halo_list_quotations to find IDs. |
halo_list_quotations |
Free | Read-only | [HaloPSA] List quotations/quotes with optional filters. Returns quotation summaries including ID, client, status, total amount, and validity dates. Use this to browse quotes or find specific quotations before fetching full details with halo_get_quotation. |
halo_update_quotation_lines |
Pro | Write | [HaloPSA] Update EXISTING line items on a quotation (change pricing/quantity on lines that already exist). Use halo_add_quotation_lines to append brand-new lines. Provide the quotation id plus the lines to change — use halo_get_quotation to see current line ids and their fields first. |
halo_view_quotation |
Free | Read-only | [HaloPSA] View a quotation in a rendered/presentable format. Returns the quotation formatted for viewing, including all line items, totals, and client details. Provide the request details as a JSON object including the quotation ID. Use this when you need a presentation-ready view of a quote rather than raw data. |
halo_add_quotation_lines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linesJson |
string | yes | JSON object {"id": <quotationId>, "lines": [ ... ]} — 'id' (alias 'quotation_id') is the quote's numeric id from halo_get_quotation. Each new line uses Halo field names: name or item_id (the item), current_quantity (qty), baseprice (unit sell price), current_price, costprice (unit cost), description. Any line-level 'id' is ignored (these are new rows). Example: {"id": 500, "lines": [{"name": "Firewall", "current_quantity": 1, "baseprice": 2500, "current_price": 2500, "costprice": 1800}]} |
halo_approve_quotation parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
approvalJson |
string | yes | JSON object with approval details. Required: id (quotation ID), approved (true/false). Optional: notes. Example: {"id": 1, "approved": true, "notes": "Approved by management"} |
halo_create_quotation parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
quotationJson |
string | yes | JSON object with quotation fields. Required: client_id (int). Optional header fields: site_id, expiry_date, note. Optional 'lines' array of QuotationDetail objects. Each line uses Halo field names: name or item_id (the item), current_quantity (qty), baseprice (unit sell price), current_price (current unit price), costprice (unit cost), description. Example: {"client_id": 1, "lines": [{"name": "Firewall setup", "current_quantity": 1, "baseprice": 2500, "current_price": 2500, "costprice": 1800}]} |
halo_get_quotation parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
quotationId |
integer | yes | The numeric HaloPSA quotation ID. Use halo_list_quotations to find valid IDs. |
halo_list_quotations parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
closed |
boolean | no | null | Filter to only closed quotations (optional). |
open |
boolean | no | null | Filter to only open quotations (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_update_quotation_lines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linesJson |
string | yes | JSON object {"id": <quotationId>, "lines": [ ... ]} — 'id' (alias 'quotation_id') is the quote's numeric id from halo_get_quotation; the tool stamps it as 'qhid' (parent link) onto every line so Halo persists them. Each line must include its existing line 'id' and the Halo fields to change: current_quantity (qty), baseprice (unit sell price), current_price, costprice (unit cost). Halo ignores 'unit_price'/'quantity'. Example: {"id": 500, "lines": [{"id": 10, "current_quantity": 2, "baseprice": 1200}]}. Advanced: pass a flat JSON array of line objects that each already carry 'qhid' to forward it unchanged. |
halo_view_quotation parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
requestJson |
string | yes | JSON object with view request details. Required: id (quotation ID). Example: {"id": 1}. Field names must match HaloPSA API field names. |
Items & Stock
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_item |
Pro | Write | [HaloPSA] Create a new product/item in the catalogue. This adds a new sellable or trackable item. Returns the created item with its assigned ID. Provide item details as a JSON object. |
halo_create_item_account_link |
Pro | Write | [HaloPSA] Create a link between an item and an accounting system account. This maps a product to a revenue or expense account for financial reporting. Provide link details as a JSON object. |
halo_create_item_group |
Pro | Write | [HaloPSA] Create a new item group/category for organising products in the catalogue. Returns the created group with its assigned ID. Provide group details as a JSON object. |
halo_create_item_supplier_link |
Pro | Write | [HaloPSA] Link a supplier to an item/product. This creates a procurement relationship between a supplier and an item, optionally with supplier-specific pricing. Provide link details as a JSON object. |
halo_create_stock_bin |
Pro | Write | [HaloPSA] Create a new stock bin/warehouse location for storing inventory. Returns the created bin with its assigned ID. Provide bin details as a JSON object. |
halo_delete_item_group |
Pro | Destructive | [HaloPSA] Delete an item group by numeric ID. This permanently removes the group. Items in the group are not deleted but become ungrouped. Use with caution — this cannot be undone. Requires a valid group ID — use halo_list_item_groups to find IDs. |
halo_delete_item_supplier_link |
Pro | Destructive | [HaloPSA] Remove a supplier link from an item by numeric link ID. This removes the procurement relationship between a supplier and an item. Use with caution — this cannot be undone. Use halo_list_item_suppliers to find valid link IDs. |
halo_delete_stock_bin |
Pro | Destructive | [HaloPSA] Delete a stock bin/warehouse location by numeric ID. This permanently removes the bin. Stock items in the bin should be transferred first. Use with caution — this cannot be undone. Requires a valid bin ID — use halo_list_stock_bins to find IDs. |
halo_get_item |
Free | Read-only | [HaloPSA] Retrieve a single product/item by numeric ID. Returns full item details including name, SKU, description, pricing, and stock levels. Requires a valid item ID — use halo_list_items to find IDs. |
halo_get_item_group |
Free | Read-only | [HaloPSA] Retrieve a single item group by numeric ID. Returns full group details including name, description, and linked items. Requires a valid group ID — use halo_list_item_groups to find IDs. |
halo_get_stock_bin |
Free | Read-only | [HaloPSA] Retrieve a single stock bin/warehouse location by numeric ID. Returns full bin details including name, address, and current stock summary. Requires a valid bin ID — use halo_list_stock_bins to find IDs. |
halo_list_item_account_links |
Free | Read-only | [HaloPSA] List accounting integation links for items. Returns mappings between items and accounting system accounts (e.g., revenue accounts, expense accounts). Use this to review or audit how items are mapped to your accounting software. |
halo_list_item_groups |
Free | Read-only | [HaloPSA] List item groups/categories used to organise products in the catalogue. Returns group IDs, names, and hierarchy. Use this to discover valid group IDs for filtering items or assigning new items to groups. |
halo_list_item_stock |
Free | Read-only | [HaloPSA] List stock levels for items/products. Returns current stock quantities, locations, and reorder thresholds. Use this to check inventory levels or identify items that need restocking. |
halo_list_item_stock_history |
Free | Read-only | [HaloPSA] List stock level history for items, showing how inventory quantities have changed over time. Optionally filter by item ID or specific stock record. Use this for inventory trend analysis and auditing stock adjustments. |
halo_list_item_suppliers |
Free | Read-only | [HaloPSA] List supplier links for items/products. Returns which suppliers provide which items, including supplier-specific pricing and SKUs. Use this to review procurement options or find alternative suppliers for items. |
halo_list_items |
Free | Read-only | [HaloPSA] List products/items in the catalogue with optional search filter. Returns item summaries including ID, name, SKU, price, and category. Use this to browse the product catalogue or find items for quotations, invoices, or purchase orders. |
halo_list_stock_bins |
Free | Read-only | [HaloPSA] List stock bin/warehouse locations where inventory is stored. Returns bin IDs, names, and location details. Use this to discover valid storage locations for stock management and transfers. |
halo_list_stock_traces |
Free | Read-only | [HaloPSA] List stock trace records showing the movement history of inventory items. Returns transfer records including source, destination, quantity, and timestamps. Use this for inventory auditing and tracking item movements between bins or locations. |
halo_create_item parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
itemJson |
string | yes | JSON object with item fields. Required: name. Optional: sku, description, unit_price, cost_price, category, stock_enabled. Example: {"name": "USB-C Hub", "sku": "HUB-001", "unit_price": 49.99} |
halo_create_item_account_link parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linkJson |
string | yes | JSON object with account link fields. Required: item_id, account_id. Optional: account_type. Example: {"item_id": 1, "account_id": 100, "account_type": "revenue"} |
halo_create_item_group parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
groupJson |
string | yes | JSON object with item group fields. Required: name. Optional: description, parent_id. Example: {"name": "Networking Equipment", "description": "Switches, routers, and access points"} |
halo_create_item_supplier_link parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linkJson |
string | yes | JSON object with supplier link fields. Required: item_id, supplier_id. Optional: supplier_sku, cost_price. Example: {"item_id": 1, "supplier_id": 5, "cost_price": 29.99} |
halo_create_stock_bin parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
binJson |
string | yes | JSON object with stock bin fields. Required: name. Optional: address, description, site_id. Example: {"name": "Main Warehouse", "description": "Primary storage location"} |
halo_delete_item_group parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
groupId |
integer | yes | The numeric HaloPSA item group ID to delete. Use halo_list_item_groups to find valid IDs. |
halo_delete_item_supplier_link parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linkId |
integer | yes | The numeric item-supplier link ID to delete. Use halo_list_item_suppliers to find valid IDs. |
halo_delete_stock_bin parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
binId |
integer | yes | The numeric HaloPSA stock bin ID to delete. Use halo_list_stock_bins to find valid IDs. |
halo_get_item parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
itemId |
integer | yes | The numeric HaloPSA item ID. Use halo_list_items to find valid IDs. |
halo_get_item_group parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
groupId |
integer | yes | The numeric HaloPSA item group ID. Use halo_list_item_groups to find valid IDs. |
halo_get_stock_bin parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
binId |
integer | yes | The numeric HaloPSA stock bin ID. Use halo_list_stock_bins to find valid IDs. |
halo_list_item_groups parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_item_stock parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count |
integer | no | 50 | Number of results to return (default 50). |
itemId |
integer | no | null | Filter by item ID (optional). Narrows results to stock for a specific item. |
halo_list_item_stock_history parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
itemId |
integer | no | null | Filter by item ID (optional). Returns stock history for a specific item. Use halo_list_items to find valid IDs. |
itemStockId |
integer | no | null | Filter by item stock record ID (optional). Returns history for a specific stock entry. |
halo_list_items parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
count |
integer | no | 50 | Number of results to return (default 50). |
search |
string | no | null | Search items by name or description (optional). |
halo_list_stock_bins parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Purchase Orders
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_confirm_receipt |
Pro | Destructive | [HaloPSA] Confirm receipt of goods on a purchase order. This updates stock levels and marks items as received. Provide receipt details as a JSON object — use halo_get_purchase_order to see current PO line items. |
halo_create_purchase_order |
Pro | Write | [HaloPSA] Create a new purchase order. This creates a procurement document for ordering from suppliers. Returns the created PO with its assigned ID. Provide PO details as a JSON object — use halo_list_suppliers to find valid supplier IDs. |
halo_get_purchase_order |
Free | Read-only | [HaloPSA] Retrieve a single purchase order by numeric ID. Returns full PO details including line items, supplier, amounts, and delivery status. Requires a valid PO ID — use halo_list_purchase_orders to find IDs. |
halo_list_purchase_orders |
Free | Read-only | [HaloPSA] List purchase orders with optional filters. Returns PO summaries including ID, supplier, status, total amount, and date. Use this to browse procurement history or find specific purchase orders. |
halo_confirm_receipt parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
receiptJson |
string | yes | JSON object with receipt confirmation details. Required: id (purchase order ID). Optional: lines (array with received quantities). Example: {"id": 1, "lines": [{"id": 10, "quantity_received": 10}]} |
halo_create_purchase_order parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
purchaseOrderJson |
string | yes | JSON object with purchase order fields. Required: supplier_id. Optional: lines (array of line items), notes, delivery_date. Example: {"supplier_id": 1, "lines": [{"item_id": 5, "quantity": 10, "unit_price": 25.00}]} |
halo_get_purchase_order parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
purchaseOrderId |
integer | yes | The numeric HaloPSA purchase order ID. Use halo_list_purchase_orders to find valid IDs. |
halo_list_purchase_orders parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
awaitingApproval |
boolean | no | null | Filter to POs awaiting approval (optional). |
awaitingStock |
boolean | no | null | Filter to POs awaiting stock (optional). |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
closed |
boolean | no | null | Filter to closed POs (optional). |
deliverToUs |
boolean | no | null | Filter to POs delivered to us (optional). |
deliverToUserSalesOrderId |
integer | no | null | Filter by the sales order ID a PO delivers to a user for (optional). |
myApprovals |
boolean | no | null | Filter to POs awaiting the current user's approval (optional). |
open |
boolean | no | null | Filter to open POs (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
poStatus |
string | no | null | Filter by PO status (optional). |
salesOrderId |
integer | no | null | Filter by linked sales order ID (optional). |
siteId |
integer | no | null | Filter by site ID (optional). |
supplierId |
integer | no | null | Filter by supplier ID (optional). Use halo_list_suppliers to find valid IDs. |
ticketId |
integer | no | null | Filter by linked ticket ID (optional). |
unsent |
boolean | no | null | Filter to unsent POs (optional). |
userId |
integer | no | null | Filter by user ID (optional). |
Sales Orders
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_sales_order |
Pro | Write | [HaloPSA] Create a new sales order. This creates a sales document for tracking client orders. Returns the created order with its assigned ID. Provide order details as a JSON object — use halo_list_clients to find valid client IDs and halo_list_items for product IDs. |
halo_get_sales_order |
Free | Read-only | [HaloPSA] Retrieve a single sales order by numeric ID. Returns full order details including line items, client, amounts, and fulfilment status. Requires a valid sales order ID — use halo_list_sales_orders to find IDs. |
halo_list_sales_orders |
Free | Read-only | [HaloPSA] List sales orders with optional filters. Returns order summaries including ID, client, status, total amount, and date. Use this to browse sales history or find specific orders. |
halo_create_sales_order parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
salesOrderJson |
string | yes | JSON object with sales order fields. Required: client_id. Optional: lines (array of line items), notes, delivery_date. Example: {"client_id": 1, "lines": [{"item_id": 5, "quantity": 2, "unit_price": 499.99}]} |
halo_get_sales_order parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
salesOrderId |
integer | yes | The numeric HaloPSA sales order ID. Use halo_list_sales_orders to find valid IDs. |
halo_list_sales_orders parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
closed |
boolean | no | null | Filter to closed sales orders (optional). |
needsConsigning |
boolean | no | null | Filter to sales orders that need consigning (optional). |
needsInvoicing |
boolean | no | null | Filter to sales orders that need invoicing (optional). |
needsOrdering |
boolean | no | null | Filter to sales orders that need ordering (optional). |
open |
boolean | no | null | Filter to open sales orders (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
quoteStatus |
string | no | null | Filter by quote status (optional). |
readyForInvoicing |
boolean | no | null | Filter to sales orders ready for invoicing (optional). |
siteId |
integer | no | null | Filter by site ID (optional). |
ticketId |
integer | no | null | Filter by linked ticket ID (optional). |
topLevelId |
integer | no | null | Filter by top-level (parent) ID (optional). |
userId |
integer | no | null | Filter by user ID (optional). |
Finance
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_expense |
Pro | Write | [HaloPSA] Create a new expense record. This submits an expense for tracking and approval. Returns the created expense with its assigned ID. Provide expense details as a JSON object. |
halo_create_prepay_entry |
Pro | Write | [HaloPSA] Create a new prepay/retainer entry for a client. This adds or deducts from a client's prepaid balance. Returns the created entry. Provide entry details as a JSON object — use halo_list_clients to find valid client IDs. |
halo_create_recurring_invoice |
Pro | Write | [HaloPSA] Create a new recurring invoice template for automated billing. Requires client and item details in JSON. Use halo_list_clients to find clientId, halo_list_items for available products. WARNING: Creates a live billing template that will generate invoices when processed. |
halo_create_software_licence |
Pro | Write | [HaloPSA] Create a new software licence record. This tracks a software licence for asset and compliance management. Returns the created licence with its assigned ID. Provide licence details as a JSON object. |
halo_get_recurring_invoice |
Free | Read-only | [HaloPSA] Retrieve a single recurring invoice by numeric ID. Returns full recurring invoice details including schedule, line items, next invoice date, and client. Requires a valid recurring invoice ID — use halo_list_recurring_invoices to find IDs, or call this tool directly with a known recurring invoice ID. |
halo_get_software_licence |
Free | Read-only | [HaloPSA] Retrieve a single software licence by numeric ID. Returns full licence details including software name, key, expiry, seats, and assigned client/assets. Requires a valid licence ID — use halo_list_software_licences to find IDs. |
halo_list_billing_lines |
Free | Read-only | [HaloPSA] List billing line items with optional filters by client, contract, and date range. Returns individual billing entries showing what has been billed. Use halo_list_invoices for invoice-level data, or halo_revenue_leakage_scan for automated billing gap analysis. |
halo_list_expenses |
Free | Read-only | [HaloPSA] List expense records with optional filters. Returns expense entries including ID, amount, date, category, agent, and client. Use this to review submitted expenses for approval or reporting. |
halo_list_prepay_history |
Free | Read-only | [HaloPSA] List client prepay/retainer history with optional filters. Returns prepay transactions including date, amount, balance, and type (credit/debit). Use this to review a client's prepaid hours or credit balance history. |
halo_list_recurring_invoices |
Free | Read-only | [HaloPSA] List recurring invoice templates with optional client filter. Returns template details including billing frequency, line items, and next invoice date. Use halo_get_recurring_invoice for full details of a specific template. |
halo_list_software_licences |
Free | Read-only | [HaloPSA] List software licence records with optional client filter. Returns licence summaries including ID, software name, key, expiry date, and assigned client. Use this to review licence inventory or check for upcoming renewals. |
halo_process_recurring_invoices |
Pro | Destructive | [HaloPSA] Trigger invoice generation from one or more recurring invoice templates by their IDs. The API accepts an array of recurring invoice IDs to process. Use halo_list_recurring_invoices to find template IDs. WARNING: This creates real, irreversible client-facing invoices. As a safety guard you MUST pass the SAME set of IDs in the confirmation parameter to authorize processing. |
halo_update_recurring_invoice_lines |
Pro | Write | [HaloPSA] Update line items on an existing recurring invoice template. Halo's /RecurringInvoice/updatelines endpoint takes a flat array of line objects that each carry recurring_invoice_id (the INTERNAL id of the parent template — a NEGATIVE integer, e.g. -27, from halo_get_recurring_invoice, NOT the on-screen display number). This tool extracts recurring_invoice_id from your input and stamps it onto every line for you. Call halo_get_recurring_invoice first to read the current line ids. Changes take effect on the next invoice generation cycle. |
halo_create_expense parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
expenseJson |
string | yes | JSON object with expense fields. Required: amount, description. Optional: agent_id, client_id, date, category, receipt (base64). Example: {"amount": 45.50, "description": "Parking for on-site visit", "client_id": 1, "category": "Travel"} |
halo_create_prepay_entry parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
entryJson |
string | yes | JSON object with prepay entry fields. Required: client_id, amount. Optional: type ('credit' or 'debit'), notes, date. Example: {"client_id": 1, "amount": 500.00, "type": "credit", "notes": "Monthly retainer top-up"} |
halo_create_recurring_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
invoiceJson |
string | yes | JSON object with recurring invoice fields. Required: client_id. Optional: schedule, line_items, start_date, end_date, notes. Example: {"client_id": 1, "schedule": "monthly", "line_items": [{"description": "Managed Services", "amount": 500}]} |
halo_create_software_licence parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
licenceJson |
string | yes | JSON object with software licence fields. Required: name. Optional: key, client_id, expiry_date, seats, vendor, notes. Example: {"name": "Microsoft 365 Business Premium", "key": "XXXXX-XXXXX", "client_id": 1, "seats": 25, "expiry_date": "2027-01-01"} |
halo_get_recurring_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
recurringInvoiceId |
integer | yes | The numeric HaloPSA recurring invoice ID. |
halo_get_software_licence parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
licenceId |
integer | yes | The numeric HaloPSA software licence ID. Use halo_list_software_licences to find valid IDs. |
halo_list_billing_lines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients to find valid IDs. |
contractId |
integer | no | null | Filter by contract ID (optional). Use halo_list_contracts to find valid IDs. |
endDate |
string | no | null | End date filter in yyyy-MM-dd format (optional). Shows entries up to this date. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
startDate |
string | no | null | Start date filter in yyyy-MM-dd format (optional). Shows entries from this date forward. |
halo_list_expenses parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | Filter by end date in yyyy-MM-dd format (optional). Returns expenses on or before this date. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
startDate |
string | no | null | Filter by start date in yyyy-MM-dd format (optional). Returns expenses on or after this date. |
halo_list_prepay_history parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients to find valid IDs. |
contractId |
integer | no | null | Filter by contract ID (optional). Use halo_list_contracts to find valid IDs. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_recurring_invoices parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients to find valid IDs. |
count |
integer | no | 50 | Number of results to return (default 50). |
halo_list_software_licences parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients to find valid IDs. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_process_recurring_invoices parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
confirmation |
string | yes | Confirmation guard. Must contain the SAME recurring invoice IDs as recurringInvoiceIds (re-type the same comma-separated IDs) to authorize this irreversible invoice generation. Example: "1,2,3" | |
recurringInvoiceIds |
string | yes | Comma-separated list of recurring invoice IDs to process. Use halo_list_recurring_invoices to find valid IDs. Example: "1,2,3" |
halo_update_recurring_invoice_lines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linesJson |
string | yes | JSON object with the parent template id and its updated lines. Required: recurring_invoice_id (the INTERNAL negative id from halo_get_recurring_invoice — the on-screen display number will NOT work), lines (array of line-item objects, each typically carrying its own line 'id' plus the fields to change). Example: {"recurring_invoice_id": -27, "lines": [{"id": 5, "unit_price": 600}]}. Advanced: you may instead pass a flat JSON array of line objects that already each include recurring_invoice_id. |
Change Management
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_cab_meeting |
Pro | Write | [HaloPSA] Create a new CAB meeting. This schedules a Change Advisory Board meeting for change management review. Returns the created meeting with its assigned ID. Provide meeting details as a JSON object. |
halo_create_release |
Pro | Write | [HaloPSA] Create a new release for change management. This creates a release record to group and track related changes. Returns the created release with its assigned ID. Provide release details as a JSON object. |
halo_get_cab_meeting |
Free | Read-only | [HaloPSA] Retrieve a single CAB meeting by numeric ID. Returns full meeting details including agenda, attendees, decisions, and linked change requests. Requires a valid CAB meeting ID — use halo_list_cab_meetings to find IDs. |
halo_get_release |
Free | Read-only | [HaloPSA] Retrieve a single release by numeric ID. Returns full release details including linked changes, schedule, and deployment plan. Requires a valid release ID — use halo_list_releases to find IDs. |
halo_list_cab_meetings |
Free | Read-only | [HaloPSA] List Change Advisory Board (CAB) meetings with pagination. Returns meeting summaries including ID, date, attendees, and agenda items. Use this to review upcoming or past CAB meetings for change management governance. |
halo_list_cab_members |
Free | Read-only | [HaloPSA] List all Change Advisory Board members. Returns member details including name, role, and contact information. Use this to see who participates in change management decisions. |
halo_list_cab_roles |
Free | Read-only | [HaloPSA] List all CAB roles. Returns role definitions used in Change Advisory Board membership. Use this to understand available roles when managing CAB membership. |
halo_list_release_types |
Free | Read-only | [HaloPSA] List all available release types. Returns type IDs and names used when creating or categorizing releases. Use this to discover valid release type IDs before calling halo_create_release. |
halo_list_releases |
Free | Read-only | [HaloPSA] List releases with optional filters. Returns release summaries including ID, name, status, and scheduled dates. Use this to browse planned, in-progress, or completed releases for change management tracking. |
halo_create_cab_meeting parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cabMeetingJson |
string | yes | JSON object with CAB meeting fields. Optional: date, agenda, attendees. Example: {"date": "2026-04-01T10:00:00", "agenda": "Review Q2 change requests"} |
halo_create_release parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
releaseJson |
string | yes | JSON object with release fields. Required: name. Optional: description, release_type_id, scheduled_start, scheduled_end. Example: {"name": "March Security Patches", "release_type_id": 1, "scheduled_start": "2026-04-01"} |
halo_get_cab_meeting parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cabMeetingId |
integer | yes | The numeric HaloPSA CAB meeting ID. Use halo_list_cab_meetings to find valid IDs. |
halo_get_release parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
releaseId |
integer | yes | The numeric HaloPSA release ID. Use halo_list_releases to find valid IDs. |
halo_list_cab_meetings parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_releases parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
status |
string | no | null | Filter by release status (optional). |
Service Catalog
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_service_status |
Pro | Write | [HaloPSA] Create a new service status entry. This records the current operational state of a service (e.g., operational, degraded, outage). Returns the created status entry. Provide status details as a JSON object — use halo_list_services to find valid service IDs. |
halo_get_service |
Free | Read-only | [HaloPSA] Retrieve a single service by numeric ID. Returns full service details including description, SLA, dependencies, and current operational status. Requires a valid service ID — use halo_list_services to find IDs. |
halo_list_service_categories |
Free | Read-only | [HaloPSA] List all service categories. Returns category IDs and names used to organize the service catalogue. Use this to discover valid categories for filtering services with halo_list_services. |
halo_list_service_statuses |
Free | Read-only | [HaloPSA] List service status history with optional service filter. Returns status entries including timestamp, status value, and notes. Use this to review the operational history of a service or check current service health. |
halo_list_services |
Free | Read-only | [HaloPSA] List services in the service catalogue with optional filters. Returns service summaries including ID, name, category, and current status. Use this to browse available services or find specific services for status tracking. |
halo_create_service_status parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
statusJson |
string | yes | JSON object with service status fields. Required: service_id, status. Optional: notes, start_date. Example: {"service_id": 1, "status": "degraded", "notes": "Intermittent connectivity issues"} |
halo_get_service parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
serviceId |
integer | yes | The numeric HaloPSA service ID. Use halo_list_services to find valid IDs. |
halo_list_service_statuses parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
serviceId |
integer | no | null | Filter by service ID (optional). Narrows results to statuses for a specific service. Use halo_list_services to find valid IDs. |
halo_list_services parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
assetIds |
string | no | null | Filter by asset IDs, comma-separated (optional). |
count |
integer | no | 50 | Number of results to return (default 50). |
includeChildServices |
boolean | no | null | Include child services in the results (optional). |
includeStatusInfo |
boolean | no | null | Include status info in the results (optional). |
monitoredOnly |
boolean | no | null | Return only monitored services (optional). |
relatedServicesOnly |
boolean | no | null | Return only related services (optional). |
search |
string | no | null | Free-text search term to filter services (optional). |
serviceCategoryId |
integer | no | null | Filter by service category ID (use halo_list_service_categories to find IDs). |
serviceCategoryIds |
string | no | null | Filter by service category IDs, comma-separated (optional). |
serviceStatusIds |
string | no | null | Filter by service status IDs, comma-separated (optional). |
subscribedOnly |
boolean | no | null | Return only subscribed services (optional). |
ticketId |
integer | no | null | Filter by linked ticket ID (optional). |
userId |
integer | no | null | Filter by user ID (optional). |
Scheduling
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_appointment |
Pro | Write | [HaloPSA] Create a new appointment/calendar entry. This schedules a meeting or on-site visit visible in agent calendars. Returns the created appointment with its assigned ID. Provide appointment details as a JSON object. |
halo_create_todo |
Pro | Write | [HaloPSA] Create a new to-do checklist item on a ticket. Provide the item as JSON. The checklist wording goes in the 'text' field (HaloPSA's FaultToDo has no 'summary' field). Link it to a ticket with 'ticket_id'. Use halo_list_todos to see existing items and halo_update_todo to edit or complete them. |
halo_get_appointment |
Free | Read-only | [HaloPSA] Retrieve a single appointment by numeric ID. Returns full appointment details including subject, description, date/time, duration, location, and linked ticket. Requires a valid appointment ID — use halo_list_appointments to find IDs. |
halo_get_timesheet_event_mine |
Free | Read-only | [HaloPSA] Retrieve the current timesheet event for the authenticated agent. Returns the active clock-in status, current session duration, and break information for the agent associated with the API credentials. Use this to check if the current agent is clocked in and their active work session. No parameters required. |
halo_list_appointments |
Free | Read-only | [HaloPSA] List appointments/calendar entries with optional filters. Returns appointment summaries including ID, subject, date/time, duration, and assigned agent. Use this to view schedules or find specific appointments. |
halo_list_available_slots |
Free | Read-only | [HaloPSA] List available time slots for scheduling appointments. Returns open slots with date, time, and duration. Use this to find free time when booking appointments — filter by agent or date range. |
halo_list_booking_types |
Free | Read-only | [HaloPSA] List all available booking/appointment types. Returns type IDs and names for scheduling purposes. Use this to discover valid booking types when creating appointments or checking availability. |
halo_list_holidays |
Free | Read-only | [HaloPSA] List configured holidays. Returns holiday dates and names that are excluded from SLA calculations and business hours. Use this to understand non-working days that affect scheduling and SLA targets. |
halo_list_schedules |
Free | Read-only | [HaloPSA] List agent schedules with optional filters. Returns schedule entries including agent, date, shift times, and schedule type. Use this to review team capacity and coverage. |
halo_list_timesheet_events |
Free | Read-only | [HaloPSA] List timesheet events (clock-in/clock-out, breaks, and time tracking events). Returns event records including timestamps, agent, event type, and duration. Use this to review time tracking data, monitor attendance, or audit work hours. |
halo_list_todos |
Free | Read-only | [HaloPSA] List to-do checklist items, optionally filtered by ticket ID. Returns task items with completion status. Use with halo_get_ticket to see full ticket context. Follow up with halo_create_todo to add new checklist items. |
halo_list_workdays |
Free | Read-only | [HaloPSA] List workday definitions (business hours configuration). Returns working hour schedules including start/end times and days of the week. Use this to understand business hours for SLA calculations and scheduling. |
halo_update_todo |
Pro | Write | [HaloPSA] Update an existing to-do checklist item — correct its wording ('text'), mark it complete ('done': true), or re-order it ('sequence'). Requires the item's 'id' (from halo_list_todos). NOTE: HaloPSA's API exposes no per-item to-do delete endpoint, so to retire a bad/placeholder checklist row, mark it done here or overwrite its 'text'. |
halo_create_appointment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
appointmentJson |
string | yes | JSON object with appointment fields. Required: subject, start_date. Optional: end_date, agent_id, client_id, ticket_id, location, notes. Example: {"subject": "On-site server maintenance", "start_date": "2026-04-01T09:00:00", "end_date": "2026-04-01T11:00:00", "agent_id": 5} |
halo_create_todo parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
todoJson |
string | yes | JSON object for the to-do item. Required: text (the checklist wording). Optional: ticket_id, done (bool), start_date, end_date (yyyy-MM-dd), sequence, group_id. Example: {"text": "Follow up with client", "ticket_id": 42} |
halo_get_appointment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
appointmentId |
integer | yes | The numeric HaloPSA appointment ID. Use halo_list_appointments to find valid IDs. |
halo_list_appointments parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients to find valid IDs. |
endDate |
string | no | null | Filter by end date in yyyy-MM-dd format (optional). Returns appointments on or before this date. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
startDate |
string | no | null | Filter by start date in yyyy-MM-dd format (optional). Returns appointments on or after this date. |
halo_list_available_slots parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Shows availability for a specific agent. Use halo_list_agents to find valid IDs. |
endDate |
string | no | null | Filter end date in yyyy-MM-dd format (optional). Shows slots up to this date. |
startDate |
string | no | null | Filter start date in yyyy-MM-dd format (optional). Shows slots from this date forward. |
halo_list_schedules parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
primaryId |
integer | no | null | Filter by primary entity ID (e.g., agent ID). Use halo_list_agents to find valid IDs. |
halo_list_timesheet_events parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
filtersJson |
string | no | null | Filter parameters as key-value pairs (optional). Example: {"agent_id": "5", "start_date": "2026-04-01"} to filter events for a specific agent from a date. |
halo_list_todos parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ticketId |
integer | no | null | Filter by ticket ID (optional). Shows to-do items linked to a specific ticket. |
halo_update_todo parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
todoJson |
string | yes | JSON object with the to-do fields to change. Required: id (the existing item's id from halo_list_todos). Common fields: text, done (bool), ticket_id, start_date, end_date, sequence, group_id. Example: {"id": 17, "done": true} or {"id": 17, "text": "Revised step"} |
CRM
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_crm_note |
Pro | Write | [HaloPSA] Create a new CRM note against a client or supplier. This records an interaction or observation visible to CRM users. Returns the created note. Provide note details as a JSON object. |
halo_create_opportunity |
Pro | Write | [HaloPSA] Create a new CRM opportunity/deal. This creates a sales pipeline entry visible to CRM users. Returns the created opportunity with its assigned ID. Provide opportunity details as a JSON object — use halo_list_clients to find valid client IDs. |
halo_get_opportunity |
Free | Read-only | [HaloPSA] Retrieve a single CRM opportunity by numeric ID. Returns full opportunity details including value, stage, probability, expected close date, and linked contacts. Requires a valid opportunity ID — use halo_list_opportunities to find IDs. |
halo_list_contact_groups |
Free | Read-only | [HaloPSA] List all contact groups. Returns group IDs, names, and member counts. Use this to discover contact groups for targeted communications or managing group membership with halo_manage_contact_group_members. |
halo_list_crm_notes |
Free | Read-only | [HaloPSA] List CRM notes with optional client or supplier filter. Returns note entries including date, author, and content. Use this to review interaction history with a client or supplier for relationship management. |
halo_list_feedback |
Free | Read-only | [HaloPSA] Returns ALL customer satisfaction (CSAT) feedback records from Halo (raw passthrough). Each record includes score (1-5), comment, date, and ticket_id. NOTE: Halo's /api/Feedback endpoint accepts NO server-side filters or pagination — it always returns the complete feedback dataset, which can be large. To scope by client, agent, or date range, or for aggregated scores/rating distribution, use halo_csat_report instead (it applies those filters client-side). Feedback records carry ticket_id but no client_id, so client scope is resolved by cross-referencing tickets. |
halo_list_opportunities |
Free | Read-only | [HaloPSA] List CRM opportunities/deals with optional filters. Returns opportunity summaries including ID, name, client, value, stage, and probability. Use this to review the sales pipeline or find specific deals. |
halo_list_ticket_approvals |
Free | Read-only | [HaloPSA] List pending ticket approvals with pagination. Returns approval requests including ticket ID, requester, approver, status, and reason. Use this to review outstanding approval requests that may be blocking ticket progression. |
halo_manage_contact_group_members |
Pro | Write | [HaloPSA] Add or remove contacts from a contact group. This modifies group membership for targeted communications. Provide the operation details as a JSON object — use halo_list_contact_groups to find group IDs and halo_search_users for contact IDs. |
halo_process_approval |
Pro | Write | [HaloPSA] Process one or more pending approval requests by their IDs. The API accepts an array of approval IDs to process. Use halo_list_ticket_approvals to find pending approval IDs first. WARNING: This action is irreversible — approvals cannot be undone once processed. |
halo_update_opportunity |
Pro | Write | [HaloPSA] Update an existing CRM opportunity's fields such as stage, value, probability, or expected close date. This modifies CRM pipeline data. Provide updates as a JSON object — use halo_get_opportunity to see current field values. |
halo_create_crm_note parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
noteJson |
string | yes | JSON object with CRM note fields. Required: note (text content) and either client_id or supplier_id. Optional: date, subject. Example: {"client_id": 1, "note": "Discussed renewal terms, client interested in upgrading to managed services", "subject": "QBR Follow-up"} |
halo_create_opportunity parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
opportunityJson |
string | yes | JSON object with opportunity fields. Required: name, client_id. Optional: value, probability, expected_close_date, stage, notes. Example: {"name": "Managed Services Contract", "client_id": 1, "value": 24000, "probability": 75} |
halo_get_opportunity parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
opportunityId |
integer | yes | The numeric HaloPSA opportunity ID. Use halo_list_opportunities to find valid IDs. |
halo_list_crm_notes parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid client IDs. |
count |
integer | no | 50 | Number of results to return (default 50, max 200). |
supplierId |
integer | no | null | Filter by supplier ID (optional). Use halo_list_suppliers to find valid supplier IDs. |
halo_list_opportunities parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent/owner ID (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | End date filter in yyyy-MM-dd format (optional). Shows opportunities up to this date. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
startDate |
string | no | null | Start date filter in yyyy-MM-dd format (optional). Shows opportunities from this date forward. |
halo_list_ticket_approvals parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_manage_contact_group_members parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contactJson |
string | yes | JSON object with group membership operation. Required: group_id, user_id. Optional: action ('add' or 'remove', defaults to 'add'). Example: {"group_id": 1, "user_id": 42, "action": "add"} |
halo_process_approval parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
approvalIds |
string | yes | Comma-separated list of approval IDs to process. Use halo_list_ticket_approvals to find valid IDs. Example: "1,2,3" |
halo_update_opportunity parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
opportunityJson |
string | yes | JSON object with fields to update. Must include id (opportunity ID). Example: {"id": 1, "stage": "Negotiation", "probability": 90, "value": 30000} |
Audit
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_audit_entry |
Free | Read-only | [HaloPSA] Retrieve a single audit log entry by numeric ID. Returns full audit details including before/after values, user, timestamp, and affected entity. Requires a valid audit entry ID — use halo_list_audit_entries to find IDs. |
halo_get_field |
Free | Read-only | [HaloPSA] Retrieve a single custom field definition by numeric ID. Returns full field metadata including name, data type, validation rules, and dropdown options. Requires a valid field ID — use halo_list_custom_fields to find IDs. |
halo_list_audit_entries |
Free | Read-only | [HaloPSA] List audit log entries with pagination. Returns audit records including timestamp, user, action performed, and affected entity. Use this to review system changes, track who modified records, or investigate security events. |
halo_get_audit_entry parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
auditEntryId |
integer | yes | The numeric HaloPSA audit entry ID. Use halo_list_audit_entries to find valid IDs. |
halo_get_field parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
fieldId |
integer | yes | The numeric HaloPSA field ID. Use halo_list_custom_fields to find valid IDs. |
halo_list_audit_entries parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Attachments
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_delete_attachment |
Pro | Destructive | [HaloPSA] Delete an attachment by numeric ID. This permanently removes the file — it cannot be undone. Use this only when an attachment was uploaded in error. Requires a valid attachment ID — use halo_list_attachments to find IDs. |
halo_delete_attachment_document |
Pro | Destructive | [HaloPSA] Permanently delete an attachment's document by ID. This cannot be undone. Use halo_list_attachments to find IDs. |
halo_delete_attachment_image |
Pro | Destructive | [HaloPSA] Permanently delete an attachment's image by its image ID (a GUID). This cannot be undone. |
halo_download_attachment |
Free | Read-only | [HaloPSA] Download an attachment's binary content by ID. Returns a short-lived read-only SAS URL to the file in blob storage (content type, suggested filename, size, expiry). Use halo_list_attachments to find IDs. |
halo_download_attachment_document |
Free | Read-only | [HaloPSA] Download an attachment's document representation by ID. Returns a short-lived read-only SAS URL to the file in blob storage. Use halo_list_attachments to find IDs. |
halo_download_attachment_image |
Free | Read-only | [HaloPSA] Download an attachment's image representation by its image ID (a GUID). Returns a short-lived read-only SAS URL to the image in blob storage. |
halo_get_attachment |
Free | Read-only | [HaloPSA] Retrieve attachment metadata by numeric ID. Returns attachment details including filename, size, MIME type, and download information. Requires a valid attachment ID — use halo_list_attachments to find IDs. |
halo_list_attachments |
Free | Read-only | [HaloPSA] List attachments with optional action/ticket filter and pagination. Returns attachment metadata including ID, filename, size, and upload date. Use this to discover files attached to tickets or actions. |
halo_upload_attachment |
Pro | Write | [HaloPSA] Upload a file attachment to a ticket (and optionally a specific action/note). Provide the file as base64-encoded content; StackJack builds the correct Halo data-URI from the filename extension. Returns the created attachment metadata. Use halo_list_tickets/halo_get_ticket to find the ticket ID. |
halo_delete_attachment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
attachmentId |
integer | yes | The numeric HaloPSA attachment ID to delete. Use halo_list_attachments to find valid IDs. |
halo_delete_attachment_document parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
attachmentId |
integer | yes | The numeric HaloPSA attachment ID to delete. |
halo_delete_attachment_image parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
imageId |
string | yes | The HaloPSA attachment image ID (a GUID/UUID string) to delete. |
halo_download_attachment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
attachmentId |
integer | yes | The numeric HaloPSA attachment ID. Use halo_list_attachments to find valid IDs. |
halo_download_attachment_document parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
attachmentId |
integer | yes | The numeric HaloPSA attachment ID. Use halo_list_attachments to find valid IDs. |
halo_download_attachment_image parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
imageId |
string | yes | The HaloPSA attachment image ID (a GUID/UUID string). |
halo_get_attachment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
attachmentId |
integer | yes | The numeric HaloPSA attachment ID. Use halo_list_attachments to find valid IDs. |
halo_list_attachments parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actionId |
integer | no | null | Filter by action ID (optional). Requires ticketId. Narrows results to attachments on a specific ticket action. |
filetype |
string | no | null | Filter by file type / extension (optional), e.g. "pdf". |
idOnly |
boolean | no | null | Return only attachment IDs rather than full metadata (optional). |
oneAttachmentId |
integer | no | null | Return a single attachment by its attachment ID (optional, integer). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
portal |
integer | no | null | Filter to portal-visible attachments (optional, integer). |
ticketId |
integer | no | null | Filter by ticket ID (optional). Narrows results to attachments on a specific ticket. |
type |
integer | no | null | Filter by attachment type (optional, integer). |
uniqueId |
integer | no | null | Return a single attachment by its unique ID (optional, integer). |
halo_upload_attachment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
actionId |
integer | no | null | Optional action ID to attach the file to a specific ticket action/note rather than the ticket as a whole. |
fileBase64 |
string | yes | Base64-encoded file content. May be raw base64 or a full data-URI; StackJack normalizes it. | |
filename |
string | yes | File name including extension (e.g. "screenshot.png"). The extension determines the content type. | |
note |
string | no | null | Optional note/description shown against the attachment. |
showForUsers |
boolean | no | null | Optional: whether the attachment is visible to end users on the self-service portal. |
ticketId |
integer | yes | Ticket ID to attach the file to. Use halo_list_tickets to find IDs. |
Discovery & Config
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_global_search |
Free | Read-only | [HaloPSA] Search across all entity types (tickets, clients, users, assets, knowledge base, etc.) in a single query. Returns results grouped by entity type with IDs and summaries. Use this as a starting point when you are unsure which entity type contains the data, then follow up with entity-specific get tools for full details. |
halo_list_custom_fields |
Free | Read-only | [HaloPSA] List custom field definitions, optionally filtered by ticket type. Returns field IDs, names, data types, and lookup references. Use this to discover custom fields before populating them on tickets, assets, or other entities. Follow up with halo_get_lookup_values to see allowed values for lookup-type fields. |
halo_list_request_types |
Free | Read-only | [HaloPSA] List all request types (service catalogue items) configured in the system. Returns request type IDs, names, and descriptions. Use this to discover the service catalogue offerings available for ticket creation or to understand how tickets are categorized by service type. |
halo_list_status_details |
Free | Read-only | [HaloPSA] List detailed status configurations including workflow transitions, colour codes, and associated ticket types. Returns richer information than halo_list_statuses. Use this when you need to understand status workflow rules, which statuses can transition to which, or status-specific configurations. |
halo_list_ticket_areas |
Free | Read-only | [HaloPSA] List all ticket areas (sub-categories or functional groupings) configured in the system. Returns area IDs and names used for ticket classification. Use this to discover valid area values before creating tickets with halo_create_ticket or to understand ticket routing rules. |
halo_list_ticket_type_details |
Free | Read-only | [HaloPSA] List detailed ticket type configurations including workflow rules, field mappings, SLA associations, and default values. Returns richer information than halo_list_ticket_types. Use this when you need to understand the full configuration of ticket types, not just their names and IDs. |
halo_list_ticket_type_fields |
Free | Read-only | [HaloPSA] List fields configured for a ticket type, including custom fields and their validation rules. Returns field names, types, lookup IDs, and required/optional status. Use this to discover which fields are available before creating or updating tickets. Optionally filter by ticket type ID — use halo_list_ticket_types to find valid type IDs. |
halo_system_info |
Free | Read-only | [HaloPSA] Retrieve HaloPSA instance information including version, licence details, and system configuration. Returns instance metadata useful for troubleshooting API compatibility or understanding the tenant's Halo environment. No parameters required. |
halo_global_search parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
countPerEntity |
integer | no | 5 | Maximum number of results to return per entity type (default 5, max 50). Increase for more comprehensive searches across each entity type. |
query |
string | yes | Search query string. Matches across all entity types including tickets, clients, users, assets, and knowledge base articles. |
halo_list_custom_fields parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
typeId |
integer | no | null | Filter by ticket type ID (optional). Returns custom fields associated with a specific ticket type. Use halo_list_ticket_types to find valid IDs. |
halo_list_status_details parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
filtersJson |
string | no | null | Filter parameters as key-value pairs (optional). Example: {"type_id": "1"} to filter statuses for a specific ticket type. |
halo_list_ticket_type_details parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
filtersJson |
string | no | null | Filter parameters as key-value pairs (optional). Example filters: type_id to filter by a specific type. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_ticket_type_fields parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
typeId |
integer | no | null | Filter by ticket type ID (optional). Returns fields for a specific ticket type. Use halo_list_ticket_types to find valid IDs. Omit to see all fields. |
Analytics
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_client_ticket_trends |
Free | Read-only | [HaloPSA] Track ticket volume trends for a specific client over multiple periods to identify patterns. Returns ticket counts per period showing volume trajectory. Use this to spot increasing or decreasing support demand for a client. Note: Makes one API call per period (default 6). Higher periodCount increases latency proportionally. |
halo_open_ticket_summary |
Free | Read-only | [HaloPSA] Snapshot of all open tickets grouped by status, priority, team, and ticket type with counts. Provides a quick overview of the current open ticket landscape. Use this for daily standups or management dashboards. |
halo_priority_distribution |
Free | Read-only | [HaloPSA] Breakdown of open tickets by priority level including average age per priority. Use this to understand the severity mix of the current open ticket backlog and identify if high-priority tickets are aging. |
halo_queue_performance_comparison |
Free | Read-only | [HaloPSA] Compare team/queue performance KPIs: average resolution time, resolution rate, open ticket count, and SLA compliance. Use this to identify which teams are performing well and which need attention. Note: Makes 2 API calls internally. |
halo_stale_ticket_report |
Free | Read-only | [HaloPSA] Identify open tickets with no activity beyond a threshold, indicating potential neglect or bottlenecks. Returns stale tickets sorted by days inactive. Use this for daily triage to catch tickets that need attention. |
halo_team_workload_balance |
Free | Read-only | [HaloPSA] View open ticket distribution across agents to identify workload imbalances. Returns per-agent open ticket counts and relative workload percentages. Use this for capacity planning or to rebalance ticket assignments. Note: Makes 2 API calls internally. |
halo_ticket_categorization_analysis |
Free | Read-only | [HaloPSA] Analyze ticket distribution across categories, types, or priorities for a date range. Returns ticket counts and percentages per group. Use this to understand what types of issues are most common for a client or across the helpdesk. |
halo_ticket_resolution_analytics |
Free | Read-only | [HaloPSA] Analyze ticket resolution times and rates for a date range, grouped by a chosen dimension. Returns average resolution time, resolution rate, and ticket counts per group. Use this to identify which categories, teams, or priorities resolve fastest. |
halo_ticket_source_analysis |
Free | Read-only | [HaloPSA] Analyze how tickets are being created (email, portal, phone, API, etc.) for a date range. Returns counts and percentages per creation channel. Use this to understand which intake channels generate the most work. |
halo_unassigned_ticket_report |
Free | Read-only | [HaloPSA] List all open tickets that have no agent assigned, grouped by priority and client. Use this to identify tickets that need immediate dispatch attention. |
halo_client_ticket_trends parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to analyze. Use halo_list_clients or halo_search_clients to find valid IDs. | |
periodCount |
integer | no | 6 | Number of periods to analyze (default 6). More periods show longer-term trends. |
periodType |
string | no | "month" | Period granularity: must be 'month' or 'week'. Defaults to 'month'. Use 'week' for recent short-term trends. |
halo_open_ticket_summary parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
halo_priority_distribution parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
halo_queue_performance_comparison parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
days |
integer | no | 30 | Number of days to analyze (default 30). Longer periods give more stable metrics. |
halo_stale_ticket_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
staleDaysThreshold |
integer | no | 7 | Number of days without activity to consider a ticket stale (default 7). Lower for urgent triage, higher for periodic reviews. |
halo_team_workload_balance parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
teamId |
integer | no | null | Filter by team ID (optional). Use halo_list_teams to find valid team IDs. Omit to see all agents. |
halo_ticket_categorization_analysis parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | yes | End date in yyyy-MM-dd format. Defines the end of the analysis period. | |
groupBy |
string | no | "category" | Dimension to group results by. Must be 'type', 'priority', 'category', 'team', 'client', or 'agent'. Defaults to 'category'. |
startDate |
string | yes | Start date in yyyy-MM-dd format. Defines the beginning of the analysis period. |
halo_ticket_resolution_analytics parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
endDate |
string | yes | End date in yyyy-MM-dd format. Defines the end of the analysis period. | |
groupBy |
string | no | "type" | Dimension to group results by. Must be 'type', 'priority', 'category', 'team', 'client', or 'agent'. Defaults to 'type'. |
startDate |
string | yes | Start date in yyyy-MM-dd format. Defines the beginning of the analysis period. |
halo_ticket_source_analysis parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Defaults to today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Defaults to 30 days ago. |
halo_unassigned_ticket_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
Advanced Analytics
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_asset_ticket_correlation |
Pro | Read-only | [HaloPSA] Find assets with recurring ticket activity above a threshold. Returns problem assets ranked by ticket count with associated ticket details. Use this to identify hardware or software that generates excessive support burden and may need replacement. |
halo_asset_warranty_expiry_report |
Pro | Read-only | [HaloPSA] Identify assets with warranties expiring within a specified number of days. Returns assets sorted by expiry date with client and warranty details. Use this for proactive warranty renewal planning and hardware refresh cycles. |
halo_contract_utilization_tracker |
Pro | Read-only | [HaloPSA] Track Pre-Pay contract balance utilization (used vs prepaid allowance) from the contract prepay balance fields. Returns per-contract used, remaining, and utilization percent — in hours, or in currency when the contract is amount-based (contract_prepayasamount). Non-Pre-Pay contracts (e.g. Fixed price) carry no prepaid balance and are returned with supported=false plus an explicit reason, never silent zeros. Remaining may be NEGATIVE when consumption exceeds the prepaid allowance. Contract names come from the ref/refextra fields. Use halo_list_contracts first to find valid contract IDs. Note: Makes 1 + N API calls where N is the number of matched contracts. |
halo_csat_report |
Pro | Read-only | [HaloPSA] Customer satisfaction report with ratings breakdown by agent. Returns CSAT scores, response counts, per-agent performance, and the RAW score->count distribution. Use this for quality assurance reviews or to identify agents who may need coaching. IMPORTANT: HaloPSA's Feedback `score` has no direction metadata in the API, so scaleOrder controls interpretation — set it to "lowerIsBetter" if your survey uses 1 = most satisfied (e.g. the default smiley survey where 1 = happy face); default "higherIsBetter" treats 5 as most satisfied. The output always echoes scaleOrder + scaleOrderSource and scoreDistribution so direction is verifiable. |
halo_sla_breach_alerts |
Pro | Read-only | [HaloPSA] Identify open tickets at risk of breaching SLA or already breached. Returns tickets sorted by urgency with time remaining until breach. Use this for proactive SLA management to prevent breaches before they happen. |
halo_sla_compliance_dashboard |
Pro | Read-only | [HaloPSA] SLA compliance metrics including response and resolution rates for a date range. Returns compliance percentages, breach counts, and near-miss counts. Use this for management reporting or to assess service quality. Use halo_list_slas first to understand SLA definitions. |
halo_technician_utilization_report |
Pro | Read-only | [HaloPSA] Analyze technician time utilization including billable vs total hours and utilization rate. Returns per-agent metrics compared to a target utilization percentage. Use this for capacity planning and identifying under- or over-utilized technicians. Note: Makes 2 API calls internally. |
halo_ticket_aging_report |
Pro | Read-only | [HaloPSA] Open tickets grouped by age buckets (today, 1-3 days, 3-7 days, 1-2 weeks, 2-4 weeks, 1-3 months, 3+ months) with counts and details per bucket. Use this to visualize how long tickets have been open and identify chronic backlog. Filterable by client or team. |
halo_timesheet_summary |
Pro | Read-only | [HaloPSA] Summarize timesheet data by agent and client for a date range. Returns total hours, billable hours, and per-agent/client breakdowns. Use this for payroll review, billing reconciliation, or management reporting. |
halo_asset_ticket_correlation parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
minTickets |
integer | no | 3 | Minimum ticket count to include an asset (default 3). Lower to catch emerging problems, raise to focus on worst offenders. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for all-time data. |
halo_asset_warranty_expiry_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
daysAhead |
integer | no | 90 | Number of days ahead to check for warranty expiry (default 90). Use 30 for urgent renewals, 180 for long-term planning. |
halo_contract_utilization_tracker parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
contractId |
integer | no | null | Filter by contract ID (optional). Use halo_list_contracts to find valid IDs. |
halo_csat_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
scaleOrder |
string | no | null | CSAT scale direction: "higherIsBetter" (default; 5 = most satisfied) or "lowerIsBetter" (1 = most satisfied, e.g. HaloPSA's default smiley survey). Omit to use the default; the response reports which was used via scaleOrderSource. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for all-time data. |
halo_sla_breach_alerts parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
warningMinutes |
integer | no | 30 | Warning threshold in minutes before SLA breach (default 30). Tickets within this window appear as at-risk. Increase for earlier warnings. |
halo_sla_compliance_dashboard parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for all-time data. |
halo_technician_utilization_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. Omit to see all agents. |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for all-time data. |
targetUtilization |
integer | no | 70 | Target utilization percentage (default 70). Agents below this threshold are flagged as under-utilized. |
halo_ticket_aging_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
teamId |
integer | no | null | Filter by team ID (optional). Use halo_list_teams to find valid team IDs. |
halo_timesheet_summary parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | yes | End date in yyyy-MM-dd format. Defines the end of the timesheet period. | |
startDate |
string | yes | Start date in yyyy-MM-dd format. Defines the beginning of the timesheet period. |
Intelligence
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_after_hours_impact_report |
Pro | Read-only | [HaloPSA] Analyze ticket volume outside business hours (before 8am, after 6pm, and weekends). Returns after-hours percentage, breakdown by day of week, client, and priority. Use this to evaluate after-hours support demand and staffing needs. |
halo_bulk_ticket_update |
Pro | Write | [HaloPSA] Update multiple tickets at once with the same field changes. Supports dry-run mode (default) to preview changes before applying. Provide a list of ticket IDs and the fields to update. Use this for batch operations like bulk reassignment, priority changes, or status updates. WARNING: Set dryRun to false to actually apply changes. Note: Makes one API call per ticket (plus one per ticket in dry-run mode for preview). |
halo_client_360_view |
Pro | Read-only | [HaloPSA] Comprehensive 360-degree view of a client combining contacts, open tickets, assets, contracts, invoices, CSAT scores, and sites into a single consolidated report. The satisfactionSummary echoes scaleOrder + scoreDistribution. Use this for account reviews, executive briefings, or to quickly understand a client's full relationship with your MSP. Note: HaloPSA's Feedback score has no direction metadata — set scaleOrder="lowerIsBetter" if your survey uses 1 = most satisfied, else CSAT is inverted. Makes up to 8 API calls internally and may take several seconds. |
halo_client_offboarding_audit |
Pro | Read-only | [HaloPSA] Audit a client for offboarding readiness. Checks for open tickets, active assets, running contracts, active users, and recurring invoices. Returns item-by-item status with required actions. Use this before offboarding a client to ensure nothing is missed. Note: Makes 6 API calls internally and may take several seconds. |
halo_client_onboarding_checklist |
Pro | Read-only | [HaloPSA] Generate an onboarding completeness checklist for a client. Checks whether sites, contacts, assets, and contracts are configured. Returns completion percentage and item-by-item status. Use this during client onboarding to ensure all setup steps are complete. Note: Makes 5 API calls internally. |
halo_client_risk_assessment |
Pro | Read-only | [HaloPSA] Assess client churn risk based on ticket volume, SLA breaches, CSAT ratings, and resolution efficiency. Returns a risk score (0-100), risk level, breakdown by risk factor (the CSAT factor echoes scaleOrder + scoreDistribution), and actionable recommendations. Use this to proactively identify at-risk clients before they escalate or leave. Note: HaloPSA's Feedback score has no direction metadata — set scaleOrder="lowerIsBetter" if your survey uses 1 = most satisfied, else CSAT risk is inverted. Makes 3 API calls internally. |
halo_compliance_snapshot |
Pro | Read-only | [HaloPSA] Generate a compliance snapshot covering SLA compliance rates, ticket closure rates, response time compliance, and time documentation completeness. Use this for compliance audits, management reporting, or to prepare for client governance reviews. Note: Makes 2 API calls internally. |
halo_contract_renewal_pipeline |
Pro | Read-only | [HaloPSA] View upcoming contract renewals sorted by expiry date. Returns contracts expiring within the specified window with urgency ratings (Urgent/Soon/Upcoming). Use this for proactive contract management and renewal planning. |
halo_daily_operations_briefing |
Pro | Read-only | [HaloPSA] Generate a daily operations briefing with new tickets since yesterday, SLA warnings, stale tickets, unassigned tickets, and priority breakdown. Includes high-priority open ticket details. Use this as a morning standup report or shift handover summary. Note: Makes 2 API calls internally. |
halo_dispatch_optimizer |
Pro | Read-only | [HaloPSA] Analyze agent availability and workload to optimize ticket dispatch. Returns agents ranked by availability with open ticket counts, high-priority load, recent hours logged, and a capacity score. Also lists unassigned tickets needing dispatch. Use this before assigning tickets to find the best available agent. Note: Makes 3 API calls internally. |
halo_draft_kb_from_ticket |
Pro | Read-only | [HaloPSA] Generate a draft KB article from a resolved ticket. Extracts the problem description, resolution notes from actions, and relevant metadata into a structured KB draft. Use this to quickly create KB articles from successfully resolved tickets, reducing documentation effort. Note: Makes 2 API calls internally. |
halo_first_contact_resolution |
Pro | Read-only | [HaloPSA] Measure first-contact resolution (FCR) rate — tickets resolved within 24 hours of creation. Returns overall FCR rate and per-agent FCR breakdown. Use this to evaluate support quality and identify agents who excel at resolving issues quickly. |
halo_kb_gap_analysis |
Pro | Read-only | [HaloPSA] Identify knowledge base gaps by comparing ticket categories to existing KB article coverage. Returns categories with high ticket volume but no matching KB articles, along with sample tickets. Use this to prioritize KB article creation for maximum support impact. Note: Makes 2 API calls internally. |
halo_project_budget_status |
Pro | Read-only | [HaloPSA] Check project budget status by comparing budgeted hours/cost against actual time logged on project tickets. Returns utilization percentage, remaining hours, and per-ticket time breakdown. Use this for project financial oversight and to catch projects at risk of going over budget. Note: Makes 3 API calls internally. |
halo_recurring_issue_detector |
Pro | Read-only | [HaloPSA] Detect recurring issues by grouping tickets by client and category, then filtering for groups that meet a minimum occurrence threshold. Returns affected ticket lists for each recurring issue pattern. Use this to identify systemic problems that need root-cause fixes rather than repeated break-fix. |
halo_revenue_leakage_scan |
Pro | Read-only | [HaloPSA] Scan for revenue leakage by identifying billable-but-unbilled time entries, zero-value entries, and comparing billed revenue to logged hours. Returns leakage percentage and breakdown by client. Use this for monthly financial hygiene checks. Note: Makes 2 API calls internally. |
halo_scope_creep_detector |
Pro | Read-only | [HaloPSA] Detect scope creep by comparing ticket categories against contract scope definitions. Identifies tickets linked to contracts that fall outside the contracted service categories. Use this to find work being done beyond contract scope that should be billed separately or renegotiated. Note: Makes 2 + N API calls where N is the number of contracts. May be slow for tenants with many contracts. |
halo_ticket_backlog_analysis |
Pro | Read-only | [HaloPSA] Analyze the open ticket backlog with age distribution buckets, per-agent breakdown, priority distribution, and top clients by backlog size. Returns average ticket age and identifies bottlenecks. Use this for capacity planning and backlog reduction initiatives. |
halo_ticket_handoff_analysis |
Pro | Read-only | [HaloPSA] Analyze ticket handoffs (reassignments, transfers, escalations) to identify tickets that bounce between agents. Returns handoff counts per ticket and agent, multi-handoff ticket counts, and average handoffs. Use this to improve routing and reduce unnecessary ticket bouncing. |
halo_ticket_similarity_search |
Pro | Read-only | [HaloPSA] Find tickets similar to a given ticket based on summary text matching. Returns matching tickets with metadata about whether they share the same category or client, and how many were successfully resolved. Use this to find precedents for how similar issues were handled. Note: Makes 2 API calls internally. |
halo_ticket_triage_assist |
Pro | Read-only | [HaloPSA] AI-assisted triage for a ticket. Fetches the ticket, searches for similar resolved tickets, searches the KB for relevant articles, and analyzes team workload to suggest the best agent for assignment. Use this when a new ticket arrives to get instant triage recommendations. Note: Makes up to 5 API calls internally and may take several seconds. |
halo_time_entry_anomaly_scan |
Pro | Read-only | [HaloPSA] Scan timesheet entries for anomalies including zero-minute entries, very long entries (>12 hours), very short entries (<5 minutes), and per-agent daily hour statistics. Use this to catch data quality issues and ensure accurate time tracking. |
halo_unbilled_time_report |
Pro | Read-only | [HaloPSA] Find billable time entries that haven't been invoiced yet. Returns unbilled hours broken down by client and agent. Use this to catch revenue that should be billed but hasn't been, ensuring no billable work is lost. |
halo_after_hours_impact_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for last 30 days. |
halo_bulk_ticket_update parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
dryRun |
boolean | no | true | When true (default), previews changes without applying them. Set to false to actually update the tickets. |
fieldsJson |
string | yes | JSON object with fields to update on all tickets. Example: {"agent_id": 5, "priority_id": 3}. Field names must match HaloPSA API field names. | |
ticketIds |
string | yes | Comma-separated list of ticket IDs to update (e.g. '101,102,103'). |
halo_client_360_view parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to generate 360 view for. Use halo_list_clients or halo_search_clients to find valid IDs. | |
scaleOrder |
string | no | null | CSAT scale direction: "higherIsBetter" (default; 5 = most satisfied) or "lowerIsBetter" (1 = most satisfied, e.g. HaloPSA's default smiley survey). Controls how the satisfactionSummary is interpreted; the response reports which was used via scaleOrderSource. |
halo_client_offboarding_audit parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to audit for offboarding. Use halo_list_clients or halo_search_clients to find valid IDs. |
halo_client_onboarding_checklist parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to check onboarding status for. Use halo_list_clients or halo_search_clients to find valid IDs. |
halo_client_risk_assessment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to assess risk for. Use halo_list_clients or halo_search_clients to find valid IDs. | |
lookbackMonths |
integer | no | 3 | Number of months to look back for risk assessment (default 3). Longer periods provide more stable assessments. |
scaleOrder |
string | no | null | CSAT scale direction: "higherIsBetter" (default; 5 = most satisfied) or "lowerIsBetter" (1 = most satisfied, e.g. HaloPSA's default smiley survey). Controls how the CSAT churn-risk factor is interpreted; the response reports which was used via scaleOrderSource. |
halo_compliance_snapshot parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for last 3 months. |
halo_contract_renewal_pipeline parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
daysAhead |
integer | no | 90 | Number of days ahead to look for expiring contracts (default 90). Use 30 for urgent focus, 180 for long-term planning. |
halo_dispatch_optimizer parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
teamId |
integer | no | null | Filter by team ID (optional). Use halo_list_teams to find valid team IDs. |
halo_draft_kb_from_ticket parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ticketId |
integer | yes | The ticket ID to generate a KB draft from. Best used with resolved tickets that have detailed action notes. Use halo_search_tickets or halo_list_tickets to find valid IDs. |
halo_first_contact_resolution parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for last 30 days. |
halo_kb_gap_analysis parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
lookbackDays |
integer | no | 90 | Number of days to look back for ticket data (default 90). |
halo_project_budget_status parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
projectId |
integer | yes | Project ID to check budget for. Use halo_list_projects to find valid IDs. |
halo_recurring_issue_detector parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
lookbackDays |
integer | no | 90 | Number of days to look back (default 90). |
minOccurrences |
integer | no | 3 | Minimum number of occurrences to flag as recurring (default 3). Lower to catch emerging patterns, raise to focus on chronic issues. |
halo_revenue_leakage_scan parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
lookbackDays |
integer | no | 90 | Number of days to look back (default 90). |
halo_scope_creep_detector parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
lookbackDays |
integer | no | 90 | Number of days to look back (default 90). |
halo_ticket_handoff_analysis parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for last 30 days. |
halo_ticket_similarity_search parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
maxResults |
integer | no | 10 | Maximum number of similar tickets to return (default 10). |
ticketId |
integer | yes | The ticket ID to find similar tickets for. Use halo_search_tickets or halo_list_tickets to find valid IDs. |
halo_ticket_triage_assist parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ticketId |
integer | yes | The ticket ID to triage. Use halo_search_tickets or halo_list_tickets to find valid IDs. |
halo_time_entry_anomaly_scan parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
lookbackDays |
integer | no | 30 | Number of days to look back (default 30). |
halo_unbilled_time_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Use halo_list_clients or halo_search_clients to find valid IDs. |
contractId |
integer | no | null | Filter by contract ID (optional). Use halo_list_contracts to find valid IDs. |
Premium Analytics
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_agreement_profitability_analysis |
Pro | Read-only | [HaloPSA] Analyze a single agreement's profitability by comparing revenue to hours worked. For Pre-Pay contracts, revenue is the sum of prepaid top-up invoice amounts (contract_prepayhistory) and hours are the prepaid hours consumed (contract_prepayused); effective hourly rate = revenue / hours (not applicable for amount-based Pre-Pay). For non-Pre-Pay contracts, revenue comes from billing lines and hours from contract-tagged time entries. Returns revenue, hours worked, effective hourly rate, and the contract name (from ref/refextra). Use halo_list_contracts first to find a valid contract ID. Note: Makes up to 3 API calls internally (1 for Pre-Pay). |
halo_client_health_score |
Pro | Read-only | [HaloPSA] Composite client health score based on ticket volume, resolution rates, SLA compliance, and CSAT. Returns an overall score (0-100) with per-dimension breakdowns (the CSAT component echoes scaleOrder + scoreDistribution). Use this to identify at-risk clients or prepare for QBR meetings. Use halo_list_clients first to find valid client IDs. Note: HaloPSA's Feedback score has no direction metadata — set scaleOrder="lowerIsBetter" if your survey uses 1 = most satisfied, else CSAT is inverted. Makes 3 API calls internally. |
halo_effective_hourly_rate |
Pro | Read-only | [HaloPSA] Calculate effective hourly rate across all billable work compared to a target rate. Returns actual rate, variance from target, and per-client breakdowns. Use this to assess overall service delivery profitability. Note: Makes 2 API calls internally. |
halo_escalation_analysis |
Pro | Read-only | [HaloPSA] Analyze escalation patterns including frequency by ticket type and agent. Returns escalation counts, rates, and common escalation paths. Use this to identify systemic issues causing escalations and improve first-contact resolution. |
halo_monthly_recurring_revenue |
Pro | Read-only | [HaloPSA] Calculate current MRR from recurring invoices with optional client breakdown and historical trend. Returns total MRR, per-client MRR breakdown, and month-over-month trend. Use this for financial reporting and revenue forecasting. Note: Makes up to 7 API calls by default (1 + trendMonths). May take several seconds. |
halo_qbr_data_pack |
Pro | Read-only | [HaloPSA] Comprehensive quarterly business review data pack for a client. Returns ticket volume, resolution metrics, time logged, CSAT scores, SLA compliance, and asset summary for the quarter. The csatSummary echoes scaleOrder + scoreDistribution. Use this to prepare QBR presentations. Use halo_list_clients first to find valid client IDs. Note: HaloPSA's Feedback score has no direction metadata — set scaleOrder="lowerIsBetter" if your survey uses 1 = most satisfied, else CSAT is inverted. Makes 4 API calls internally and may take several seconds. |
halo_unprofitable_agreements_report |
Pro | Read-only | [HaloPSA] Identify agreements with negative profitability over a period. Compares each agreement's effective hourly rate against a target cost rate to calculate margin. Returns agreements with zero or negative margin, ranked worst-first. Use this for portfolio review to find contracts that need renegotiation. Note: Makes 3 API calls internally. |
halo_agreement_profitability_analysis parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractId |
integer | yes | Contract ID to analyze. Use halo_list_contracts to find valid IDs. | |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Omit for data through today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Omit for all-time data. |
halo_client_health_score parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to analyze. Use halo_list_clients or halo_search_clients to find valid IDs. | |
lookbackMonths |
integer | no | 3 | Number of months to look back for health scoring (default 3). Longer periods provide more stable scores. |
scaleOrder |
string | no | null | CSAT scale direction: "higherIsBetter" (default; 5 = most satisfied) or "lowerIsBetter" (1 = most satisfied, e.g. HaloPSA's default smiley survey). Controls how the CSAT health component is interpreted; the response reports which was used via scaleOrderSource. |
halo_effective_hourly_rate parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
endDate |
string | no | null | End date in yyyy-MM-dd format (optional, defaults to today). Defines the end of the analysis period. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional, defaults to 3 months ago). Defines the beginning of the analysis period. |
targetRate |
number | no | 150 | Target hourly rate for comparison (default 150.00). The report shows variance against this target. |
halo_escalation_analysis parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID (optional). Use halo_list_agents to find valid IDs. |
endDate |
string | yes | End date in yyyy-MM-dd format. Defines the end of the analysis period. | |
startDate |
string | yes | Start date in yyyy-MM-dd format. Defines the beginning of the analysis period. | |
teamId |
integer | no | null | Filter by team ID (optional). Use halo_list_teams to find valid team IDs. |
halo_monthly_recurring_revenue parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
includeBreakdown |
boolean | no | true | When true, includes per-client MRR breakdown (default true). Set to false for a summary-only view. |
trendMonths |
integer | no | 6 | Number of months for revenue trend history (default 6). More months show longer-term revenue trajectory. |
halo_qbr_data_pack parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to generate QBR data for. Use halo_list_clients or halo_search_clients to find valid IDs. | |
quarterEnd |
string | yes | Quarter end date in yyyy-MM-dd format (e.g. '2025-03-31' for Q1 2025). | |
quarterStart |
string | yes | Quarter start date in yyyy-MM-dd format (e.g. '2025-01-01' for Q1 2025). | |
scaleOrder |
string | no | null | CSAT scale direction: "higherIsBetter" (default; 5 = most satisfied) or "lowerIsBetter" (1 = most satisfied, e.g. HaloPSA's default smiley survey). Controls how the csatSummary is interpreted; the response reports which was used via scaleOrderSource. |
halo_unprofitable_agreements_report parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
periodMonths |
integer | no | 3 | Number of months to analyze (default 3). Longer periods smooth out seasonal variations. |
targetHourlyRate |
number | no | 100 | Target hourly cost rate used to calculate margin (default 100). Revenue is compared against hours * targetHourlyRate to determine profitability. Set this to your blended cost per engineer hour. |
Ticket Filters
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_list_high_priority_tickets |
Free | Read-only | [HaloPSA] List open tickets with high priority (default priority ID 1 = Critical). Useful for urgent triage. Optionally override the priority threshold. |
halo_list_my_tickets |
Free | Read-only | [HaloPSA] List tickets assigned to the current authenticated agent. First resolves the agent identity via the API, then filters tickets by that agent. Defaults to open tickets only. |
halo_list_open_tickets |
Free | Read-only | [HaloPSA] List all open/active tickets. Convenience shortcut for halo_list_tickets with open_only=true. Returns paginated open ticket summaries. Optionally filter by client or agent. |
halo_list_overdue_sla_tickets |
Free | Read-only | [HaloPSA] List open tickets with overdue SLA targets. Similar to halo_list_past_due_tickets but uses 'overdue' SLA status filter. Use for proactive SLA management. |
halo_list_past_due_tickets |
Free | Read-only | [HaloPSA] List open tickets that have breached their SLA target. Use for SLA compliance monitoring and escalation. Optionally filter by client. |
halo_list_tickets_by_client |
Free | Read-only | [HaloPSA] List all tickets for a specific client. Requires a client ID — use halo_search_clients to find valid IDs. Optionally filter to open tickets only. |
halo_list_unassigned_tickets |
Free | Read-only | [HaloPSA] List open tickets with no agent assigned. Critical for daily triage to ensure all tickets have an owner. Optionally filter by client. |
halo_list_high_priority_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID. |
pageNo |
integer | no | 1 | Page number (default 1). |
pageSize |
integer | no | 50 | Results per page (default 50, max 100). |
priorityId |
integer | no | 1 | Priority ID threshold (default 1 = Critical). Use halo_list_priorities to find valid IDs. |
halo_list_my_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
openOnly |
boolean | no | true | When true (default), returns only open tickets. |
pageNo |
integer | no | 1 | Page number (default 1). |
pageSize |
integer | no | 50 | Results per page (default 50, max 100). |
halo_list_open_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID. |
clientId |
integer | no | null | Filter by client ID. |
pageNo |
integer | no | 1 | Page number (default 1). |
pageSize |
integer | no | 50 | Results per page (default 50, max 100). |
halo_list_overdue_sla_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID. |
clientId |
integer | no | null | Filter by client ID. |
pageNo |
integer | no | 1 | Page number (default 1). |
pageSize |
integer | no | 50 | Results per page (default 50, max 100). |
halo_list_past_due_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID. |
pageNo |
integer | no | 1 | Page number (default 1). |
pageSize |
integer | no | 50 | Results per page (default 50, max 100). |
halo_list_tickets_by_client parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID (required). Use halo_search_clients to find valid IDs. | |
openOnly |
boolean | no | null | When true, returns only open tickets. |
pageNo |
integer | no | 1 | Page number (default 1). |
pageSize |
integer | no | 50 | Results per page (default 50, max 100). |
halo_list_unassigned_tickets parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID. |
pageNo |
integer | no | 1 | Page number (default 1). |
pageSize |
integer | no | 50 | Results per page (default 50, max 100). |
Address Book
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_address_book_entry |
Pro | Write | [HaloPSA] Create a new address book entry. This adds a contact record to the address book. Returns the created entry with its assigned ID. Provide entry details as a JSON object. |
halo_delete_address_book_entry |
Pro | Destructive | [HaloPSA] Delete an address book entry by numeric ID. This permanently removes the contact record — it cannot be undone. Use with caution. Requires a valid entry ID — use halo_list_address_book to find IDs and verify the entry before deleting. |
halo_get_address_book_entry |
Free | Read-only | [HaloPSA] Retrieve a single address book entry by numeric ID. Returns full contact details including name, email, phone, address, and associated client. Requires a valid entry ID — use halo_list_address_book to find IDs. |
halo_list_address_book |
Free | Read-only | [HaloPSA] List address book entries with optional search and pagination. Returns entry summaries including ID, name, email, and phone. Use this to browse the address book or find contact IDs before fetching full details with halo_get_address_book_entry. |
halo_update_address_book_entry |
Pro | Write | [HaloPSA] Update an existing address book entry's fields such as name, email, or phone. The JSON must include the entry 'id' field. Use halo_list_address_book or halo_get_address_book_entry to find valid IDs and current field values. |
halo_create_address_book_entry parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
entryJson |
string | yes | JSON object with address book entry fields. Required: name. Optional: emailaddress, phonenumber, client_id. Example: {"name": "Jane Smith", "emailaddress": "jane@example.com", "phonenumber": "+1-555-0100"} |
halo_delete_address_book_entry parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
entryId |
integer | yes | The numeric HaloPSA address book entry ID to delete. Use halo_list_address_book to find valid IDs. Verify the entry with halo_get_address_book_entry before deleting. |
halo_get_address_book_entry parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
entryId |
integer | yes | The numeric HaloPSA address book entry ID. Use halo_list_address_book to find valid IDs. |
halo_list_address_book parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
search |
string | no | null | Search entries by name, email, or phone (optional). |
halo_update_address_book_entry parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
entryJson |
string | yes | JSON object with address book entry fields to update. Must include 'id'. Example: {"id": 42, "emailaddress": "newemail@example.com"}. Field names must match HaloPSA API field names. |
Roles
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_role |
Pro | Write | [HaloPSA] Create a new role. This defines a role that can be assigned to agents or users for access control. Returns the created role with its assigned ID. Provide role details as a JSON object. |
halo_delete_role |
Pro | Destructive | [HaloPSA] Delete a role by numeric ID. This permanently removes the role — it cannot be undone. Agents assigned this role may lose associated permissions. Requires a valid role ID — use halo_list_roles to find IDs and verify the role before deleting. |
halo_get_role |
Free | Read-only | [HaloPSA] Retrieve a single role by numeric ID. Returns full role details including name, description, and permissions. Requires a valid role ID — use halo_list_roles to find IDs. |
halo_list_roles |
Free | Read-only | [HaloPSA] List roles with pagination. Returns role summaries including ID, name, and description. Use this to browse available roles or find role IDs before fetching full details with halo_get_role. |
halo_update_role |
Pro | Write | [HaloPSA] Update an existing role's fields such as name, description, or permissions. The JSON must include the role 'id' field. Use halo_list_roles or halo_get_role to find valid IDs and current field values. |
halo_create_role parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
roleJson |
string | yes | JSON object with role fields. Required: name. Optional: description, permissions. Example: {"name": "L2 Support", "description": "Level 2 support role"} |
halo_delete_role parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
roleId |
integer | yes | The numeric HaloPSA role ID to delete. Use halo_list_roles to find valid IDs. Verify the role with halo_get_role before deleting. |
halo_get_role parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
roleId |
integer | yes | The numeric HaloPSA role ID. Use halo_list_roles to find valid IDs. |
halo_list_roles parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
halo_update_role parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
roleJson |
string | yes | JSON object with role fields to update. Must include 'id'. Example: {"id": 5, "name": "Updated Role Name", "description": "Updated description"}. Field names must match HaloPSA API field names. |
Tags
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_tag |
Pro | Write | [HaloPSA] Create a new tag. Tags can be applied to tickets, assets, clients, and other records for categorisation and filtering. Returns the created tag with its assigned ID. Provide tag details as a JSON object. |
halo_delete_tag |
Pro | Destructive | [HaloPSA] Delete a tag by numeric ID. This permanently removes the tag and detaches it from all associated records — it cannot be undone. Requires a valid tag ID — use halo_list_tags to find IDs and verify the tag before deleting. |
halo_get_tag |
Free | Read-only | [HaloPSA] Retrieve a single tag by numeric ID. Returns full tag details including name, colour, and usage information. Requires a valid tag ID — use halo_list_tags to find IDs. |
halo_list_tags |
Free | Read-only | [HaloPSA] List tags with optional search and pagination. Returns tag summaries including ID, name, and colour. Use this to browse available tags or find tag IDs for filtering tickets, assets, or other records. |
halo_create_tag parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
tagJson |
string | yes | JSON object with tag fields. Required: text. Optional: colour. Example: {"text": "VIP", "colour": "#FF0000"} |
halo_delete_tag parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
tagId |
integer | yes | The numeric HaloPSA tag ID to delete. Use halo_list_tags to find valid IDs. Verify the tag with halo_get_tag before deleting. |
halo_get_tag parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
tagId |
integer | yes | The numeric HaloPSA tag ID. Use halo_list_tags to find valid IDs. |
halo_list_tags parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
search |
string | no | null | Search tags by name (optional). |
Notifications
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_notification |
Pro | Write | [HaloPSA] Create a new notification. This sends a notification to the specified agent(s). Returns the created notification with its assigned ID. Provide notification details as a JSON object. |
halo_get_notification |
Free | Read-only | [HaloPSA] Retrieve a single notification by numeric ID. Returns full notification details including subject, body, sender, and read status. Requires a valid notification ID — use halo_list_notifications to find IDs. |
halo_list_notifications |
Free | Read-only | [HaloPSA] List notifications with optional filters and pagination. Returns notification summaries including ID, subject, read status, and timestamp. Use this to check for new notifications or browse notification history. Filter by agent or unread status. |
halo_send_notification_message |
Pro | Write | [HaloPSA] Send a notification message to one or more agents. This is a direct messaging tool separate from notification creation — use it to send quick messages or alerts. Returns the sent message details. |
halo_create_notification parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
notificationJson |
string | yes | JSON object with notification fields. Required: subject, agent_id. Optional: body, priority. Example: {"subject": "Urgent: VIP ticket escalation", "agent_id": 12, "body": "Ticket #1234 requires immediate attention"} |
halo_get_notification parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
notificationId |
integer | yes | The numeric HaloPSA notification ID. Use halo_list_notifications to find valid IDs. |
halo_list_notifications parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID to see notifications for a specific agent (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
unreadOnly |
boolean | no | null | Set to true to return only unread notifications (optional). |
halo_send_notification_message parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
messageJson |
string | yes | JSON object with message fields. Required: message, agent_id. Optional: subject. Example: {"message": "Please review ticket #5678", "agent_id": 12, "subject": "Review Request"} |
Canned Text
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_canned_text |
Pro | Write | [HaloPSA] Create a new canned text (quick reply template). This creates a reusable response template for ticket replies. Returns the created template with its assigned ID. Provide template details as a JSON object. |
halo_delete_canned_text |
Pro | Destructive | [HaloPSA] Delete a canned text template by numeric ID. This permanently removes the template — it cannot be undone. Requires a valid canned text ID — use halo_list_canned_text to find IDs and verify the template before deleting. |
halo_get_canned_text |
Free | Read-only | [HaloPSA] Retrieve a single canned text template by numeric ID. Returns full template details including name, content, and associated agent or team. Requires a valid canned text ID — use halo_list_canned_text to find IDs. |
halo_list_canned_text |
Free | Read-only | [HaloPSA] List canned text (quick reply templates) with optional filters and pagination. Returns template summaries including ID, name, and category. Use this to browse available response templates or find canned text IDs. Filter by search query, agent, or team. |
halo_update_canned_text |
Pro | Write | [HaloPSA] Update an existing canned text template's fields such as name, content, or team assignment. The JSON must include the 'id' field. Use halo_list_canned_text or halo_get_canned_text to find valid IDs and current field values. |
halo_create_canned_text parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cannedTextJson |
string | yes | JSON object with canned text fields. Required: name, html. Optional: agent_id, team_id. Example: {"name": "Password Reset Instructions", "html": "<p>Please follow these steps to reset your password...</p>"} |
halo_delete_canned_text parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cannedTextId |
integer | yes | The numeric HaloPSA canned text ID to delete. Use halo_list_canned_text to find valid IDs. Verify the template with halo_get_canned_text before deleting. |
halo_get_canned_text parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cannedTextId |
integer | yes | The numeric HaloPSA canned text ID. Use halo_list_canned_text to find valid IDs. |
halo_list_canned_text parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID to see templates available to a specific agent (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
search |
string | no | null | Search canned text by name or content (optional). |
teamId |
integer | no | null | Filter by team ID to see templates available to a specific team (optional). |
halo_update_canned_text parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cannedTextJson |
string | yes | JSON object with canned text fields to update. Must include 'id'. Example: {"id": 10, "name": "Updated Template", "html": "<p>Updated content...</p>"}. Field names must match HaloPSA API field names. |
Webhooks
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_webhook |
Pro | Write | [HaloPSA] Create a new webhook subscription. This registers a URL to receive event notifications from HaloPSA. Returns the created webhook with its assigned ID. Provide webhook details as a JSON object. |
halo_delete_webhook |
Pro | Destructive | [HaloPSA] Delete a webhook by numeric ID. This permanently removes the webhook subscription and stops event delivery — it cannot be undone. Requires a valid webhook ID — use halo_list_webhooks to find IDs and verify the webhook before deleting. |
halo_get_webhook |
Free | Read-only | [HaloPSA] Retrieve a single webhook by numeric ID. Returns full webhook details including name, URL, event subscriptions, and authentication configuration. Requires a valid webhook ID — use halo_list_webhooks to find IDs. |
halo_list_webhook_events |
Free | Read-only | [HaloPSA] List webhook event delivery history with optional webhook filter and pagination. Returns event summaries including ID, webhook, event type, delivery status, and timestamp. Use this to audit webhook deliveries or troubleshoot failed event notifications. |
halo_list_webhooks |
Free | Read-only | [HaloPSA] List configured webhooks with pagination. Returns webhook summaries including ID, name, URL, and enabled status. Use this to review webhook integrations or find webhook IDs before fetching full details. |
halo_update_webhook |
Pro | Write | [HaloPSA] Update an existing webhook's fields such as name, URL, events, or enabled status. The JSON must include the webhook 'id' field. Use halo_list_webhooks or halo_get_webhook to find valid IDs and current field values. |
halo_create_webhook parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
webhookJson |
string | yes | JSON object with webhook fields. Required: name, url. Optional: event_type, secret, enabled. Example: {"name": "Ticket Updates", "url": "https://example.com/webhooks/halo", "enabled": true} |
halo_delete_webhook parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
webhookId |
integer | yes | The numeric HaloPSA webhook ID to delete. Use halo_list_webhooks to find valid IDs. Verify the webhook with halo_get_webhook before deleting. |
halo_get_webhook parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
webhookId |
integer | yes | The numeric HaloPSA webhook ID. Use halo_list_webhooks to find valid IDs. |
halo_list_webhook_events parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
webhookId |
integer | no | null | Filter by webhook ID to see events for a specific webhook (optional). |
halo_list_webhooks parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
halo_update_webhook parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
webhookJson |
string | yes | JSON object with webhook fields to update. Must include 'id'. Example: {"id": 3, "url": "https://example.com/webhooks/new-endpoint", "enabled": false}. Field names must match HaloPSA API field names. |
Automation
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_automation_rule |
Pro | Write | [HaloPSA] Create a new automation rule. This defines an automated action triggered by events such as ticket creation, status changes, or SLA breaches. Returns the created rule with its assigned ID. Provide rule details as a JSON object. |
halo_delete_automation_rule |
Pro | Destructive | [HaloPSA] Delete an automation rule by numeric ID. This permanently removes the rule and stops its automated actions — it cannot be undone. Requires a valid rule ID — use halo_list_automation_rules to find IDs and verify the rule before deleting. |
halo_get_automation_rule |
Free | Read-only | [HaloPSA] Retrieve a single automation rule by numeric ID. Returns full rule details including name, trigger conditions, actions, and enabled status. Requires a valid rule ID — use halo_list_automation_rules to find IDs. |
halo_list_automation_rules |
Free | Read-only | [HaloPSA] List automation rules with pagination. Returns rule summaries including ID, name, enabled status, and trigger type. Use this to review configured automations or find rule IDs before fetching full details with halo_get_automation_rule. |
halo_update_automation_rule |
Pro | Write | [HaloPSA] Update an existing automation rule's fields such as name, conditions, actions, or enabled status. The JSON must include the rule 'id' field. Use halo_list_automation_rules or halo_get_automation_rule to find valid IDs and current field values. |
halo_create_automation_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleJson |
string | yes | JSON object with automation rule fields. Required: name. Optional: trigger_type, conditions, actions, enabled. Example: {"name": "Auto-assign VIP tickets", "enabled": true} |
halo_delete_automation_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleId |
integer | yes | The numeric HaloPSA automation rule ID to delete. Use halo_list_automation_rules to find valid IDs. Verify the rule with halo_get_automation_rule before deleting. |
halo_get_automation_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleId |
integer | yes | The numeric HaloPSA automation rule ID. Use halo_list_automation_rules to find valid IDs. |
halo_list_automation_rules parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
halo_update_automation_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleJson |
string | yes | JSON object with automation rule fields to update. Must include 'id'. Example: {"id": 7, "enabled": false, "name": "Disabled: Auto-assign VIP tickets"}. Field names must match HaloPSA API field names. |
Workflows
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_workflow |
Pro | Write | [HaloPSA] Create a new workflow. Workflows define multi-step processes for ticket handling, onboarding, or other structured procedures. Returns the created workflow with its assigned ID. Provide workflow details as a JSON object. |
halo_delete_workflow |
Pro | Destructive | [HaloPSA] Delete a workflow by numeric ID. This permanently removes the workflow definition — it cannot be undone. Active tickets using this workflow may be affected. Requires a valid workflow ID — use halo_list_workflows to find IDs and verify the workflow before deleting. |
halo_get_workflow |
Free | Read-only | [HaloPSA] Retrieve a single workflow by numeric ID. Returns full workflow details including name, description, and configuration. Requires a valid workflow ID — use halo_list_workflows to find IDs. |
halo_list_workflow_steps |
Free | Read-only | [HaloPSA] List steps for a specific workflow by workflow ID. Returns step details including ID, name, order, and configuration. Use this to understand the structure of a workflow or audit its steps. Requires a valid workflow ID — use halo_list_workflows to find IDs. |
halo_list_workflows |
Free | Read-only | [HaloPSA] List workflows with pagination. Returns workflow summaries including ID, name, and status. Use this to browse available workflows or find workflow IDs before fetching full details or listing steps. |
halo_update_workflow |
Pro | Write | [HaloPSA] Update an existing workflow's fields such as name, description, or configuration. The JSON must include the workflow 'id' field. Use halo_list_workflows or halo_get_workflow to find valid IDs and current field values. |
halo_create_workflow parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
workflowJson |
string | yes | JSON object with workflow fields. Required: name. Optional: description, steps. Example: {"name": "New Employee Onboarding", "description": "Standard onboarding process for new hires"} |
halo_delete_workflow parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
workflowId |
integer | yes | The numeric HaloPSA workflow ID to delete. Use halo_list_workflows to find valid IDs. Verify the workflow with halo_get_workflow before deleting. |
halo_get_workflow parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
workflowId |
integer | yes | The numeric HaloPSA workflow ID. Use halo_list_workflows to find valid IDs. |
halo_list_workflow_steps parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
workflowId |
integer | yes | The numeric HaloPSA workflow ID whose steps to list. Use halo_list_workflows to find valid IDs. |
halo_list_workflows parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
halo_update_workflow parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
workflowJson |
string | yes | JSON object with workflow fields to update. Must include 'id'. Example: {"id": 4, "name": "Updated Onboarding Workflow", "description": "Revised onboarding steps"}. Field names must match HaloPSA API field names. |
Asset Groups
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_asset_group |
Pro | Write | [HaloPSA] Create a new asset group. Asset groups organise assets into logical collections for management and reporting. Returns the created group with its assigned ID. Provide group details as a JSON object. |
halo_delete_asset_group |
Pro | Destructive | [HaloPSA] Delete an asset group by numeric ID. This permanently removes the group — it cannot be undone. Assets in the group are not deleted but will no longer be grouped. Requires a valid group ID — use halo_list_asset_groups to find IDs and verify the group before deleting. |
halo_get_asset_group |
Free | Read-only | [HaloPSA] Retrieve a single asset group by numeric ID. Returns full group details including name, description, and member assets. Requires a valid group ID — use halo_list_asset_groups to find IDs. |
halo_list_asset_groups |
Free | Read-only | [HaloPSA] List asset groups with pagination. Returns group summaries including ID, name, and description. Use this to browse asset groups or find group IDs for filtering assets or assigning assets to groups. |
halo_update_asset_group |
Pro | Write | [HaloPSA] Update an existing asset group's fields such as name or description. The JSON must include the group 'id' field. Use halo_list_asset_groups or halo_get_asset_group to find valid IDs and current field values. |
halo_create_asset_group parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
groupJson |
string | yes | JSON object with asset group fields. Required: name. Optional: description. Example: {"name": "Server Room A", "description": "All rack-mounted servers in Room A"} |
halo_delete_asset_group parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
groupId |
integer | yes | The numeric HaloPSA asset group ID to delete. Use halo_list_asset_groups to find valid IDs. Verify the group with halo_get_asset_group before deleting. |
halo_get_asset_group parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
groupId |
integer | yes | The numeric HaloPSA asset group ID. Use halo_list_asset_groups to find valid IDs. |
halo_list_asset_groups parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
halo_update_asset_group parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
groupJson |
string | yes | JSON object with asset group fields to update. Must include 'id'. Example: {"id": 8, "name": "Server Room B", "description": "Updated location description"}. Field names must match HaloPSA API field names. |
Release Pipeline
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_release_pipeline |
Pro | Write | [HaloPSA] Create a new release pipeline. Pipelines define the stages a release moves through during deployment (e.g., Dev, Staging, Production). Returns the created pipeline with its assigned ID. Provide pipeline details as a JSON object. |
halo_delete_release_pipeline |
Pro | Destructive | [HaloPSA] Delete a release pipeline by numeric ID. This permanently removes the pipeline definition — it cannot be undone. Releases using this pipeline may be affected. Requires a valid pipeline ID — use halo_list_release_pipelines to find IDs and verify the pipeline before deleting. |
halo_get_release_pipeline |
Free | Read-only | [HaloPSA] Retrieve a single release pipeline by numeric ID. Returns full pipeline details including name, stages, and configuration. Requires a valid pipeline ID — use halo_list_release_pipelines to find IDs. |
halo_list_release_pipelines |
Free | Read-only | [HaloPSA] List release pipelines with pagination. Returns pipeline summaries including ID, name, and stage count. Use this to browse configured deployment pipelines or find pipeline IDs before fetching full details. |
halo_create_release_pipeline parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pipelineJson |
string | yes | JSON object with release pipeline fields. Required: name. Optional: stages, description. Example: {"name": "Standard Deployment", "description": "Dev -> Staging -> Production pipeline"} |
halo_delete_release_pipeline parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pipelineId |
integer | yes | The numeric HaloPSA release pipeline ID to delete. Use halo_list_release_pipelines to find valid IDs. Verify the pipeline with halo_get_release_pipeline before deleting. |
halo_get_release_pipeline parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pipelineId |
integer | yes | The numeric HaloPSA release pipeline ID. Use halo_list_release_pipelines to find valid IDs. |
halo_list_release_pipelines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
Products & Components
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_product |
Pro | Write | [HaloPSA] Create a new product. Products can be composed of components and used in quotations, invoices, and contracts. Returns the created product with its assigned ID. Provide product details as a JSON object. |
halo_create_product_component |
Pro | Write | [HaloPSA] Create a new product component. Components are items that make up a product bundle. Returns the created component with its assigned ID. Provide component details as a JSON object. |
halo_delete_product |
Pro | Destructive | [HaloPSA] Delete a product by numeric ID. This permanently removes the product — it cannot be undone. Existing invoices or contracts referencing this product may be affected. Requires a valid product ID — use halo_list_products to find IDs and verify the product before deleting. |
halo_get_product |
Free | Read-only | [HaloPSA] Retrieve a single product by numeric ID. Returns full product details including name, description, pricing, and components. Requires a valid product ID — use halo_list_products to find IDs. |
halo_list_product_components |
Free | Read-only | [HaloPSA] List product components with optional product filter and pagination. Returns component summaries including ID, name, and parent product. Use this to see what items make up a product bundle. Filter by product ID to see components for a specific product. |
halo_list_products |
Free | Read-only | [HaloPSA] List products with optional search and pagination. Returns product summaries including ID, name, and description. Use this to browse the product catalogue or find product IDs before fetching full details or listing components. |
halo_create_product parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
productJson |
string | yes | JSON object with product fields. Required: name. Optional: description, unit_price, cost_price. Example: {"name": "Managed Endpoint Bundle", "description": "Includes AV, patching, and monitoring", "unit_price": 15.00} |
halo_create_product_component parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
componentJson |
string | yes | JSON object with product component fields. Required: product_id, item_id. Optional: quantity, unit_price. Example: {"product_id": 5, "item_id": 12, "quantity": 1} |
halo_delete_product parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
productId |
integer | yes | The numeric HaloPSA product ID to delete. Use halo_list_products to find valid IDs. Verify the product with halo_get_product before deleting. |
halo_get_product parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
productId |
integer | yes | The numeric HaloPSA product ID. Use halo_list_products to find valid IDs. |
halo_list_product_components parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
productId |
integer | no | null | Filter by product ID to list components for a specific product (optional). |
halo_list_products parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
search |
string | no | null | Search products by name or description (optional). |
Downtime
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_downtime |
Pro | Write | [HaloPSA] Create a new downtime record. This logs a service outage or scheduled maintenance window. Returns the created record with its assigned ID. Provide downtime details as a JSON object. |
halo_delete_downtime |
Pro | Destructive | [HaloPSA] Delete a downtime record by numeric ID. This permanently removes the downtime entry — it cannot be undone. This may affect SLA calculations and service availability reports. Requires a valid downtime ID — use halo_list_downtime to find IDs and verify the record before deleting. |
halo_get_downtime |
Free | Read-only | [HaloPSA] Retrieve a single downtime record by numeric ID. Returns full downtime details including service, start/end times, duration, reason, and impact. Requires a valid downtime ID — use halo_list_downtime to find IDs. |
halo_list_downtime |
Free | Read-only | [HaloPSA] List downtime records with optional filters and pagination. Returns downtime summaries including ID, service, start/end times, and reason. Use this to review service outages or scheduled maintenance windows. Filter by service, date range, or both. |
halo_create_downtime parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
downtimeJson |
string | yes | JSON object with downtime fields. Required: service_id, start_date. Optional: end_date, reason, planned. Example: {"service_id": 3, "start_date": "2026-04-05T02:00:00", "end_date": "2026-04-05T04:00:00", "reason": "Scheduled maintenance", "planned": true} |
halo_delete_downtime parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
downtimeId |
integer | yes | The numeric HaloPSA downtime record ID to delete. Use halo_list_downtime to find valid IDs. Verify the record with halo_get_downtime before deleting. |
halo_get_downtime parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
downtimeId |
integer | yes | The numeric HaloPSA downtime record ID. Use halo_list_downtime to find valid IDs. |
halo_list_downtime parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
endDate |
string | no | null | Filter by end date in ISO 8601 format, e.g. '2026-12-31' (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
serviceId |
integer | no | null | Filter by service ID to see downtime for a specific service (optional). Use halo_list_services to find service IDs. |
startDate |
string | no | null | Filter by start date in ISO 8601 format, e.g. '2026-01-01' (optional). |
Service Availability
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_service_availability |
Pro | Write | [HaloPSA] Create a new service availability record. This logs service uptime data for a specific period. Returns the created record with its assigned ID. Provide availability details as a JSON object. |
halo_delete_service_availability |
Pro | Destructive | [HaloPSA] Delete a service availability record by numeric ID. This permanently removes the availability entry — it cannot be undone. This may affect SLA compliance reports. Requires a valid availability ID — use halo_list_service_availability to find IDs and verify the record before deleting. |
halo_get_service_availability |
Free | Read-only | [HaloPSA] Retrieve a single service availability record by numeric ID. Returns full availability details including service, uptime percentage, downtime minutes, and time period. Requires a valid availability ID — use halo_list_service_availability to find IDs. |
halo_list_service_availability |
Free | Read-only | [HaloPSA] List service availability records with optional filters and pagination. Returns availability summaries including ID, service, uptime percentage, and time period. Use this to review service uptime history or generate availability reports. Filter by service, date range, or both. |
halo_create_service_availability parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
availabilityJson |
string | yes | JSON object with service availability fields. Required: service_id, start_date, end_date. Optional: uptime_percentage, downtime_minutes. Example: {"service_id": 3, "start_date": "2026-03-01", "end_date": "2026-03-31", "uptime_percentage": 99.95} |
halo_delete_service_availability parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
availabilityId |
integer | yes | The numeric HaloPSA service availability record ID to delete. Use halo_list_service_availability to find valid IDs. Verify the record with halo_get_service_availability before deleting. |
halo_get_service_availability parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
availabilityId |
integer | yes | The numeric HaloPSA service availability record ID. Use halo_list_service_availability to find valid IDs. |
halo_list_service_availability parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
endDate |
string | no | null | Filter by end date in ISO 8601 format, e.g. '2026-12-31' (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 100). |
serviceId |
integer | no | null | Filter by service ID to see availability for a specific service (optional). Use halo_list_services to find service IDs. |
startDate |
string | no | null | Filter by start date in ISO 8601 format, e.g. '2026-01-01' (optional). |
Contract Rules
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_contract_rule |
Pro | Write | [HaloPSA] Create or update a contract billing rule that defines how time and items are charged. This affects billing calculations. Returns the created rule with its assigned ID. Provide rule details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_contract_rule |
Pro | Destructive | [HaloPSA] Delete a contract billing rule by ID. This permanently removes the rule and may affect billing calculations for the associated contract. Requires a valid rule ID — use halo_list_contract_rules to find IDs. |
halo_get_contract_rule |
Free | Read-only | [HaloPSA] Retrieve a single contract billing rule by numeric ID. Returns full rule details including charge type, rate, and associated contract. Requires a valid rule ID — use halo_list_contract_rules to find IDs. |
halo_list_contract_rules |
Free | Read-only | [HaloPSA] List contract billing rules that define how time and items are charged. Returns paginated rule summaries including ID, name, contract association, and charge configuration. Use this to review billing rules or discover valid rule IDs. |
halo_create_contract_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractRuleJson |
string | yes | JSON object with contract rule fields. Example: {"name": "Standard Hourly", "contract_id": 42, "charge_rate": 150.00}. Field names must match HaloPSA API field names. |
halo_delete_contract_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractRuleId |
integer | yes | The numeric HaloPSA contract rule ID to delete. Use halo_list_contract_rules to find valid IDs. |
halo_get_contract_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractRuleId |
integer | yes | The numeric HaloPSA contract rule ID. Use halo_list_contract_rules to find valid IDs. |
halo_list_contract_rules parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Contract Schedules
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_contract_schedule |
Pro | Write | [HaloPSA] Create or update a contract billing schedule that defines when charges are generated. This affects when invoices are raised. Returns the created schedule with its assigned ID. Provide schedule details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_contract_schedule |
Pro | Destructive | [HaloPSA] Delete a contract billing schedule by ID. This permanently removes the schedule and may affect when future charges are generated. Requires a valid schedule ID — use halo_list_contract_schedules to find IDs. |
halo_get_contract_schedule |
Free | Read-only | [HaloPSA] Retrieve a single contract billing schedule by numeric ID. Returns full schedule details including frequency, next billing date, and associated contract. Requires a valid schedule ID — use halo_list_contract_schedules to find IDs. |
halo_list_contract_schedules |
Free | Read-only | [HaloPSA] List contract billing schedules that define when charges are generated. Returns paginated schedule summaries including ID, name, frequency, and associated contract. Use this to review billing cadence or discover valid schedule IDs. |
halo_create_contract_schedule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractScheduleJson |
string | yes | JSON object with contract schedule fields. Example: {"name": "Monthly Billing", "contract_id": 42, "frequency": "Monthly"}. Field names must match HaloPSA API field names. |
halo_delete_contract_schedule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractScheduleId |
integer | yes | The numeric HaloPSA contract schedule ID to delete. Use halo_list_contract_schedules to find valid IDs. |
halo_get_contract_schedule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
contractScheduleId |
integer | yes | The numeric HaloPSA contract schedule ID. Use halo_list_contract_schedules to find valid IDs. |
halo_list_contract_schedules parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Billing Templates
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_billing_template |
Pro | Write | [HaloPSA] Create or update a reusable billing template for contracts. Templates standardise billing configuration across contracts. Returns the created template with its assigned ID. Provide template details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_billing_template |
Pro | Destructive | [HaloPSA] Delete a billing template by ID. This permanently removes the template. Existing contracts using this template are not affected. Requires a valid template ID — use halo_list_billing_templates to find IDs. |
halo_get_billing_template |
Free | Read-only | [HaloPSA] Retrieve a single billing template by numeric ID. Returns full template details including billing lines, rates, and schedule configuration. Requires a valid template ID — use halo_list_billing_templates to find IDs. |
halo_list_billing_templates |
Free | Read-only | [HaloPSA] List reusable billing templates for contracts. Returns paginated template summaries including ID, name, and billing configuration. Use this to discover templates available for contract creation or review existing billing configurations. |
halo_create_billing_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
billingTemplateJson |
string | yes | JSON object with billing template fields. Example: {"name": "Standard MSP Template", "billing_cycle": "Monthly"}. Field names must match HaloPSA API field names. |
halo_delete_billing_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
billingTemplateId |
integer | yes | The numeric HaloPSA billing template ID to delete. Use halo_list_billing_templates to find valid IDs. |
halo_get_billing_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
billingTemplateId |
integer | yes | The numeric HaloPSA billing template ID. Use halo_list_billing_templates to find valid IDs. |
halo_list_billing_templates parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Budget Types
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_budget_type |
Pro | Write | [HaloPSA] Create or update a budget type for project and contract budgeting. Returns the created budget type with its assigned ID. Provide budget type details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_budget_type |
Pro | Destructive | [HaloPSA] Delete a budget type by ID. This permanently removes the budget type. Projects or contracts referencing this type may be affected. Requires a valid budget type ID — use halo_list_budget_types to find IDs. |
halo_get_budget_type |
Free | Read-only | [HaloPSA] Retrieve a single budget type by numeric ID. Returns full budget type details. Requires a valid budget type ID — use halo_list_budget_types to find IDs. |
halo_list_budget_types |
Free | Read-only | [HaloPSA] List budget types used for project and contract budgeting. Returns paginated budget type summaries including ID and name. Use this to discover valid budget type IDs for project or contract configuration. |
halo_create_budget_type parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
budgetTypeJson |
string | yes | JSON object with budget type fields. Example: {"name": "Time & Materials"}. Field names must match HaloPSA API field names. |
halo_delete_budget_type parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
budgetTypeId |
integer | yes | The numeric HaloPSA budget type ID to delete. Use halo_list_budget_types to find valid IDs. |
halo_get_budget_type parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
budgetTypeId |
integer | yes | The numeric HaloPSA budget type ID. Use halo_list_budget_types to find valid IDs. |
halo_list_budget_types parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Cost Centres
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_cost_centre |
Pro | Write | [HaloPSA] Create or update a cost centre for financial categorisation and reporting. Returns the created cost centre with its assigned ID. Provide cost centre details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_cost_centre |
Pro | Destructive | [HaloPSA] Delete a cost centre by ID. This permanently removes the cost centre. Records previously allocated to this cost centre may be affected. Requires a valid cost centre ID — use halo_list_cost_centres to find IDs. |
halo_get_cost_centre |
Free | Read-only | [HaloPSA] Retrieve a single cost centre by numeric ID. Returns full cost centre details including name, code, and any associated configuration. Requires a valid cost centre ID — use halo_list_cost_centres to find IDs. |
halo_list_cost_centres |
Free | Read-only | [HaloPSA] List cost centres for financial categorisation and reporting. Returns paginated cost centre summaries including ID, name, and code. Use this to discover valid cost centre IDs for expense allocation or financial reporting. |
halo_create_cost_centre parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
costCentreJson |
string | yes | JSON object with cost centre fields. Example: {"name": "Engineering", "code": "ENG-001"}. Field names must match HaloPSA API field names. |
halo_delete_cost_centre parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
costCentreId |
integer | yes | The numeric HaloPSA cost centre ID to delete. Use halo_list_cost_centres to find valid IDs. |
halo_get_cost_centre parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
costCentreId |
integer | yes | The numeric HaloPSA cost centre ID. Use halo_list_cost_centres to find valid IDs. |
halo_list_cost_centres parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
CSP Invoices
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_csp_invoice |
Pro | Write | [HaloPSA] Create or update a CSP invoice record. This is typically used for syncing invoice data from Microsoft Partner Centre. Returns the created CSP invoice with its assigned ID. Provide invoice details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_csp_invoice |
Pro | Destructive | [HaloPSA] Delete a CSP invoice by ID. This permanently removes the CSP invoice record. Requires a valid CSP invoice ID — use halo_list_csp_invoices to find IDs. |
halo_get_csp_invoice |
Free | Read-only | [HaloPSA] Retrieve a single CSP invoice by numeric ID. Returns full invoice details including line items, subscription details, and billing period. Requires a valid CSP invoice ID — use halo_list_csp_invoices to find IDs. |
halo_list_csp_invoices |
Free | Read-only | [HaloPSA] List Microsoft Cloud Solution Provider (CSP) invoices synced from partner centre. Returns paginated CSP invoice summaries including ID, client, amount, and billing period. Use this to review cloud subscription billing or reconcile CSP charges. |
halo_create_csp_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cspInvoiceJson |
string | yes | JSON object with CSP invoice fields. Example: {"client_id": 42, "billing_period": "2024-01", "total": 1500.00}. Field names must match HaloPSA API field names. |
halo_delete_csp_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cspInvoiceId |
integer | yes | The numeric HaloPSA CSP invoice ID to delete. Use halo_list_csp_invoices to find valid IDs. |
halo_get_csp_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
cspInvoiceId |
integer | yes | The numeric HaloPSA CSP invoice ID. Use halo_list_csp_invoices to find valid IDs. |
halo_list_csp_invoices parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Custom Queries
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_custom_query |
Pro | Write | [HaloPSA] Create or update a custom database query for reporting and data extraction. Use with caution as queries can access sensitive data. Returns the created query with its assigned ID. Provide query details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_custom_query |
Pro | Destructive | [HaloPSA] Delete a custom query by ID. This permanently removes the query definition. Reports depending on this query may be affected. Requires a valid query ID — use halo_list_custom_queries to find IDs. |
halo_get_custom_query |
Free | Read-only | [HaloPSA] Retrieve a single custom query by numeric ID. Returns full query details including SQL definition and parameters. Requires a valid query ID — use halo_list_custom_queries to find IDs. |
halo_list_custom_queries |
Free | Read-only | [HaloPSA] List custom database queries used for reporting and data extraction. Returns paginated query summaries including ID, name, and description. Use this to discover available custom queries or find query IDs for execution. |
halo_create_custom_query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
customQueryJson |
string | yes | JSON object with custom query fields. Example: {"name": "Open Tickets by Client", "sql": "SELECT ..."}. Field names must match HaloPSA API field names. |
halo_delete_custom_query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
customQueryId |
integer | yes | The numeric HaloPSA custom query ID to delete. Use halo_list_custom_queries to find valid IDs. |
halo_get_custom_query parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
customQueryId |
integer | yes | The numeric HaloPSA custom query ID. Use halo_list_custom_queries to find valid IDs. |
halo_list_custom_queries parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
Custom Tables
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_custom_table |
Pro | Write | [HaloPSA] Create or update a custom data table for extending Halo's data model. This modifies the system's data structure. Returns the created table with its assigned ID. Provide table details as a JSON object with fields matching HaloPSA API field names. |
halo_delete_custom_table |
Pro | Destructive | [HaloPSA] Delete a custom table by ID. This permanently removes the table and all its data. Use with extreme caution. Requires a valid table ID — use halo_list_custom_tables to find IDs. |
halo_get_custom_table |
Free | Read-only | [HaloPSA] Retrieve a single custom table by numeric ID. Returns full table details including column definitions and data types. Requires a valid table ID — use halo_list_custom_tables to find IDs. |
halo_list_custom_tables |
Free | Read-only | [HaloPSA] List custom data tables used for extending Halo's data model. Returns paginated table summaries including ID, name, and column definitions. Use this to discover available custom tables or find table IDs for data operations. |
halo_create_custom_table parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
customTableJson |
string | yes | JSON object with custom table fields. Example: {"name": "Vendor Certifications", "columns": [...]}. Field names must match HaloPSA API field names. |
halo_delete_custom_table parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
customTableId |
integer | yes | The numeric HaloPSA custom table ID to delete. Use halo_list_custom_tables to find valid IDs. |
halo_get_custom_table parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
customTableId |
integer | yes | The numeric HaloPSA custom table ID. Use halo_list_custom_tables to find valid IDs. |
halo_list_custom_tables parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
pageNo |
integer | no | 1 | Page number for pagination (default 1). Increment to retrieve subsequent pages. |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
PDF Templates
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_pdf_template |
Pro | Write | [HaloPSA] Create or update a PDF template used for generating documents like invoices, quotes, and delivery notes. The template HTML supports HaloPSA merge variables for dynamic content. The JSON should include fields like name, mainhtml, subhtml, headerhtml, footerhtml, and css. To update an existing template, include the 'id' field. Field names must match HaloPSA API field names. |
halo_delete_pdf_template |
Pro | Destructive | [HaloPSA] Delete a PDF template by numeric ID. This permanently removes the template — it cannot be undone. Documents previously generated from this template are not affected. Use with caution. Requires a valid template ID — use halo_list_pdf_templates to find IDs and verify the template before deleting. |
halo_generate_document |
Pro | Write | [HaloPSA] Generate a PDF document from a template. Triggers document creation using a specified template and entity data (e.g., invoice, quote, contract). The JSON must include the template ID and the entity reference. Returns the generated document result. Use halo_list_pdf_templates to find valid template IDs. |
halo_get_pdf_template |
Free | Read-only | [HaloPSA] Retrieve full details for a single PDF template by numeric ID. Returns the complete template including mainhtml, subhtml, header/footer HTML, CSS styles, and pages with their own HTML content. Use this to inspect or modify template markup. Requires a valid template ID — use halo_list_pdf_templates to find IDs. |
halo_get_pdf_template_library_item |
Free | Read-only | [HaloPSA] Retrieve full details for a single item from the HaloPSA PDF template repository by numeric ID. Returns the complete library template including HTML content and structure. Use this to inspect a library template before importing or adapting it. Requires a valid repository item ID — use halo_list_pdf_template_library to find IDs. |
halo_list_pdf_template_library |
Free | Read-only | [HaloPSA] Browse the HaloPSA pre-built PDF template repository. Returns available template library items that can be imported into your instance. Use this to discover professional templates before customising them with halo_get_pdf_template_library_item. |
halo_list_pdf_templates |
Free | Read-only | [HaloPSA] List PDF templates used for generating invoices, quotes, delivery notes, and other documents. Returns template IDs, names, and types. Optionally filter by template type or search string. Use this to discover template IDs before fetching full HTML content with halo_get_pdf_template. |
halo_create_pdf_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateJson |
string | yes | JSON object representing the PDF template. Example: {"name": "Custom Invoice", "mainhtml": "<html>...</html>", "css": "body { font-family: Arial; }"}. Include 'id' to update an existing template. Field names must match HaloPSA API field names. |
halo_delete_pdf_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateId |
integer | yes | The numeric HaloPSA PDF template ID to delete. Use halo_list_pdf_templates to find valid IDs. Verify the template with halo_get_pdf_template before deleting. |
halo_generate_document parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
requestJson |
string | yes | JSON object with the document generation request. Must include the template and entity references. Example: {"template_id": 5, "ticket_id": 1234}. Field names must match HaloPSA API field names. |
halo_get_pdf_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateId |
integer | yes | The numeric HaloPSA PDF template ID. Use halo_list_pdf_templates to find valid IDs. |
halo_get_pdf_template_library_item parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
itemId |
integer | yes | The numeric HaloPSA PDF template repository item ID. Use halo_list_pdf_template_library to find valid IDs. |
halo_list_pdf_templates parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
search |
string | no | null | Search string to filter templates by name (optional). |
type |
integer | no | null | Filter by template type ID (optional). Different types correspond to invoices, quotes, contracts, etc. |
Email Templates
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_email_template |
Pro | Write | [HaloPSA] Create or update an email template for automated notifications and customer communications. Templates support HTML content with HaloPSA merge variables for dynamic data. The JSON should include fields like name, subject, body_html, body_text, and message_group. To update an existing template, include the 'id' field. Use halo_list_email_template_variables to discover available merge variables. |
halo_create_email_template_variable |
Pro | Write | [HaloPSA] Create a custom email template merge variable. Custom variables extend the built-in set and can be used in email template HTML content. The JSON should include the variable name, description, and data mapping. To update an existing variable, include the 'id' field. |
halo_delete_email_template |
Pro | Destructive | [HaloPSA] Delete an email template by numeric ID. This permanently removes the template — it cannot be undone. Any automation rules referencing this template will stop sending notifications. Use with caution. Requires a valid template ID — use halo_list_email_templates to find IDs and verify the template before deleting. |
halo_delete_email_template_variable |
Pro | Destructive | [HaloPSA] Delete a custom email template variable by numeric ID. This permanently removes the variable — it cannot be undone. Any templates using this variable will show the raw variable tag instead of substituted content. Use with caution. Requires a valid variable ID — use halo_list_email_template_variables to find IDs. |
halo_get_email_template |
Free | Read-only | [HaloPSA] Retrieve full details for a single email template by numeric ID. Returns the complete template including body_html, body_text, body_sms, call_script, subject line, and available merge variables. Use this to inspect or modify template content. Requires a valid template ID — use halo_list_email_templates to find IDs. |
halo_get_email_template_variable |
Free | Read-only | [HaloPSA] Retrieve full details for a single email template variable by numeric ID. Returns the variable definition including its name, description, and data source. Requires a valid variable ID — use halo_list_email_template_variables to find IDs. |
halo_list_email_template_variables |
Free | Read-only | [HaloPSA] List all available email template merge variables. Returns variable IDs, names, and descriptions. These variables can be used in email template HTML content (e.g., {{ticket_id}}, {{user_name}}) and will be dynamically replaced when emails are sent. Use this to discover which variables are available when creating or editing email templates. |
halo_list_email_templates |
Free | Read-only | [HaloPSA] List email templates used for automated notifications, ticket replies, and customer communications. Returns template IDs, names, and message groups. Optionally filter by message group or configuration status. Use this to discover template IDs before fetching full HTML content with halo_get_email_template. |
halo_preview_email_template |
Free | Read-only | [HaloPSA] Render a live preview of an email template with variable substitution against real ticket data. Accepts a single template object (not an array) and optionally a ticket ID for populating merge variables with actual values. Returns the rendered HTML output. Use this to verify template changes look correct before saving. |
halo_create_email_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateJson |
string | yes | JSON object representing the email template. Example: {"name": "Ticket Created", "subject": "Ticket #{{ticket_id}} Created", "body_html": "<html>...</html>"}. Include 'id' to update an existing template. Field names must match HaloPSA API field names. |
halo_create_email_template_variable parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
variableJson |
string | yes | JSON object representing the email template variable to create. Example: {"name": "custom_greeting", "description": "Custom greeting text"}. Include 'id' to update an existing variable. Field names must match HaloPSA API field names. |
halo_delete_email_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateId |
integer | yes | The numeric HaloPSA email template ID to delete. Use halo_list_email_templates to find valid IDs. Verify the template with halo_get_email_template before deleting. |
halo_delete_email_template_variable parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
variableId |
integer | yes | The numeric HaloPSA email template variable ID to delete. Use halo_list_email_template_variables to find valid IDs. Verify the variable with halo_get_email_template_variable before deleting. |
halo_get_email_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateId |
integer | yes | The numeric HaloPSA email template ID. Use halo_list_email_templates to find valid IDs. |
halo_get_email_template_variable parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
variableId |
integer | yes | The numeric HaloPSA email template variable ID. Use halo_list_email_template_variables to find valid IDs. |
halo_list_email_templates parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
isConfig |
boolean | no | null | Filter to configuration templates only (optional). Set true to see system configuration templates, false for user-created templates. |
messageGroup |
integer | no | null | Filter by message group ID (optional). Groups organise templates by purpose — e.g., ticket notifications, approvals, password resets. |
halo_preview_email_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateJson |
string | yes | JSON object representing the email template to preview. Must be a single object, NOT an array. Example: {"body_html": "<p>Dear {{user_name}},</p>", "subject": "Ticket #{{ticket_id}}"}. Optionally include 'ticket_id' to substitute real ticket data into merge variables. | |
ticketId |
integer | no | null | Ticket ID for variable substitution (optional). When provided, merge variables like {{ticket_id}}, {{user_name}} etc. are replaced with actual values from this ticket. |
Email Rules
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_email_rule |
Pro | Write | [HaloPSA] Create or update an email rule for inbound email processing. Rules define how incoming emails are matched and converted into tickets, including sender matching, subject parsing, field extraction, and ticket defaults. The JSON should include matching criteria and processing actions. To update an existing rule, include the 'id' field. Field names must match HaloPSA API field names. |
halo_delete_email_rule |
Pro | Destructive | [HaloPSA] Delete an email rule by numeric ID. This permanently removes the rule — it cannot be undone. Inbound emails previously matched by this rule will fall through to default processing. Use with caution. Requires a valid rule ID — use halo_list_email_rules to find IDs and verify the rule before deleting. |
halo_get_email_rule |
Free | Read-only | [HaloPSA] Retrieve full details for a single email rule by numeric ID. Returns the complete rule including matching criteria (sender, subject, body patterns), field extraction mappings, ticket creation defaults, and processing actions. Use this to understand how inbound emails are routed and parsed. Requires a valid rule ID — use halo_list_email_rules to find IDs. |
halo_list_email_rules |
Free | Read-only | [HaloPSA] List email rules that control how inbound emails are processed into tickets. Returns rule IDs, names, and matching criteria. Optionally filter by sender address or rule type. Use this to discover rule IDs before fetching full details with halo_get_email_rule. |
halo_create_email_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleJson |
string | yes | JSON object representing the email rule. Example: {"name": "VIP Client Rule", "fromaddress": "*@vipclient.com", "tickettype_id": 1}. Include 'id' to update an existing rule. Field names must match HaloPSA API field names. |
halo_delete_email_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleId |
integer | yes | The numeric HaloPSA email rule ID to delete. Use halo_list_email_rules to find valid IDs. Verify the rule with halo_get_email_rule before deleting. |
halo_get_email_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleId |
integer | yes | The numeric HaloPSA email rule ID. Use halo_list_email_rules to find valid IDs. |
halo_list_email_rules parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
fromAddress |
string | no | null | Filter by sender email address (optional). Returns rules matching a specific from address pattern. |
type |
integer | no | null | Filter by rule type ID (optional). Different types handle different inbound email processing scenarios. |
Mail Campaigns
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_campaign_email |
Pro | Write | [HaloPSA] Create or update an individual email within a mail campaign. Use this to add recipients or customise specific emails in a campaign. The JSON should include the campaign reference and email content. To update an existing campaign email, include the 'id' field. Field names must match HaloPSA API field names. |
halo_create_mail_campaign |
Pro | Write | [HaloPSA] Create or update a mail campaign for bulk customer communications. Campaigns allow sending targeted emails to groups of contacts or clients. The JSON should include campaign name, recipients, and content settings. To update an existing campaign, include the 'id' field. Field names must match HaloPSA API field names. |
halo_delete_campaign_email |
Pro | Destructive | [HaloPSA] Delete a campaign email by numeric ID. This permanently removes the email from the campaign — it cannot be undone. Already-sent emails are not recalled. Use with caution. Requires a valid campaign email ID — use halo_list_campaign_emails to find IDs. |
halo_delete_mail_campaign |
Pro | Destructive | [HaloPSA] Delete a mail campaign by numeric ID. This permanently removes the campaign and its configuration — it cannot be undone. Emails already sent are not affected. Use with caution. Requires a valid campaign ID — use halo_list_mail_campaigns to find IDs and verify before deleting. |
halo_get_campaign_email |
Free | Read-only | [HaloPSA] Retrieve full details for a single campaign email by numeric ID. Returns the email content, recipient, send status, and delivery information. Requires a valid campaign email ID — use halo_list_campaign_emails to find IDs. |
halo_get_campaign_log |
Free | Read-only | [HaloPSA] Retrieve full details for a single campaign delivery log entry by numeric ID. Returns the complete log including send timestamp, delivery status, bounce details, and recipient information. Requires a valid log ID — use halo_list_campaign_logs to find IDs. |
halo_get_mail_campaign |
Free | Read-only | [HaloPSA] Retrieve full details for a single mail campaign by numeric ID. Returns the campaign configuration including recipients, schedule, and content. Requires a valid campaign ID — use halo_list_mail_campaigns to find IDs. |
halo_list_campaign_emails |
Free | Read-only | [HaloPSA] List individual email messages within mail campaigns. Returns email IDs, subjects, recipients, and send statuses. Use this to see what emails have been queued or sent for campaigns. Use halo_get_campaign_email for full email content. |
halo_list_campaign_logs |
Free | Read-only | [HaloPSA] List delivery logs for mail campaigns. Returns log entries with send timestamps, delivery statuses, bounce information, and recipient details. Use this to monitor campaign delivery and troubleshoot failed sends. |
halo_list_mail_campaigns |
Free | Read-only | [HaloPSA] List mail campaigns for bulk customer communications. Returns campaign IDs, names, statuses, and summary metrics. Use this to discover campaign IDs before fetching details with halo_get_mail_campaign or viewing campaign emails with halo_list_campaign_emails. |
halo_create_campaign_email parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
emailJson |
string | yes | JSON object representing the campaign email. Example: {"campaign_id": 1, "to": "user@example.com", "subject": "Monthly Update"}. Include 'id' to update an existing campaign email. Field names must match HaloPSA API field names. |
halo_create_mail_campaign parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
campaignJson |
string | yes | JSON object representing the mail campaign. Example: {"name": "Monthly Newsletter", "subject": "Updates from IT"}. Include 'id' to update an existing campaign. Field names must match HaloPSA API field names. |
halo_delete_campaign_email parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
emailId |
integer | yes | The numeric HaloPSA campaign email ID to delete. Use halo_list_campaign_emails to find valid IDs. Verify the email with halo_get_campaign_email before deleting. |
halo_delete_mail_campaign parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
campaignId |
integer | yes | The numeric HaloPSA mail campaign ID to delete. Use halo_list_mail_campaigns to find valid IDs. Verify the campaign with halo_get_mail_campaign before deleting. |
halo_get_campaign_email parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
emailId |
integer | yes | The numeric HaloPSA campaign email ID. Use halo_list_campaign_emails to find valid IDs. |
halo_get_campaign_log parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
logId |
integer | yes | The numeric HaloPSA campaign log ID. Use halo_list_campaign_logs to find valid IDs. |
halo_get_mail_campaign parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
campaignId |
integer | yes | The numeric HaloPSA mail campaign ID. Use halo_list_mail_campaigns to find valid IDs. |
Integration Management
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_integration_config |
Free | Read-only | [HaloPSA] Retrieve full details for a single integration configuration by numeric ID. Returns authentication settings, sync schedules, and module parameters. Requires a valid config ID — use halo_list_integration_configs to find IDs. |
halo_get_integration_error |
Free | Read-only | [HaloPSA] Retrieve full details for a single integration error by numeric ID. Returns the error message, stack trace, affected entity, and timestamps. Requires a valid error ID — use halo_list_integration_errors to find IDs. |
halo_get_integration_request |
Free | Read-only | [HaloPSA] Retrieve full details for a single integration request by numeric ID. Returns the full request/response payload, headers, and status. Requires a valid request ID — use halo_list_integration_requests to find IDs. |
halo_list_integration_configs |
Free | Read-only | [HaloPSA] List all configured integrations with their authentication status and module details. Returns integration IDs, names, types, and connection states. Use this to discover which third-party integrations are set up in the Halo instance and whether they are currently connected. |
halo_list_integration_errors |
Free | Read-only | [HaloPSA] List integration sync errors with pagination. Returns error messages, timestamps, and affected records. Use this to troubleshoot failed synchronisations between Halo and connected third-party systems. Filter by module or detail ID to narrow results. |
halo_list_integration_field_mappings |
Free | Read-only | [HaloPSA] List field mappings between Halo and third-party integration fields. Returns how Halo fields correspond to external system fields. Use this to understand data transformation rules or troubleshoot why fields are not syncing as expected. |
halo_list_integration_requests |
Free | Read-only | [HaloPSA] List integration API requests (inbound and outbound) with pagination. Returns request/response logs for troubleshooting integration data flow. Use this to audit what data is being exchanged between Halo and third-party systems. |
halo_list_integration_site_mappings |
Free | Read-only | [HaloPSA] List site mappings between Halo and third-party integrations. Returns how Halo sites are linked to external system sites/locations. Use this to verify site synchronisation or troubleshoot mapping issues between Halo and connected RMM/PSA tools. |
halo_get_integration_config parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
configId |
integer | yes | The numeric HaloPSA integration config ID. Use halo_list_integration_configs to find valid IDs. | |
includeDetails |
boolean | no | false | Include extended details such as field mappings and sync history (default false). |
halo_get_integration_error parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
errorId |
integer | yes | The numeric HaloPSA integration error ID. Use halo_list_integration_errors to find valid IDs. |
halo_get_integration_request parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
requestId |
integer | yes | The numeric HaloPSA integration request ID. Use halo_list_integration_requests to find valid IDs. |
halo_list_integration_errors parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
detailId |
integer | no | null | Filter by detail/record ID within the integration (optional). |
moduleId |
integer | no | null | Filter by integration module ID (optional). Use halo_list_integration_configs to find module IDs. |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_integration_field_mappings parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
moduleId |
integer | no | null | Filter by integration module ID (optional). Use halo_list_integration_configs to find module IDs. |
halo_list_integration_requests parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
detailId |
integer | no | null | Filter by detail/record ID within the integration (optional). |
inboundOnly |
boolean | no | null | When true, only return inbound requests from the external system (optional). |
moduleId |
integer | no | null | Filter by integration module ID (optional). Use halo_list_integration_configs to find module IDs. |
outboundOnly |
boolean | no | null | When true, only return outbound requests to the external system (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
halo_list_integration_site_mappings parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
activeOnly |
boolean | no | null | When true, only return active mappings (optional). |
moduleId |
integer | no | null | Filter by integration module ID (optional). Use halo_list_integration_configs to find module IDs. |
thirdPartyClientId |
string | no | null | Filter by third-party client/company ID in the external system (optional). |
Integration Data
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_automate_data |
Free | Read-only | [HaloPSA] Retrieve ConnectWise Automate / LabTech data (computers, monitors, scripts) from Halo's connected Automate integration. Use datatype to select the category of RMM data to retrieve. |
halo_get_auvik_data |
Free | Read-only | [HaloPSA] Retrieve Auvik data (networks, devices, alerts) from Halo's connected Auvik network monitoring integration. Use datatype to select the category of network data to retrieve. |
halo_get_avalara_data |
Free | Read-only | [HaloPSA] Retrieve Avalara tax data from Halo's connected tax integration. |
halo_get_azure_ad_data |
Free | Read-only | [HaloPSA] Retrieve Azure Active Directory / Entra ID data (users, groups, licenses) from Halo's connected Azure AD integration. Use datatype to select the category of data to retrieve. |
halo_get_azure_sentinel_data |
Free | Read-only | [HaloPSA] Retrieve Azure Sentinel / Microsoft Sentinel data (incidents, alerts, analytics rules) from Halo's connected Sentinel integration. Use datatype to select the category of security data to retrieve. |
halo_get_business_central_data |
Free | Read-only | [HaloPSA] Retrieve Microsoft Dynamics 365 Business Central data from Halo's connected accounting integration. |
halo_get_connectwise_manage_data |
Free | Read-only | [HaloPSA] Retrieve ConnectWise Manage data (tickets, companies, contacts) from Halo's connected ConnectWise integration. Use datatype to select the category of PSA data to retrieve. |
halo_get_datto_rmm_data |
Free | Read-only | [HaloPSA] Retrieve Datto RMM data (devices, alerts, patch status) from Halo's connected Datto integration. Use datatype to select the category of RMM data to retrieve. |
halo_get_domotz_data |
Free | Read-only | [HaloPSA] Retrieve Domotz data (agents, devices, alerts) from Halo's connected Domotz network monitoring integration. Use datatype to select the category of monitoring data to retrieve. |
halo_get_exact_online_data |
Free | Read-only | [HaloPSA] Retrieve Exact Online accounting data from Halo's connected integration. |
halo_get_fortnox_data |
Free | Read-only | [HaloPSA] Retrieve Fortnox accounting data from Halo's connected integration. |
halo_get_gocardless_data |
Free | Read-only | [HaloPSA] Retrieve GoCardless data from Halo's connected payments integration. |
halo_get_gocardless_payments |
Free | Read-only | [HaloPSA] Retrieve GoCardless payments from Halo's connected payments integration. |
halo_get_intacct_data |
Free | Read-only | [HaloPSA] Retrieve Sage Intacct accounting data from Halo's connected integration. |
halo_get_intune_data |
Free | Read-only | [HaloPSA] Retrieve Microsoft Intune data (devices, compliance policies, app deployments) from Halo's connected Intune integration. Use datatype to select the category of data to retrieve. |
halo_get_itglue_data |
Free | Read-only | [HaloPSA] Retrieve IT Glue data (configurations, flexible assets, documents) from Halo's connected IT Glue integration. Use datatype to select the category of documentation data to retrieve. |
halo_get_kaseya_vsa_data |
Free | Read-only | [HaloPSA] Retrieve Kaseya VSA data (agents, machine groups, procedures) from Halo's connected Kaseya VSA integration. Use datatype to select the category of RMM data to retrieve. |
halo_get_kashflow_data |
Free | Read-only | [HaloPSA] Retrieve KashFlow accounting data from Halo's connected integration. Use datatype to select the category of data, and tenantId to scope to a specific KashFlow tenant. |
halo_get_liongard_data |
Free | Read-only | [HaloPSA] Retrieve Liongard data (inspectors, metrics, timelines) from Halo's connected Liongard integration. Use datatype to select the category of environment data to retrieve. |
halo_get_microsoft_csp_data |
Free | Read-only | [HaloPSA] Retrieve Microsoft CSP data (subscriptions, licenses, tenants) from Halo's connected Microsoft Partner Center integration. Use datatype to select the category of data: subscriptions, licenses, customers, etc. |
halo_get_myob_data |
Free | Read-only | [HaloPSA] Retrieve MYOB accounting data from Halo's connected integration. |
halo_get_ncentral_data |
Free | Read-only | [HaloPSA] Retrieve N-able N-central data (devices, service items, tasks) from Halo's connected N-central integration. Use datatype to select the category of RMM data to retrieve. |
halo_get_pax8_data |
Free | Read-only | [HaloPSA] Retrieve Pax8 data (subscriptions, products, companies) from Halo's connected Pax8 distributor integration. Use datatype to select the category of distributor data to retrieve. |
halo_get_prtg_data |
Free | Read-only | [HaloPSA] Retrieve PRTG data (sensors, devices, alerts) from Halo's connected PRTG Network Monitor integration. Use datatype to select the category of monitoring data to retrieve. |
halo_get_quickbooks_data |
Free | Read-only | [HaloPSA] Retrieve QuickBooks Online data (e.g. Account, Customer, Payment, Invoice, Item, Vendor) from Halo's connected QuickBooks integration. datatype selects the QBO entity type (friendly lowercase/plural forms like "accounts" are normalized to the QBO PascalCase singular "Account"). When companyId is omitted the tool auto-targets the single connected QBO company if exactly one is connected; if zero or several are connected it returns a clear "companyId required" error. The optional connection/account filters narrow results further. |
halo_get_sage_business_cloud_data |
Free | Read-only | [HaloPSA] Retrieve Sage Business Cloud accounting data from Halo's connected integration. |
halo_get_sentinelone_data |
Free | Read-only | [HaloPSA] Retrieve the SentinelOne integration connection details configured in Halo (returns the /SentinelOneDetails resource). NOTE: in the current Halo API there is no standalone SentinelOne data-read endpoint — the legacy /IntegrationData/Get/SentinelOne path no longer exists — so this returns the connection-configuration records rather than agent/threat data. |
halo_get_snelstart_data |
Free | Read-only | [HaloPSA] Retrieve SnelStart accounting data from Halo's connected integration. Use datatype to select the category of data. |
halo_get_solarwinds_rmm_data |
Free | Read-only | [HaloPSA] Retrieve SolarWinds RMM / N-able RMM data (devices, alerts, patch status) from Halo's connected SolarWinds RMM integration. Use datatype to select the category of RMM data to retrieve. |
halo_get_sophos_data |
Free | Read-only | [HaloPSA] Retrieve the Sophos integration connection details configured in Halo (returns the /SophosDetails resource). NOTE: in the current Halo API there is no standalone Sophos data-read endpoint — the legacy /IntegrationData/Get/Sophos path no longer exists — so this returns the connection-configuration records rather than endpoint/alert data. |
halo_get_stripe_data |
Free | Read-only | [HaloPSA] Retrieve Stripe data from Halo's connected payments integration. |
halo_get_xero_data |
Free | Read-only | [HaloPSA] Retrieve Xero data from Halo's connected Xero accounting integration. datatype is REQUIRED and must name a Xero entity using Xero's PascalCase naming — e.g. Invoices, Contacts, Payments, Accounts, CreditNotes, Items, BankTransactions. Lowercase or guessed-plural values ("invoices", "contact") are rejected by Halo with 'Invalid Data Type'. This tool passes datatype straight through to Halo's Xero integration, so the Xero integration must be connected in Halo (Configuration > Integrations > Xero) or every datatype returns 'Invalid Data Type'. |
halo_get_automate_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. computers, monitors, scripts). |
search |
string | no | null | Search text to filter results. |
halo_get_auvik_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. networks, devices, alerts). |
search |
string | no | null | Search text to filter results. |
halo_get_azure_ad_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
azureTenants |
string | no | null | Filter by Azure tenant ID or name. |
datatype |
string | no | null | Data category to retrieve (e.g. users, groups, licenses). |
search |
string | no | null | Search text to filter results. |
halo_get_azure_sentinel_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. incidents, alerts, rules). |
search |
string | no | null | Search text to filter results. |
halo_get_connectwise_manage_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. tickets, companies, contacts). |
search |
string | no | null | Search text to filter results. |
halo_get_datto_rmm_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. devices, alerts, patches). |
search |
string | no | null | Search text to filter results. |
halo_get_domotz_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. agents, devices, alerts). |
search |
string | no | null | Search text to filter results. |
halo_get_intune_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. devices, compliancepolicies, apps). |
search |
string | no | null | Search text to filter results. |
halo_get_itglue_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. configurations, flexibleassets, documents). |
search |
string | no | null | Search text to filter results. |
halo_get_kaseya_vsa_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. agents, machinegroups, procedures). |
search |
string | no | null | Search text to filter results. |
halo_get_kashflow_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (optional). |
tenantId |
integer | no | null | KashFlow tenant ID to scope results to (optional). |
halo_get_liongard_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. inspectors, metrics, timelines). |
search |
string | no | null | Search text to filter results. |
halo_get_microsoft_csp_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
azureTenants |
string | no | null | Filter by Azure tenant ID or name. |
datatype |
string | no | null | Data category to retrieve (e.g. subscriptions, licenses, customers). |
search |
string | no | null | Search text to filter results. |
halo_get_ncentral_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. devices, serviceitems, tasks). |
search |
string | no | null | Search text to filter results. |
halo_get_pax8_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. subscriptions, products, companies). |
search |
string | no | null | Search text to filter results. |
halo_get_prtg_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. sensors, devices, alerts). |
search |
string | no | null | Search text to filter results. |
halo_get_quickbooks_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
accountClassification |
string | no | null | Filter to a QuickBooks account classification (optional). |
accountSubtype |
string | no | null | Filter to a QuickBooks account sub-type (optional). |
accountType |
string | no | null | Filter to a QuickBooks account type (optional). |
companyId |
string | no | null | QuickBooks Online company ID (QBO realm id) to scope results to. Optional: when omitted, defaults to the single connected QBO company if exactly one is connected; if zero or multiple are connected the tool returns a 'companyId required' validation error. Use halo_list_quickbooks_details to discover company IDs. |
connectionId |
integer | no | null | Halo connection ID for a specific QBO connection (optional). |
datatype |
string | no | null | QuickBooks Online entity type to retrieve. Accepts QBO entity names (e.g. Account, Customer, Invoice, Payment, Item, Vendor); common lowercase or plural forms like "accounts" or "customers" are normalized automatically to the QBO PascalCase singular. |
halo_get_snelstart_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (optional). |
halo_get_solarwinds_rmm_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | Data category to retrieve (e.g. devices, alerts, patches). |
search |
string | no | null | Search text to filter results. |
halo_get_xero_data parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
datatype |
string | no | null | REQUIRED. Xero entity to retrieve, PascalCase (Xero convention): Invoices, Contacts, Payments, Accounts, CreditNotes, Items, BankTransactions, etc. Omitting it — or passing a lowercase/plural-guessed value — makes Halo return 'Invalid Data Type'. |
search |
string | no | null | Search text to filter results. |
Accounting Details
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_avalara_detail |
Free | Read-only | [HaloPSA] Get a single Avalara connection detail by ID. |
halo_get_business_central_detail |
Free | Read-only | [HaloPSA] Get a single Business Central connection detail by ID. |
halo_get_fortnox_detail |
Free | Read-only | [HaloPSA] Get a single Fortnox connection detail by ID. |
halo_get_kashflow_detail |
Free | Read-only | [HaloPSA] Get a single KashFlow connection detail by ID. |
halo_get_myob_detail |
Free | Read-only | [HaloPSA] Get a single MYOB connection detail by ID. |
halo_get_quickbooks_detail |
Free | Read-only | [HaloPSA] Get a single QuickBooks Online connection detail by ID. |
halo_get_sage_business_cloud_detail |
Free | Read-only | [HaloPSA] Get a single Sage Business Cloud connection detail by ID. |
halo_get_xero_detail |
Free | Read-only | [HaloPSA] Get a single Xero connection detail by ID. |
halo_list_avalara_details |
Free | Read-only | [HaloPSA] List Avalara tax-integration connection details configured in Halo. |
halo_list_business_central_details |
Free | Read-only | [HaloPSA] List Microsoft Dynamics 365 Business Central connection details configured in Halo. |
halo_list_fortnox_details |
Free | Read-only | [HaloPSA] List Fortnox connection details configured in Halo. |
halo_list_kashflow_details |
Free | Read-only | [HaloPSA] List KashFlow connection details configured in Halo. |
halo_list_myob_details |
Free | Read-only | [HaloPSA] List MYOB connection details configured in Halo. |
halo_list_quickbooks_details |
Free | Read-only | [HaloPSA] List QuickBooks Online connection details configured in Halo. |
halo_list_sage_business_cloud_details |
Free | Read-only | [HaloPSA] List Sage Business Cloud connection details configured in Halo. |
halo_list_xero_details |
Free | Read-only | [HaloPSA] List Xero connection details configured in Halo. |
halo_get_avalara_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric Avalara detail record ID. |
halo_get_business_central_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric Business Central detail record ID. | |
includeDetails |
boolean | no | null | Include the full detail payload (optional). |
halo_get_fortnox_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric Fortnox detail record ID. |
halo_get_kashflow_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric KashFlow detail record ID. | |
includeDetails |
boolean | no | null | Include the full detail payload (optional). |
halo_get_myob_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric MYOB detail record ID. |
halo_get_quickbooks_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric QuickBooks detail record ID. | |
includeDetails |
boolean | no | null | Include the full detail payload (optional). |
halo_get_sage_business_cloud_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric Sage Business Cloud detail record ID. | |
includeDetails |
boolean | no | null | Include the full detail payload (optional). |
halo_get_xero_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric Xero detail record ID. | |
includeDetails |
boolean | no | null | Include the full detail payload (optional). |
halo_list_business_central_details parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
companyId |
string | no | null | Filter to a specific company ID (optional). |
connectedOnly |
boolean | no | null | Return only currently-connected records (optional). |
halo_list_kashflow_details parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
includeDisabled |
boolean | no | null | Include disabled records (optional). |
includeEnabled |
boolean | no | null | Include enabled records (optional). |
tenantId |
integer | no | null | Filter to a specific KashFlow tenant ID (optional). |
halo_list_quickbooks_details parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
companyId |
string | no | null | Filter to a specific QuickBooks company ID (optional). |
connectedOnly |
boolean | no | null | Return only currently-connected records (optional). |
halo_list_sage_business_cloud_details parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
connectedOnly |
boolean | no | null | Return only currently-connected records (optional). |
tenantId |
string | no | null | Filter to a specific Sage tenant ID (optional). |
halo_list_xero_details parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
connectedOnly |
boolean | no | null | Return only currently-connected records (optional). |
tenantId |
string | no | null | Filter to a specific Xero tenant ID (optional). |
MCP & AI
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_mcp_connection |
Pro | Destructive | [HaloPSA] Create a new MCP (Model Context Protocol) connection. Provide the record as a raw HaloPSA JSON object. Returns the created connection with its assigned ID. |
halo_create_pii_detection |
Pro | Destructive | [HaloPSA] Create a new PII (Personally Identifiable Information) detection rule. Provide the record as a raw HaloPSA JSON object. Returns the created detection with its assigned ID. |
halo_delete_mcp_connection |
Pro | Destructive | [HaloPSA] Delete an MCP connection by numeric ID. This permanently removes the MCP connection — it cannot be undone. Requires a valid connection ID — use halo_list_mcp_connections to find IDs and verify before deleting. |
halo_get_mcp_connection |
Free | Read-only | [HaloPSA] Retrieve a single MCP connection by numeric ID. Returns full connection details including name and configuration. Requires a valid connection ID — use halo_list_mcp_connections to find IDs. |
halo_get_pii_detection |
Free | Read-only | [HaloPSA] Retrieve a single PII detection rule by numeric ID. Returns full detection details including name and configuration. Requires a valid detection ID — use halo_list_pii_detections to find IDs. |
halo_get_virtual_agent_mcp |
Free | Read-only | [HaloPSA] Retrieve the MCP (Model Context Protocol) configuration linked to a virtual agent. Returns the MCP link details for the given virtual agent. Requires the virtual agent's UUID. |
halo_link_virtual_agent_mcp |
Pro | Destructive | [HaloPSA] Link MCP (Model Context Protocol) capabilities to a virtual agent. This enables the MCP connection for the given virtual agent. Requires the virtual agent's UUID. |
halo_list_mcp_connections |
Free | Read-only | [HaloPSA] List all MCP (Model Context Protocol) connections configured in HaloPSA. Returns connection summaries including ID, name, and configuration. Use this to review MCP integrations or find connection IDs before fetching full details. |
halo_list_pii_detections |
Free | Read-only | [HaloPSA] List all PII (Personally Identifiable Information) detection rules configured in HaloPSA. Returns detection summaries including ID, name, and configuration. Use this to review PII detection rules or find detection IDs before fetching full details. |
halo_unlink_virtual_agent_mcp |
Pro | Destructive | [HaloPSA] Unlink MCP (Model Context Protocol) capabilities from a virtual agent. This removes the MCP connection for the given virtual agent — it cannot be undone. Requires the virtual agent's UUID. |
halo_create_mcp_connection parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | The raw HaloPSA JSON object for the MCP connection record (e.g. {"name": "My MCP Connection", ...}). Field names must match HaloPSA API field names. |
halo_create_pii_detection parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | The raw HaloPSA JSON object for the PII detection record (e.g. {"name": "Credit Card Numbers", ...}). Field names must match HaloPSA API field names. |
halo_delete_mcp_connection parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA MCP connection ID to delete. Use halo_list_mcp_connections to find valid IDs. |
halo_get_mcp_connection parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA MCP connection ID. Use halo_list_mcp_connections to find valid IDs. |
halo_get_pii_detection parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA PII detection ID. Use halo_list_pii_detections to find valid IDs. |
halo_get_virtual_agent_mcp parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
virtualAgentId |
string | yes | The HaloPSA virtual agent ID (a UUID/GUID string). |
halo_link_virtual_agent_mcp parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
virtualAgentId |
string | yes | The HaloPSA virtual agent ID (a UUID/GUID string) to link MCP to. |
halo_unlink_virtual_agent_mcp parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
virtualAgentId |
string | yes | The HaloPSA virtual agent ID (a UUID/GUID string) to unlink MCP from. |
Integration Diagnostics
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_integration_cursor |
Pro | Destructive | [HaloPSA] Create or update an integration cursor. Provide the cursor object as JSON (bodyJson). Manipulating a cursor's watermark changes where an integration's next sync resumes — incorrect values can cause skipped or re-processed records, so use with care. |
halo_create_intermedia_detail |
Pro | Destructive | [HaloPSA] Create or update an Intermedia connection detail. Provide the Intermedia detail object as JSON (bodyJson) with the credentials/config required for Halo's telephony integration. |
halo_create_sftp_detail |
Pro | Destructive | [HaloPSA] Create or update an SFTP connection detail. Provide the SFTP detail object as JSON (bodyJson), including host, port, credentials, and path as required by your integration. |
halo_delete_integration_cursor |
Pro | Destructive | [HaloPSA] Delete an integration cursor by numeric ID. This removes the sync watermark for an integration — the next sync may re-process from the beginning. Cannot be undone. Use halo_list_integration_cursors to find IDs first. |
halo_delete_intermedia_detail |
Pro | Destructive | [HaloPSA] Delete an Intermedia connection detail by numeric ID. This permanently removes the telephony integration configuration and cannot be undone. Use halo_list_intermedia_details to find IDs first. |
halo_delete_sftp_detail |
Pro | Destructive | [HaloPSA] Delete an SFTP connection detail by numeric ID. This permanently removes the SFTP configuration and any integration depending on it will stop syncing. Cannot be undone. Use halo_list_sftp_details to find IDs first. |
halo_get_cluster |
Free | Read-only | [HaloPSA] Retrieve a single cluster by numeric ID. Use halo_list_clusters to find IDs. |
halo_get_integration_cursor |
Free | Read-only | [HaloPSA] Retrieve a single integration cursor by numeric ID. Returns the sync watermark/position detail for one integration cursor — use halo_list_integration_cursors to find IDs. |
halo_get_intermedia_detail |
Free | Read-only | [HaloPSA] Retrieve a single Intermedia connection detail by numeric ID. Use halo_list_intermedia_details to find IDs. |
halo_get_periodic_history |
Free | Read-only | [HaloPSA] Retrieve periodic (recurring) invoice/billing history. Returns the run history for Halo's periodic invoicing processes — useful for diagnosing recurring-billing generation issues. |
halo_get_sftp_detail |
Free | Read-only | [HaloPSA] Retrieve a single SFTP connection detail by numeric ID. Use halo_list_sftp_details to find IDs. |
halo_list_clusters |
Free | Read-only | [HaloPSA] List Halo clusters. Clusters describe the server/node topology of a Halo deployment and are useful for diagnosing infrastructure or multi-node configuration questions. |
halo_list_integration_cursors |
Free | Read-only | [HaloPSA] List integration cursors. Integration cursors track the sync position/watermark for Halo's connected integrations so incremental syncs resume where they left off. Useful for diagnosing stalled or duplicated integration syncs. |
halo_list_intermedia_details |
Free | Read-only | [HaloPSA] List configured Intermedia (Unite / cloud PBX) connection details used by Halo's telephony integration. Useful for diagnosing call-logging or click-to-dial integration issues. |
halo_list_sftp_details |
Free | Read-only | [HaloPSA] List configured SFTP connection details used by Halo integrations and imports. Useful for diagnosing file-based integration sync issues. |
halo_create_integration_cursor parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the integration cursor to create or update. |
halo_create_intermedia_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the Intermedia detail to create or update. |
halo_create_sftp_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the SFTP detail to create or update. |
halo_delete_integration_cursor parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | Numeric ID of the integration cursor to delete. |
halo_delete_intermedia_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | Numeric ID of the Intermedia detail to delete. |
halo_delete_sftp_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | Numeric ID of the SFTP detail to delete. |
halo_get_cluster parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | Numeric ID of the cluster to retrieve. |
halo_get_integration_cursor parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | Numeric ID of the integration cursor to retrieve. |
halo_get_intermedia_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | Numeric ID of the Intermedia detail to retrieve. |
halo_get_sftp_detail parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | Numeric ID of the SFTP detail to retrieve. |
Invoice & Order Extras
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_invoice_status |
Pro | Destructive | [HaloPSA] Create a new invoice status. Provide the status definition as a JSON object. Returns the created status with its assigned ID. Example: {"name": "Awaiting Payment"} |
halo_delete_invoice_status |
Pro | Destructive | [HaloPSA] Delete an invoice status by numeric ID. This permanently removes the status definition. Use halo_list_invoice_statuses to find valid IDs. |
halo_expire_client_prepay |
Pro | Destructive | [HaloPSA] Expire one or more client prepay balances. This is a financial action that voids remaining prepaid credit — provide a JSON array of prepay objects to expire, plus the exact confirmation phrase. Returns the expired prepay records. |
halo_get_invoice_status |
Free | Read-only | [HaloPSA] Retrieve a single invoice status by numeric ID. Returns the full status definition. Use halo_list_invoice_statuses to find valid IDs. |
halo_list_invoice_statuses |
Free | Read-only | [HaloPSA] List all invoice statuses configured in HaloPSA. Returns status definitions including ID, name, and ordering. Use this to discover valid invoice status IDs for filtering or updating invoices. |
halo_register_invoice_view |
Pro | Write | [HaloPSA] Record that a user or contact has viewed an invoice. Provide the view details as a JSON object (typically the invoice ID and viewer). Returns the recorded view. |
halo_register_kb_article_view |
Pro | Write | [HaloPSA] Record that a user or contact has viewed a knowledge base article. Provide the view details as a JSON object (typically the article ID and viewer). Returns the recorded view. |
halo_register_purchase_order_view |
Pro | Write | [HaloPSA] Record that a user or contact has viewed a purchase order. Provide the view details as a JSON object (typically the purchase order ID and viewer). Returns the recorded view. |
halo_register_sales_order_view |
Pro | Write | [HaloPSA] Record that a user or contact has viewed a sales order. Provide the view details as a JSON object (typically the sales order ID and viewer). Returns the recorded view. |
halo_review_expense |
Pro | Destructive | [HaloPSA] Mark one or more expenses as reviewed. This is a financial approval action — provide a JSON array of expense objects to review, plus the exact confirmation phrase. Returns the reviewed expenses. |
halo_update_invoice_lines |
Pro | Destructive | [HaloPSA] Update one or more invoice line items in bulk. Provide a JSON array of invoice line objects. Each object should carry the line's ID and the fields to change. Returns the updated lines. |
halo_update_sales_order_lines |
Pro | Destructive | [HaloPSA] Update one or more sales order line items in bulk. Provide a JSON array of sales order line objects. Each object should carry the line's ID and the fields to change. Returns the updated lines. |
halo_create_invoice_status parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the invoice status to create. Required: name. Example: {"name": "Awaiting Payment"} |
halo_delete_invoice_status parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA invoice status ID to delete. Use halo_list_invoice_statuses to find valid IDs. |
halo_expire_client_prepay parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
confirmation |
string | yes | To authorize this expiry, set this to exactly "EXPIRE CLIENT PREPAY". | |
prepayJson |
string | yes | JSON array of client prepay objects to expire. Each object should include the prepay ID. Example: [{"id": 7}] |
halo_get_invoice_status parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA invoice status ID. Use halo_list_invoice_statuses to find valid IDs. |
halo_register_invoice_view parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the invoice view to record. Typically includes the invoice ID and viewer details. Example: {"invoice_id": 1234} |
halo_register_kb_article_view parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the KB article view to record. Typically includes the article ID and viewer details. Example: {"kbarticle_id": 88} |
halo_register_purchase_order_view parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the purchase order view to record. Typically includes the purchase order ID and viewer details. Example: {"purchaseorder_id": 42} |
halo_register_sales_order_view parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object describing the sales order view to record. Typically includes the sales order ID and viewer details. Example: {"salesorder_id": 55} |
halo_review_expense parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
confirmation |
string | yes | To authorize this review, set this to exactly "REVIEW EXPENSE". | |
expensesJson |
string | yes | JSON array of expense objects to mark as reviewed. Each object should include the expense ID. Example: [{"id": 12}] |
halo_update_invoice_lines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linesJson |
string | yes | JSON array of invoice line objects to update. Each object should include the line ID and the fields to change. Example: [{"id": 101, "quantity": 3, "unit_price": 49.99}] |
halo_update_sales_order_lines parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linesJson |
string | yes | JSON array of sales order line objects to update. Each object should include the line ID and the fields to change. Example: [{"id": 55, "quantity": 2, "unit_price": 199.99}] |
CRM & Service Extras
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_crm_note_reply |
Pro | Write | [HaloPSA] Create a reply against a CRM note. This adds a threaded follow-up visible to CRM users. Returns the created reply. Provide the reply details as a JSON object. |
halo_create_service |
Pro | Write | [HaloPSA] Create a new service in the service catalog/service-status surface. Returns the created service with its assigned ID. Provide service details as a JSON object. |
halo_delete_crm_note_reply |
Pro | Destructive | [HaloPSA] Delete a CRM note reply by numeric ID. This permanently removes the threaded reply from the CRM note. Use halo_list_crm_note_replies to find valid IDs. WARNING: This action is irreversible. |
halo_delete_service |
Pro | Destructive | [HaloPSA] Delete a service from the service catalog by numeric ID. This permanently removes the service. WARNING: This action is irreversible and may affect tickets or subscriptions linked to the service. |
halo_get_crm_note_reply |
Free | Read-only | [HaloPSA] Retrieve a single CRM note reply by numeric ID. Returns the full reply including parent note, author, date, and content. Use halo_list_crm_note_replies to find valid IDs. |
halo_get_security_question_call |
Free | Read-only | [HaloPSA] Retrieve the security question to verify a caller for a given call/ticket by numeric ID. Returns the challenge question used to authenticate the caller's identity. Use this before validating a caller's answer. |
halo_list_crm_note_replies |
Free | Read-only | [HaloPSA] List replies left against CRM notes. Returns reply entries including ID, parent note, author, date, and content. Use this to review threaded follow-ups on CRM interaction notes. |
halo_list_milestones |
Free | Read-only | [HaloPSA] List project milestones. Returns milestone entries including ID, name, target date, and linked project. Use this to review project schedules and delivery checkpoints. |
halo_list_users_onbehalf |
Free | Read-only | [HaloPSA] List the users the current agent can act on behalf of. Returns user summaries the caller is authorized to represent for self-service or impersonation flows. Use this to discover valid on-behalf-of targets. |
halo_unsubscribe_service |
Pro | Destructive | [HaloPSA] Unsubscribe the current user/agent from a service so they stop receiving status notifications. This removes the subscription for the given service. Use a valid service ID — affected notifications stop after unsubscribing. |
halo_validate_security_question |
Pro | Write | [HaloPSA] Validate a user's answer to a security question. Returns the validation result. Provide the user identity and the answer as a JSON object — used to authenticate a contact's identity before sensitive actions. |
halo_validate_security_question_call |
Pro | Write | [HaloPSA] Validate a caller's answer to a security question for a call/ticket. Returns the validation result. Provide the call ID and the caller's answer as a JSON object — use halo_get_security_question_call to fetch the question first. |
halo_create_crm_note_reply parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object with CRM note reply fields. Typically requires the parent note ID and reply text. Example: {"crmnote_id": 1, "note": "Followed up with the client by phone"} |
halo_create_service parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object with service fields. Typically requires name and may include description, status, and category. Example: {"name": "Email Hosting", "description": "Hosted Exchange service"} |
halo_delete_crm_note_reply parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA CRM note reply ID to delete. Use halo_list_crm_note_replies to find valid IDs. |
halo_delete_service parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA service ID to delete. |
halo_get_crm_note_reply parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA CRM note reply ID. Use halo_list_crm_note_replies to find valid IDs. |
halo_get_security_question_call parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
id |
integer | yes | The numeric HaloPSA call/ticket ID to fetch the security question for. |
halo_unsubscribe_service parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
serviceId |
integer | yes | The numeric HaloPSA service ID to unsubscribe from. |
halo_validate_security_question parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object with the security-question validation payload, including the user identity and the answer. Example: {"user_id": 42, "answer": "Fluffy"} |
halo_validate_security_question_call parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | JSON object with the call security-question validation payload, including the call ID and the caller's answer. Example: {"call_id": 123, "answer": "Fluffy"} |
Integration Data (Extended)
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_atera_data |
Free | Read-only | [HaloPSA] Retrieve Atera data from Halo's connected Atera integration. |
halo_get_autotask_data |
Free | Read-only | [HaloPSA] Retrieve Autotask data from Halo's connected Autotask integration. |
halo_get_barracuda_data |
Free | Read-only | [HaloPSA] Retrieve Barracuda data from Halo's connected Barracuda integration. |
halo_get_connectwise_control_data |
Free | Read-only | [HaloPSA] Retrieve ConnectWise Control data from Halo's connected ConnectWise Control integration. |
halo_get_connectwise_rmm_data |
Free | Read-only | [HaloPSA] Retrieve ConnectWise RMM data from Halo's connected ConnectWise RMM integration. |
halo_get_datto_commerce_data |
Free | Read-only | [HaloPSA] Retrieve Datto Commerce data from Halo's connected Datto Commerce integration. |
halo_get_device42_data |
Free | Read-only | [HaloPSA] Retrieve Device42 data from Halo's connected Device42 integration. |
halo_get_devops_data |
Free | Read-only | [HaloPSA] Retrieve Azure DevOps data from Halo's connected Azure DevOps integration. |
halo_get_dynamics_crm_data |
Free | Read-only | [HaloPSA] Retrieve Dynamics CRM data from Halo's connected Dynamics CRM integration. |
halo_get_freshdesk_data |
Free | Read-only | [HaloPSA] Retrieve Freshdesk data from Halo's connected Freshdesk integration. |
halo_get_google_calendars_data |
Free | Read-only | [HaloPSA] Retrieve Google Calendars data from Halo's connected Google Calendars integration. |
halo_get_google_workplace_data |
Free | Read-only | [HaloPSA] Retrieve Google Workplace data from Halo's connected Google Workplace integration. |
halo_get_gotoassist_data |
Free | Read-only | [HaloPSA] Retrieve GoToAssist data from Halo's connected GoToAssist integration. |
halo_get_hubspot_data |
Free | Read-only | [HaloPSA] Retrieve HubSpot data from Halo's connected HubSpot integration. |
halo_get_jamf_data |
Free | Read-only | [HaloPSA] Retrieve Jamf data from Halo's connected Jamf integration. |
halo_get_jira_data |
Free | Read-only | [HaloPSA] Retrieve Jira data from Halo's connected Jira integration. |
halo_get_jira_service_management_data |
Free | Read-only | [HaloPSA] Retrieve Jira Service Management data from Halo's connected Jira Service Management integration. |
halo_get_lansweeper_data |
Free | Read-only | [HaloPSA] Retrieve Lansweeper data from Halo's connected Lansweeper integration. |
halo_get_logicmonitor_data |
Free | Read-only | [HaloPSA] Retrieve LogicMonitor data from Halo's connected LogicMonitor integration. |
halo_get_meraki_data |
Free | Read-only | [HaloPSA] Retrieve Meraki data from Halo's connected Meraki integration. |
halo_get_ninja_rmm_data |
Free | Read-only | [HaloPSA] Retrieve NinjaRMM data from Halo's connected NinjaRMM integration. |
halo_get_okta_data |
Free | Read-only | [HaloPSA] Retrieve Okta data from Halo's connected Okta integration. |
halo_get_pagerduty_data |
Free | Read-only | [HaloPSA] Retrieve PagerDuty data from Halo's connected PagerDuty integration. |
halo_get_passportal_data |
Free | Read-only | [HaloPSA] Retrieve Passportal data from Halo's connected Passportal integration. |
halo_get_qualys_data |
Free | Read-only | [HaloPSA] Retrieve Qualys data from Halo's connected Qualys integration. |
halo_get_salesforce_data |
Free | Read-only | [HaloPSA] Retrieve Salesforce data from Halo's connected Salesforce integration. |
halo_get_servicenow_data |
Free | Read-only | [HaloPSA] Retrieve ServiceNow data from Halo's connected ServiceNow integration. |
halo_get_servicenow_integration_data |
Free | Read-only | [HaloPSA] Retrieve ServiceNow Integration data from Halo's connected ServiceNow Integration integration. |
halo_get_shopify_data |
Free | Read-only | [HaloPSA] Retrieve Shopify data from Halo's connected Shopify integration. |
halo_get_slack_data |
Free | Read-only | [HaloPSA] Retrieve Slack data from Halo's connected Slack integration. |
halo_get_snow_data |
Free | Read-only | [HaloPSA] Retrieve Snow data from Halo's connected Snow integration. |
halo_get_splashtop_data |
Free | Read-only | [HaloPSA] Retrieve Splashtop data from Halo's connected Splashtop integration. |
halo_get_splunk_oncall_data |
Free | Read-only | [HaloPSA] Retrieve Splunk On-Call data from Halo's connected Splunk On-Call integration. |
halo_get_syncro_data |
Free | Read-only | [HaloPSA] Retrieve Syncro data from Halo's connected Syncro integration. |
halo_get_tanium_data |
Free | Read-only | [HaloPSA] Retrieve Tanium data from Halo's connected Tanium integration. |
halo_get_zabbix_data |
Free | Read-only | [HaloPSA] Retrieve Zabbix data from Halo's connected Zabbix integration. |
Integration Sync
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_adjust_csp_quantity |
Pro | Destructive | [HaloPSA] Change the seat quantity of a Microsoft CSP licence via Halo's connected Microsoft Partner Center integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_adjust_pax8_quantity |
Pro | Destructive | [HaloPSA] Change the seat quantity of a Pax8 subscription licence via Halo's connected Pax8 integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_clear_csp_licence_cache |
Pro | Write | [HaloPSA] Clear Halo's cached Microsoft CSP licence-key lookups, forcing a fresh fetch from Microsoft Partner Center on the next read. Idempotent and non-destructive. |
halo_import_business_central |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected Microsoft Dynamics 365 Business Central accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_exact_online |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected Exact Online accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_fortnox |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected Fortnox accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_intacct |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected Sage Intacct accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_kashflow |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected KashFlow accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_myob |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected MYOB accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_quickbooks_online |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected QuickBooks Online accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_sage_business_cloud |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected Sage Business Cloud accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_snelstart |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected SnelStart accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_import_xero |
Pro | Destructive | [HaloPSA] Trigger an import sync against the connected Xero accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_send_xero_invoice |
Pro | Destructive | [HaloPSA] Push an invoice to the connected Xero accounting integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_stripe_create_payment_intent |
Pro | Destructive | [HaloPSA] Create a Stripe PaymentIntent via Halo's connected Stripe payments integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_stripe_create_portal_session |
Pro | Destructive | [HaloPSA] Create a Stripe customer billing portal session via Halo's connected Stripe payments integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_stripe_create_setup_intent |
Pro | Destructive | [HaloPSA] Create a Stripe SetupIntent via Halo's connected Stripe payments integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_stripe_create_webhook |
Pro | Destructive | [HaloPSA] Create a Stripe webhook endpoint via Halo's connected Stripe payments integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_stripe_update_invoice_payment |
Pro | Destructive | [HaloPSA] Update an invoice payment record in Stripe via Halo's connected Stripe payments integration. WARNING: irreversibly syncs data to/from the external accounting system. |
halo_adjust_csp_quantity parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
confirmation |
string | yes | Confirmation guard. Must equal exactly "ADJUST CSP QUANTITY". | |
currentQuantity |
integer | yes | Current seat quantity (for optimistic-concurrency checks upstream). | |
licenceId |
integer | yes | Halo licence ID to adjust. | |
newQuantity |
integer | yes | New seat quantity to apply. |
halo_adjust_pax8_quantity parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
confirmation |
string | yes | Confirmation guard. Must equal exactly "ADJUST PAX8 QUANTITY". | |
currentQuantity |
integer | yes | Current seat quantity (for optimistic-concurrency checks upstream). | |
licenceId |
integer | yes | Halo licence ID to adjust. | |
newQuantity |
integer | yes | New seat quantity to apply. |
halo_import_business_central parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC BUSINESS CENTRAL". |
halo_import_exact_online parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC EXACT ONLINE". |
halo_import_fortnox parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC FORTNOX". |
halo_import_intacct parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC INTACCT". | |
datatype |
string | no | null | Optional Sage Intacct data type to scope the import. |
locId |
string | no | null | Optional Sage Intacct location ID to scope the import. |
halo_import_kashflow parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC KASHFLOW". |
halo_import_myob parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC MYOB". |
halo_import_quickbooks_online parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC QUICKBOOKS". |
halo_import_sage_business_cloud parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC SAGE". |
halo_import_snelstart parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC SNELSTART". |
halo_import_xero parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (array) for the import. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SYNC XERO". |
halo_send_xero_invoice parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (object) describing the invoice to send. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "SEND XERO INVOICE". |
halo_stripe_create_payment_intent parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (object) for the Stripe PaymentIntent creation. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "STRIPE CREATE PAYMENT INTENT". |
halo_stripe_create_portal_session parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (object) for the Stripe portal session creation. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "STRIPE CREATE PORTAL SESSION". |
halo_stripe_create_setup_intent parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (object) for the Stripe SetupIntent creation. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "STRIPE CREATE SETUP INTENT". |
halo_stripe_create_webhook parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (object) for the Stripe webhook creation. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "STRIPE CREATE WEBHOOK". |
halo_stripe_update_invoice_payment parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
bodyJson |
string | yes | Raw Halo JSON body (object) for the Stripe invoice payment update. | |
confirmation |
string | yes | Confirmation guard. Must equal exactly "STRIPE UPDATE INVOICE PAYMENT". |
Standard Request Templates
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_template |
Pro | Write | [HaloPSA] Create a new standard request template. Templates define pre-configured ticket blueprints that streamline ticket creation. Returns the created template with its assigned ID. The JSON should include at minimum a name and ticket type. Follow up with halo_get_template to verify creation. |
halo_delete_template |
Pro | Destructive | [HaloPSA] Delete a standard request template by numeric ID. This permanently removes the template — it cannot be undone. Use with caution. Requires a valid template ID — use halo_list_templates to find IDs and verify the template before deleting. |
halo_get_template |
Free | Read-only | [HaloPSA] Retrieve full details for a single standard request template by numeric ID. Returns the complete template configuration including pre-filled field values, actions, and associated ticket type. Requires a valid template ID — use halo_list_templates to find IDs. |
halo_list_templates |
Free | Read-only | [HaloPSA] List standard request templates (pre-configured ticket blueprints) with pagination. Returns template IDs, names, and associated ticket types. Use this to discover available templates before creating tickets from a template, or to audit template configurations. |
halo_create_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateJson |
string | yes | JSON object representing the template to create. Example: {"name": "Password Reset", "tickettype_id": 1, "summary": "User password reset request"}. Field names must match HaloPSA API field names. |
halo_delete_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateId |
integer | yes | The numeric HaloPSA template ID to delete. Use halo_list_templates to find valid IDs. Verify the template with halo_get_template before deleting. |
halo_get_template parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
templateId |
integer | yes | The numeric HaloPSA template ID. Use halo_list_templates to find valid IDs. |
halo_list_templates parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID to see templates available for a specific client (optional). |
domain |
string | no | null | Filter by domain (e.g. 'tickets', 'projects') to see templates for a specific entity type (optional). |
pageNo |
integer | no | 1 | Page number for pagination (default 1). |
pageSize |
integer | no | 50 | Number of results per page (default 50, max 200). |
search |
string | no | null | Search text to filter templates by name (optional). |
ticketTypeId |
integer | no | null | Filter by ticket type ID (optional). Use halo_list_ticket_types to find valid IDs. |
Call Scripts
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_call_script |
Free | Read-only | [HaloPSA] Retrieve full details for a single call script by numeric ID. Returns the complete script definition including questions, branching logic, and field mappings. Requires a valid script ID — use halo_list_call_scripts to find IDs. |
halo_list_call_scripts |
Free | Read-only | [HaloPSA] List all call scripts configured in the system. Returns script IDs, names, and associated ticket types. Call scripts are guided question flows that agents follow when handling phone calls or ticket intake, ensuring consistent data capture. Use this to discover available scripts or find script IDs. |
halo_get_call_script parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
scriptId |
integer | yes | The numeric HaloPSA call script ID. Use halo_list_call_scripts to find valid IDs. |
Live Chat
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_chat |
Free | Read-only | [HaloPSA] Retrieve full details for a single live chat session by numeric ID. Returns chat participants, status, associated ticket, and metadata. Requires a valid chat ID — use halo_list_chats to find IDs. |
halo_get_chat_profile |
Free | Read-only | [HaloPSA] Retrieve full details for a single chat profile by numeric ID. Returns the profile configuration including appearance settings, routing rules, and operating hours. Requires a valid profile ID — use halo_list_chat_profiles to find IDs. |
halo_list_chat_messages |
Free | Read-only | [HaloPSA] List messages in a live chat session. Returns message text, sender info, and timestamps. Use this to read the conversation history of a chat. Optionally pass lastId to retrieve only messages after a specific point for polling new messages. |
halo_list_chat_profiles |
Free | Read-only | [HaloPSA] List all live chat profiles configured in the system. Returns profile IDs, names, and settings. Chat profiles define the appearance, behaviour, and routing rules for live chat widgets. Use this to discover available chat profiles or find profile IDs. |
halo_list_chats |
Free | Read-only | [HaloPSA] List live chat sessions with optional filtering. Returns chat IDs, participant info, status, and timestamps. Use this to view active or recent chat sessions. Optionally filter by chat profile or exclude closed chats. |
halo_send_chat_message |
Pro | Write | [HaloPSA] Send a message in a live chat session. Returns the sent message with its assigned ID. The JSON must include the chat_id and message text. Use halo_list_chats to find active chat sessions and halo_list_chat_messages to see conversation history before responding. |
halo_get_chat parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
chatId |
integer | yes | The numeric HaloPSA chat session ID. Use halo_list_chats to find valid IDs. |
halo_get_chat_profile parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
profileId |
integer | yes | The numeric HaloPSA chat profile ID. Use halo_list_chat_profiles to find valid IDs. |
halo_list_chat_messages parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
chatId |
integer | yes | The numeric HaloPSA chat session ID to retrieve messages for. Use halo_list_chats to find valid IDs. | |
lastId |
integer | no | null | Only return messages with ID greater than this value (optional). Use for polling new messages since last check. |
halo_list_chats parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
chatProfileId |
integer | no | null | Filter by chat profile ID (optional). Use halo_list_chat_profiles to find valid IDs. |
ignoreAllClosed |
boolean | no | null | When true, exclude all closed/ended chat sessions from results (optional). |
halo_send_chat_message parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
messageJson |
string | yes | JSON object representing the chat message to send. Must include chat_id. Example: {"chat_id": 42, "message": "Hello, how can I help?"}. Field names must match HaloPSA API field names. |
Remote Sessions
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_remote_session |
Pro | Write | [HaloPSA] Create a new remote support session. Returns the created session with its assigned ID and connection details. The JSON should specify the session type and target device or user. Follow up with halo_get_remote_session to verify creation. |
halo_get_remote_session |
Free | Read-only | [HaloPSA] Retrieve full details for a single remote support session by numeric ID. Returns connection info, participants, duration, and associated ticket. Requires a valid session ID — use halo_list_remote_sessions to find IDs. |
halo_list_remote_session_teams |
Free | Read-only | [HaloPSA] List teams configured for remote support sessions. Returns team IDs, names, and associated remote session providers. Use this to discover which teams are set up for remote support before creating sessions. |
halo_list_remote_sessions |
Free | Read-only | [HaloPSA] List remote support sessions with optional filtering by agent or client. Returns session IDs, status, participants, and connection details. Use this to view active or recent remote sessions for troubleshooting or audit purposes. |
halo_create_remote_session parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
sessionJson |
string | yes | JSON object representing the remote session to create. Example: {"ticket_id": 100, "agent_id": 5, "type": 1}. Field names must match HaloPSA API field names. |
halo_get_remote_session parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
sessionId |
integer | yes | The numeric HaloPSA remote session ID. Use halo_list_remote_sessions to find valid IDs. |
halo_list_remote_sessions parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | no | null | Filter by agent ID to see sessions for a specific technician (optional). Use halo_list_agents to find valid IDs. |
clientId |
integer | no | null | Filter by client ID to see sessions for a specific customer (optional). Use halo_list_clients to find valid IDs. |
Approval Processes
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_approval_process |
Pro | Write | [HaloPSA] Create a new approval process. Approval processes define multi-step approval workflows. Returns the created process with its assigned ID. The JSON should include at minimum a name and approval type. Follow up with halo_get_approval_process to verify creation. |
halo_create_approval_rule |
Pro | Write | [HaloPSA] Create a new approval rule that defines conditions for triggering approvals. Returns the created rule with its assigned ID. The JSON should include the associated process ID and rule conditions. Follow up with halo_list_approval_rules to verify creation. |
halo_get_approval_process |
Free | Read-only | [HaloPSA] Retrieve full details for a single approval process by numeric ID. Returns the process definition including approval stages, required approvers, and escalation rules. Requires a valid process ID — use halo_list_approval_processes to find IDs. |
halo_list_approval_processes |
Free | Read-only | [HaloPSA] List all approval processes configured in the system. Returns process IDs, names, and associated rules. Approval processes define multi-step approval workflows for changes, purchases, or other gated actions. Use this to discover available processes or audit approval configurations. |
halo_list_approval_rules |
Free | Read-only | [HaloPSA] List approval rules that define when and how approvals are triggered. Returns rule IDs, conditions, and associated approval processes. Optionally filter by process ID. Use this to understand what triggers approval workflows or to audit approval rule configurations. |
halo_create_approval_process parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
processJson |
string | yes | JSON object representing the approval process to create. Example: {"name": "Change Approval", "type": 1}. Field names must match HaloPSA API field names. |
halo_create_approval_rule parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
ruleJson |
string | yes | JSON object representing the approval rule to create. Must include the approval process association. Example: {"process_id": 1, "name": "High Priority Changes", "conditions": [...]}. Field names must match HaloPSA API field names. |
halo_get_approval_process parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
processId |
integer | yes | The numeric HaloPSA approval process ID. Use halo_list_approval_processes to find valid IDs. |
halo_list_approval_rules parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
processId |
integer | no | null | Filter by approval process ID (optional). Use halo_list_approval_processes to find valid IDs. |
Saved Views
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_view |
Free | Read-only | [HaloPSA] Retrieve full details for a single saved view by numeric ID. Returns the complete view definition including filter criteria, column layout, sort order, and grouping. Requires a valid view ID — use halo_list_views to find IDs. |
halo_list_view_columns |
Free | Read-only | [HaloPSA] List available column definitions that can be used in saved views. Returns column field names, display labels, and data types. Use this to understand what columns are available when creating views or to interpret the column layout of existing views for a specific domain. |
halo_list_view_filters |
Free | Read-only | [HaloPSA] List available filter definitions that can be used in saved views. Returns filter field names, operators, and data types. Use this to understand what filtering options are available when creating or interpreting saved views for a specific domain. |
halo_list_views |
Free | Read-only | [HaloPSA] List saved views configured in the system. Returns view IDs, names, domains, and visibility (personal vs global). Saved views define pre-configured filter and column configurations for ticket lists, asset lists, and other entity grids. Use this to discover available views or find view IDs. |
halo_get_view parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
viewId |
integer | yes | The numeric HaloPSA view ID. Use halo_list_views to find valid IDs. |
halo_list_view_columns parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
domain |
string | no | null | Filter by domain (e.g. 'tickets', 'assets', 'projects') to see columns for a specific entity type (optional). |
halo_list_view_filters parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
domain |
string | no | null | Filter by domain (e.g. 'tickets', 'assets', 'projects') to see filters for a specific entity type (optional). |
halo_list_views parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
domain |
string | no | null | Filter by domain (e.g. 'tickets', 'assets', 'projects') to see views for a specific entity type (optional). |
globalOnly |
boolean | no | null | When true, only return global (shared) views, excluding personal views (optional). |
PowerShell Scripts
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_script |
Pro | Write | [HaloPSA] Create a new PowerShell script in the Halo script library. Returns the created script with its assigned ID. The JSON should include at minimum a name and script content. Follow up with halo_get_script to verify creation. |
halo_get_script |
Free | Read-only | [HaloPSA] Retrieve full details for a single PowerShell script by numeric ID. Returns the script content, parameters, description, and execution settings. Requires a valid script ID — use halo_list_scripts to find IDs. |
halo_list_script_executions |
Free | Read-only | [HaloPSA] List PowerShell script execution history. Returns execution IDs, target devices, status, start/end times, and output. Optionally filter by script ID. Use this to audit script runs or check the results of recent executions. |
halo_list_scripts |
Free | Read-only | [HaloPSA] List PowerShell scripts stored in the Halo script library. Returns script IDs, names, and descriptions. These are scripts that can be executed against managed devices through Halo's agent or RMM integrations. Use this to discover available scripts or find script IDs. |
halo_create_script parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
scriptJson |
string | yes | JSON object representing the PowerShell script to create. Example: {"name": "Clear DNS Cache", "script": "Clear-DnsClientCache", "description": "Clears the local DNS cache"}. Field names must match HaloPSA API field names. |
halo_get_script parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
scriptId |
integer | yes | The numeric HaloPSA PowerShell script ID. Use halo_list_scripts to find valid IDs. |
halo_list_script_executions parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
scriptId |
integer | no | null | Filter by PowerShell script ID to see executions for a specific script (optional). Use halo_list_scripts to find valid IDs. |
Call Logs
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_call_log |
Pro | Write | [HaloPSA] Create a new telephone call log entry. Returns the created call log with its assigned ID. The JSON should include at minimum caller information and call details. Use this to record phone calls that need to be tracked alongside tickets. |
halo_list_call_logs |
Free | Read-only | [HaloPSA] List telephone call logs recorded in the system. Returns call IDs, caller/callee info, duration, and timestamps. Use this to review call history or audit phone interactions. Optionally show all calls including those not linked to tickets. |
halo_create_call_log parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
callLogJson |
string | yes | JSON object representing the call log to create. Example: {"caller": "John Smith", "callee": "Support", "duration": 300, "notes": "Password reset request"}. Field names must match HaloPSA API field names. |
halo_list_call_logs parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
showAll |
boolean | no | null | When true, show all call logs including those not linked to tickets (optional, default false). |
External Links
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_external_link |
Pro | Write | [HaloPSA] Create a new external link on a Halo entity. Returns the created link with its assigned ID. The JSON should include the target URL, label, and associated Halo entity. Use this to connect Halo records to external resources like documentation, dashboards, or third-party tools. |
halo_generate_external_link |
Pro | Write | [HaloPSA] Generate a shareable external link (portal link or guest access URL) for a Halo entity. Returns the generated URL. Use this to create links that can be shared with end users to view tickets, approve changes, or access other Halo resources without requiring a Halo login. |
halo_list_external_links |
Free | Read-only | [HaloPSA] List external links associated with Halo entities. Returns link IDs, URLs, labels, and associated entity references. External links connect Halo records to resources in other systems. Optionally filter by module or Halo entity ID. |
halo_create_external_link parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linkJson |
string | yes | JSON object representing the external link to create. Example: {"url": "https://example.com/doc", "label": "Setup Guide", "module_id": 1, "halo_id": 100}. Field names must match HaloPSA API field names. |
halo_generate_external_link parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
requestJson |
string | yes | JSON object specifying what to generate a link for. Example: {"module_id": 1, "halo_id": 100, "type": "portal"}. Field names must match HaloPSA API field names. |
halo_list_external_links parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
haloId |
integer | no | null | Filter by Halo entity ID to see links for a specific record (optional). |
moduleId |
integer | no | null | Filter by module ID to see links for a specific entity type (optional). |
FAQ Lists
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_get_faq_list |
Free | Read-only | [HaloPSA] Retrieve full details for a single FAQ list by numeric ID. Returns the list name, description, items/questions, and hierarchy position. Requires a valid FAQ list ID — use halo_list_faq_lists to find IDs. |
halo_list_faq_lists |
Free | Read-only | [HaloPSA] List FAQ lists (frequently asked questions collections) configured in the system. Returns list IDs, names, and hierarchy. FAQ lists are used in the end-user portal and knowledge base to organise common questions. Optionally filter by parent list or type. |
halo_get_faq_list parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
faqListId |
integer | yes | The numeric HaloPSA FAQ list ID. Use halo_list_faq_lists to find valid IDs. |
halo_list_faq_lists parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
parentId |
integer | no | null | Filter by parent FAQ list ID to see child lists (optional). Omit to see top-level lists. |
type |
integer | no | null | Filter by FAQ list type (optional). |
Popup Notes
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_list_popup_notes |
Free | Read-only | [HaloPSA] List popup notes configured for clients, sites, or users. Returns note IDs, content, and associated entities. Popup notes are displayed to agents when they open a client, site, or user record — typically used for important warnings or reminders (e.g. 'VIP client', 'Known billing issue'). Optionally filter by client, site, or user. |
halo_mark_popup_read |
Pro | Write | [HaloPSA] Mark a popup note as read/acknowledged for the current agent. This dismisses the popup so it will not appear again for this agent. Returns confirmation. Use halo_list_popup_notes to find notes that need acknowledgement. |
halo_list_popup_notes parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID to see popup notes for a specific customer (optional). Use halo_list_clients to find valid IDs. |
siteId |
integer | no | null | Filter by site ID to see popup notes for a specific site (optional). Use halo_list_sites to find valid IDs. |
userId |
integer | no | null | Filter by user ID to see popup notes for a specific user (optional). Use halo_list_users to find valid IDs. |
halo_mark_popup_read parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
requestJson |
string | yes | JSON object identifying the popup note to mark as read. Must include the note ID. Example: {"id": 42}. Field names must match HaloPSA API field names. |
Secure Secret Links
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_create_secure_link |
Pro | Write | [HaloPSA] Create a new secure secret link for sharing sensitive information. Returns the created link with its unique token URL. The secret is encrypted and the link auto-expires after being viewed or after the specified time. The JSON should include the secret content and optional passphrase/expiry settings. |
halo_list_secure_links |
Free | Read-only | [HaloPSA] List secure secret links (one-time-use password/secret sharing URLs). Returns link IDs, creation dates, expiry status, and whether the secret has been viewed. Secure links allow sharing sensitive information (passwords, keys) that auto-expire after being accessed. Use this to audit or manage secure links. |
halo_validate_secure_link |
Free | Read-only | [HaloPSA] Validate a secure secret link token and retrieve the secret if valid. Returns the decrypted secret content if the token is valid and has not expired. If the link requires a passphrase, provide it. Note: accessing the secret may consume the one-time link depending on the link configuration. |
halo_create_secure_link parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
linkJson |
string | yes | JSON object representing the secure link to create. Example: {"secret": "P@ssw0rd123", "passphrase": "optional-extra-security", "expiry_hours": 24}. Field names must match HaloPSA API field names. |
halo_validate_secure_link parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
passphrase |
string | no | null | Passphrase to decrypt the secret (optional). Required only if the link was created with a passphrase. |
token |
string | yes | The secure link token string (from the link URL). This is the unique identifier for the shared secret. |
Cross-Domain
| Tool | Plan | Access | Description |
|---|---|---|---|
halo_bulk_status_summary |
Pro | Read-only | [HaloPSA] Quick counts of open items across all domains: open tickets, active contracts, active assets, pending approvals, and open opportunities. Use for a fast company health snapshot. Note: Makes 5 API calls internally (parallel). |
halo_client_financial_summary |
Pro | Read-only | [HaloPSA] For a client: total invoiced revenue, total hours logged, active contracts with values, prepay balance, and recent billing lines. Comprehensive financial overview in a single composite call. Note: Makes 5 API calls internally (parallel). |
halo_entity_relationship_map |
Pro | Read-only | [HaloPSA] Scatter-gather: given a client, fetch open tickets, assets, contracts, users, sites, and opportunities in parallel and return counts and summaries for each entity type. Use for a quick multi-domain snapshot of all resources linked to a client. Note: Makes 6 API calls internally (parallel). |
halo_queue_health_dashboard |
Pro | Read-only | [HaloPSA] Health metrics for a specific team/queue: open ticket count, SLA status, per-agent workload distribution, and ticket age distribution buckets. Use for team-level performance monitoring. Note: Makes 3 API calls internally (parallel). |
halo_technician_dashboard |
Pro | Read-only | [HaloPSA] For a given agent: their open tickets by priority, today's timesheets, upcoming appointments, and SLA breach warnings. Use for technician daily briefings or self-service dashboards. Note: Makes 4 API calls internally (parallel). |
halo_weekly_operations_report |
Pro | Read-only | [HaloPSA] Weekly operations snapshot: new tickets created, tickets closed, total time logged, SLA breaches, and contracts expiring soon. Provides a management-ready weekly summary. Note: Makes 4 API calls internally (parallel). |
halo_bulk_status_summary parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | no | null | Filter by client ID (optional). Omit for organization-wide counts. |
halo_client_financial_summary parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to summarize. Use halo_list_clients or halo_search_clients to find valid IDs. | |
endDate |
string | no | null | End date in yyyy-MM-dd format (optional). Defaults to today. |
startDate |
string | no | null | Start date in yyyy-MM-dd format (optional). Defaults to 6 months ago. |
halo_entity_relationship_map parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
clientId |
integer | yes | Client ID to map relationships for. Use halo_list_clients or halo_search_clients to find valid IDs. |
halo_queue_health_dashboard parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
teamId |
integer | yes | Team ID to analyze. Use halo_list_teams to find valid team IDs. |
halo_technician_dashboard parameters
| Param | Type | Required | Default | Description |
|---|---|---|---|---|
agentId |
integer | yes | Agent ID to build dashboard for. Use halo_list_agents or halo_search_agents to find valid IDs. |