Tool Catalog (generated)

Machine-generated signature index for the Leif MCP tools, built from the live FastMCP tool schemas. The exhaustive companion to the curated per-namespace reference pages.

This page is generated from the live FastMCP tool schemas — the parameters and defaults are exactly what the server accepts. It is the exhaustive, never-stale signature index; the curated namespace pages remain the readable guides with prose, gotchas, and worked examples.

cwa_* — ConnectWise Automate (RMM)

Find managed computers, run scripts/commands, read history. Note: only saved-script execution (cwa_execute / cwa_run_powershell) returns real stdout; cwa_run_command type 2 always returns Output: “ERR”.

Curated guide: ConnectWise Automate (RMM).

Search ConnectWise Automate computers (preferred over cwa_get).

ParamTypeRequiredDefaultNotes
namestring|nullnoSubstring match on computer name
conditionstring|nullnoRaw OData condition
pageintegerno1Page number
page_sizeintegerno50Items per page

cwa_get

Get or list CWA records by entity type / ID.

ParamTypeRequiredDefaultNotes
entity_typestringyesRecord type
idinteger|nullnoDirect ID lookup
conditionstring|nullnoOData condition
pageintegerno1
page_sizeintegerno50

cwa_status

Quick CWA health overview (alerts + offline agents).

ParamTypeRequiredDefaultNotes
include_alertsbooleannotrue
include_offlinebooleannotrue
offline_limitintegerno10

cwa_execute

Run a saved CWA library script on a computer (returns real captured output).

ParamTypeRequiredDefaultNotes
computer_idintegeryesTarget computer
script_idintegeryesLibrary script ID
parametersobject|nullno{string: string} script-variable inputs

cwa_run_command

Queue an ad-hoc command. command_type 2 is fire-and-forget (Output always “ERR”).

ParamTypeRequiredDefaultNotes
computer_idintegeryes
commandstring|nullnoConvenience command string
command_typestringno22=Execute, 301=Invoke Script, 22=Update Configs
shellstringnocmd
auto_encodebooleannotrueWrap metachars as base64 EncodedCommand
auto_salt_on_duplicatebooleannotrueRetry once on 400 Duplicate command

cwa_run_powershell

Run ad-hoc PowerShell via the encoded-PS shim — the only path that returns real PS stdout.

ParamTypeRequiredDefaultNotes
computer_idintegeryes
scriptstringyesRaw PowerShell (not pre-encoded)
shim_script_idintegeryesLibrary ID of ‘Leif - Run Encoded PowerShell’
poll_intervalnumberno3
poll_attemptsintegerno20

cwa_search_scripts

Search the CWA script library by name or OData condition.

ParamTypeRequiredDefaultNotes
namestring|nullno
conditionstring|nullno

cwa_script_history

Recent script-run history; DiagnosticMessage carries captured output.

ParamTypeRequiredDefaultNotes
computer_idintegeryes
script_idinteger|nullnoFilter to one script
limitintegerno10

cwa_raw_request

Raw authenticated CWA API call; never raises on 4xx/5xx.

ParamTypeRequiredDefaultNotes
methodstringyesHTTP method
pathstringyesAPI path beginning with /
bodyobject|nullno
paramsobject|nullno

cwa_probe_command_endpoint

Probe candidate command-endpoint paths; caches the winner.

ParamTypeRequiredDefaultNotes
computer_idintegeryes

hudu_* — Hudu (IT Documentation)

IT documentation system of record — companies, assets, articles, passwords, and their relationships. Entity-typed CRUD scoped by company_id; ‘delete’ is usually an archive via hudu_update (action=archive), and hudu_lookup bridges an external integration’s identifier to a Hudu resource and back.

Curated guide: Hudu (IT Documentation).

hudu_get

Get or list records by entity type, with rich filtering.

ParamTypeRequiredDefaultNotes
entity_typestringyescompany, asset, article, …
idinteger|nullnoFetch a single record
namestring|nullnoFilter by name
company_idinteger|nullnoScope to one company — the usual way to narrow assets/articles
integration_idstring|nullnoCross-reference an external integration’s identifier
dataobject|nullnoExtra filter payload
pageintegerno1Page number
page_sizeintegerno25Items per page

Free-text search across Hudu entities.

ParamTypeRequiredDefaultNotes
querystringyes

hudu_lookup

Special integration-bridge lookup keyed by lookup_type — map an external system’s identifier to a Hudu resource and back.

ParamTypeRequiredDefaultNotes
lookup_typestringyesSelects the lookup
company_idinteger|nullno
integration_idstring|nullno
integration_slugstring|nullnoExternal integration slug
integration_identifierstring|nullnoIdentifier within that integration
resource_typestring|nullno
resource_idinteger|nullno
user_idinteger|nullno
pageintegerno1

hudu_create

Create a record. name is required; data carries the rest, scoped by company_id for company-owned entities.

ParamTypeRequiredDefaultNotes
entity_typestringyes
namestringyesRecord name
company_idinteger|nullnoScope company-owned entities
dataobject|nullnoRest of the record fields

hudu_update

Update AND archive/unarchive flow through this one tool via action.

ParamTypeRequiredDefaultNotes
entity_typestringyes
idintegeryes
actionstringnoupdateupdate | archive (soft delete) | unarchive
company_idinteger|nullno
dataobject|nullnoFields to apply when action=update

hudu_delete

Hard delete by ID — irreversible. Prefer hudu_update action=archive for anything you might want back.

ParamTypeRequiredDefaultNotes
entity_typestringyes
idintegeryes

repairshopr_* — RepairShopr

System of record for tickets, customers, invoices. Entity-typed CRUD plus comments and search.

Curated guide: RepairShopr.

repairshopr_get

Get a record by ID or list/filter records of a type.

ParamTypeRequiredDefaultNotes
entity_typestringyesticket, customer, invoice, …
idinteger|nullnoFetch one; omit to list
filtersobject|nullnoField filters when listing

repairshopr_create

Create a record.

ParamTypeRequiredDefaultNotes
entity_typestringyes
dataobjectyesFull record payload

repairshopr_update

Update a record (only the fields in data).

ParamTypeRequiredDefaultNotes
entity_typestringyes
idintegeryes
dataobjectyes

repairshopr_delete

Delete a record (destructive).

ParamTypeRequiredDefaultNotes
entity_typestringyes
idintegeryes

repairshopr_comment

Add a comment to a ticket, with visibility/email control.

ParamTypeRequiredDefaultNotes
ticket_idintegeryes
commentstringyes
hiddenbooleannofalsetrue = internal, not customer-visible
do_not_emailbooleannofalsetrue = suppress customer email

Cross-entity free-text search.

ParamTypeRequiredDefaultNotes
querystringyes
search_typestringnoallNarrow to an entity when known

quickbooks_* — QuickBooks Online

Accounting. quickbooks_query is the SQL-like read workhorse; mutations use QBO’s SyncToken concurrency model. IDs are strings.

Curated guide: QuickBooks Online.

quickbooks_query

Run a raw QBO SQL-like query (no JOINs; paginate with start_position).

ParamTypeRequiredDefaultNotes
querystringyese.g. SELECT * FROM Invoice WHERE Balance > ‘0’
max_resultsinteger|nullnoPage size
start_positioninteger|nullno1-indexed offset

quickbooks_get

Get a single record by ID or list a type.

ParamTypeRequiredDefaultNotes
entity_typestringyes
idstring|nullnoQBO IDs are strings
filtersobject|nullno

quickbooks_create

Create a record.

ParamTypeRequiredDefaultNotes
entity_typestringyes
dataobjectyes

quickbooks_update

Update a record (sparse by default).

ParamTypeRequiredDefaultNotes
entity_typestringyes
idstringyes
dataobjectyes
sparsebooleannotruefalse = full replace (blanks omitted fields)
sync_tokenstring|nullnoOmit to use the current token

quickbooks_delete

Delete a record (sync-token aware).

ParamTypeRequiredDefaultNotes
entity_typestringyes
idstringyes
sync_tokenstring|nullno

quickbooks_report

Run a standard QBO financial report (ProfitAndLoss, BalanceSheet, AgedReceivables, …).

ParamTypeRequiredDefaultNotes
report_typestringyesQBO report endpoint name
start_datestring|nullnoYYYY-MM-DD
end_datestring|nullnoYYYY-MM-DD
datestring|nullnoAs-of date for point-in-time reports
accounting_methodstring|nullnoCash | Accrual
summarize_column_bystring|nullnoe.g. Month, Customer

quickbooks_export

Export records of a type to CSV, paginated.

ParamTypeRequiredDefaultNotes
entity_typestringyes
filtersobject|nullno
max_recordsintegerno1000

cf_* — Cloudflare

Zones, DNS, SSL mode, settings, cache. IMPORTANT: most cf_* tools take their args inside a nested params object (shown below as the inner fields). DNS updates are full replacements.

Curated guide: Cloudflare.

cf_list_zones

List all zones (id, name, status, name_servers, plan). No args.

Parameters not in the seed catalog — see the namespace reference page.

cf_get_zone

Look up a zone by domain name.

ParamTypeRequiredDefaultNotes
params.domainstringyesExact domain, e.g. super-ht.com

cf_list_dns_records

List DNS records for a zone.

ParamTypeRequiredDefaultNotes
params.zone_idstringyes
params.record_typestring|nullnoA, CNAME, MX, TXT, …
params.namestring|nullnoFilter by name

cf_create_dns_record

Create a DNS record.

ParamTypeRequiredDefaultNotes
params.zone_idstringyes
params.record_typestringyes
params.namestringyes
params.contentstringyes
params.ttlintegerno11 = automatic
params.proxiedbooleannofalseOrange-cloud

cf_update_dns_record

Replace an existing DNS record (full PUT — all fields required).

ParamTypeRequiredDefaultNotes
params.zone_idstringyes
params.record_idstringyes
params.record_typestringyes
params.namestringyes
params.contentstringyes

cf_delete_dns_record

Delete a DNS record (irreversible).

ParamTypeRequiredDefaultNotes
params.zone_idstringyes
params.record_idstringyes

cf_get_ssl_mode

Get the zone SSL/TLS mode (off|flexible|full|strict).

ParamTypeRequiredDefaultNotes
params.zone_idstringyes

cf_set_ssl_mode

Set the zone SSL/TLS mode. flexible is the usual WordPress redirect-loop cause.

ParamTypeRequiredDefaultNotes
params.zone_idstringyes
params.modestringyesoff | flexible | full | strict

cf_purge_cache

Purge zone cache (everything or specific files).

ParamTypeRequiredDefaultNotes
params.zone_idstringyes
params.purge_everythingbooleannofalse
params.filesarray|nullnoSpecific URLs

pve_* — Proxmox Virtual Environment

Node/storage/template inventory, LXC & VM lifecycle, in-guest exec, async task polling. Most tools take node + vmid; lifecycle ops are async and return a task UPID.

Curated guide: Proxmox Virtual Environment.

pve_node_status

CPU, memory, disk, uptime, load per node. No args.

Parameters not in the seed catalog — see the namespace reference page.

pve_lxc_list

List LXC containers.

ParamTypeRequiredDefaultNotes
nodestring|nullnoOmit for all nodes

pve_vm_list

List QEMU VMs.

ParamTypeRequiredDefaultNotes
nodestring|nullnoOmit for all nodes

pve_storage_list

List storage pools.

ParamTypeRequiredDefaultNotes
nodestring|nullno

pve_template_list

List LXC templates (find the exact ostemplate before create).

ParamTypeRequiredDefaultNotes
nodestringyes
storagestringnolocal

pve_lxc_create

Create an LXC. For Docker-in-LXC set features=“nesting=1”. Returns a task UPID.

ParamTypeRequiredDefaultNotes
nodestringyes
vmidintegeryes
hostnamestringyes
ostemplatestringyes
storagestringyes
rootfs_size_gbintegeryes
coresintegeryes
memory_mbintegeryes
featuresstring|nullnoe.g. nesting=1 for Docker
startbooleannofalse

pve_lxc_start

Start an LXC. Returns a task UPID.

ParamTypeRequiredDefaultNotes
nodestringyes
vmidintegeryes

pve_lxc_shutdown

Graceful shutdown of an LXC.

ParamTypeRequiredDefaultNotes
nodestringyes
vmidintegeryes

pve_lxc_stop

Hard power-off (force required).

ParamTypeRequiredDefaultNotes
nodestringyes
vmidintegeryes
forcebooleannofalseMust be true

pve_lxc_destroy

Permanently delete an LXC (force required).

ParamTypeRequiredDefaultNotes
nodestringyes
vmidintegeryes
forcebooleannofalseMust be true

pve_lxc_exec

Run a command inside an LXC via pct exec. Returns stdout/stderr/return_code.

ParamTypeRequiredDefaultNotes
nodestringyes
vmidintegeryes
commandstringyes

pve_vm_exec

Run a command inside a QEMU VM via the guest agent (needs agent: 1).

ParamTypeRequiredDefaultNotes
nodestringyes
vmidintegeryes
commandstringyes

pve_task_status

Poll an async task by node + UPID.

ParamTypeRequiredDefaultNotes
nodestringyes
upidstringyes

growably_* — Growably / LeadConnector CRM

Contacts, opportunities, conversations, tags, messaging, workflows. Discover IDs via growably_get; use growably_manage_tags (not growably_update) for tags; confirm before send_message / trigger_workflow.

Curated guide: Growably / LeadConnector CRM.

growably_get

Get/list by entity_type (contact, opportunity, pipeline, workflow, custom_field, conversation, …).

ParamTypeRequiredDefaultNotes
entity_typestringyesSelects what is returned
idstring|nullnoSingle record / parent id
querystring|nullnoContact search
limitintegerno20Max 100
start_after_idstring|nullnoCursor pagination

growably_upsert_contact

Create or update a contact (matched by email/phone).

ParamTypeRequiredDefaultNotes
first_namestringyes
last_namestring|nullno
emailstring|nullno
phonestring|nullno
tagsarray|nullno
custom_fieldsarray|nullno[{id, value}]

growably_update

Update a contact/opportunity field set. Do NOT change tags here.

ParamTypeRequiredDefaultNotes
entity_typestringyescontact | opportunity
idstringyes
dataobjectyes

growably_manage_tags

Add/remove tags via dedicated endpoints (won’t clobber existing tags).

ParamTypeRequiredDefaultNotes
contact_idstringyes
actionstringyesadd | remove
tagsarrayyes

growably_add_note

Add a note to a contact.

ParamTypeRequiredDefaultNotes
contact_idstringyes
bodystringyes

growably_create_opportunity

Create an opportunity in a pipeline stage.

ParamTypeRequiredDefaultNotes
namestringyes
pipeline_idstringyes
stage_idstringyes
contact_idstringyes
monetary_valuenumber|nullno
statusstringnoopenopen|won|lost|abandoned

growably_send_message

Send a message to a contact. Confirm first — cannot be recalled.

ParamTypeRequiredDefaultNotes
contact_idstringyes
messagestringyes
typestringnoSMSSMS|Email|GMB|WhatsApp|IG|FB|Custom
subjectstring|nullnoRequired when type=Email

growably_trigger_workflow

Enroll a contact in a workflow. Confirm first if it sends comms.

ParamTypeRequiredDefaultNotes
contact_idstringyes
workflow_idstringyes

gmail_* — Gmail (lowercase)

Search with Gmail query syntax, read, send, draft, attachments, labels. Use lowercase gmail_* (not capital-G Gmail:*). For customer-facing sends, use gmail_stage_send → gmail_confirm_send instead of sending directly.

Curated guide: Gmail (lowercase).

gmail_search_emails

Search using Gmail query syntax.

ParamTypeRequiredDefaultNotes
querystringyese.g. from
newer_than
include_bodybooleannotrue
max_resultsintegerno10

gmail_search_emails_batch

Search, auto-paginating until total_limit.

ParamTypeRequiredDefaultNotes
querystringyes
total_limitintegerno100

gmail_get_message

Get a single message (full headers when needed).

ParamTypeRequiredDefaultNotes
message_idstringyes
include_bodybooleannotrue

gmail_send_email

Send a message (confirm first; prefer gmail_stage_send for customer-facing).

ParamTypeRequiredDefaultNotes
toarrayyesList of addresses
subjectstringyes
bodystringyes
htmlbooleannofalse
reply_to_idstring|nullnoThread as a reply

gmail_create_draft

Create a draft for review.

ParamTypeRequiredDefaultNotes
toarrayyes
subjectstringyes
bodystringyes

gmail_get_attachment

Download an attachment (mind the output host).

ParamTypeRequiredDefaultNotes
message_idstringyes
attachment_idstringyes
output_pathstring|nullno

gmail_stage_send

Stage an outbound email for review. Returns send_id. Gmail API not contacted until confirmed.

ParamTypeRequiredDefaultNotes
toarrayyes
subjectstringyes
bodystringyes
htmlbooleannofalse
ccarray|nullno
bccarray|nullno
reply_to_idstring|nullno

gmail_list_staged_sends

List pending staged email sends awaiting confirmation.

Parameters not in the seed catalog — see the namespace reference page.

gmail_confirm_send

Send a staged email and remove it from the staging store.

ParamTypeRequiredDefaultNotes
send_idstringyesFrom gmail_stage_send

gmail_discard_staged_send

Discard a staged email without sending it.

ParamTypeRequiredDefaultNotes
send_idstringyes

sheets_* — Google Sheets

Read, write, and manage Google Sheets. sheets_read and sheets_write take a spreadsheet_id plus sheet/range; sheets_manage handles structural operations (add sheet, resize, format).

Curated guide: Google Sheets.

sheets_read

Read a range from a spreadsheet.

ParamTypeRequiredDefaultNotes
spreadsheet_idstringyes
rangestringyesA1 notation, e.g. Sheet1!A1
value_render_optionstringnoFORMATTED_VALUE

sheets_write

Write values to a range.

ParamTypeRequiredDefaultNotes
spreadsheet_idstringyes
rangestringyes
valuesarrayyes2D array of rows
value_input_optionstringnoUSER_ENTEREDUSER_ENTERED | RAW

sheets_manage

Structural sheet operations: add_sheet, delete_sheet, rename_sheet, resize_sheet, batch_update.

ParamTypeRequiredDefaultNotes
spreadsheet_idstringyes
operationstringyesadd_sheet | delete_sheet | rename_sheet | resize_sheet | batch_update
dataobject|nullnoOperation-specific payload

scheduler_* — Scheduler & Job Health

Create/list/remove scheduled jobs and check whether they ran. touch_job_heartbeat is the hook external crons call at the end of every run; job_health flags anything stale.

Curated guide: Scheduler & Job Health.

schedule_job

Create or update a scheduled job in the Leif registry.

ParamTypeRequiredDefaultNotes
namestringyesHuman-readable label
commandstringyesShell command; bare .py files get venv python prepended
schedulestringyesCron expr or natural language, e.g. ‘weekdays at 8am’
enabledbooleannotrue

list_scheduled_jobs

List all registered scheduled jobs.

Parameters not in the seed catalog — see the namespace reference page.

remove_scheduled_job

Remove a scheduled job by its ID.

ParamTypeRequiredDefaultNotes
job_idstringyes

touch_job_heartbeat

Record that a job just ran. Call at end of any cron — including external ones (RS sync, tn_tracking_sync, etc.).

ParamTypeRequiredDefaultNotes
job_idstringyesStable slug, e.g. rs-ticket-sync. Doesn’t need to be in the registry.
exit_codeintegerno0Non-zero marks job stale regardless of age
duration_snumber|nullno
notestring|nullno

job_health

Return stale/healthy/never_run buckets for all known jobs. Flags non-zero exit codes and jobs past 1.5x their cron interval.

ParamTypeRequiredDefaultNotes
max_stale_minutesintegerno120Minimum stale threshold; per-job interval overrides this upward

event_log_* — Episodic Event Log

Append typed events for any autonomous action; query with events_since to answer what Leif did between sessions. Covers job runs, notifications, retries, webhook firings.

Curated guide: Episodic Event Log.

log_event

Append a typed event. Common types: job_run, notification, webhook, retry, tool_call, error, info.

ParamTypeRequiredDefaultNotes
event_typestringyesjob_run | notification | webhook | retry | tool_call | error | info
summarystringyesOne-line description
detailsobject|nullnoFreeform structured payload
sourcestring|nullnoe.g. rs-ticket-sync, tn_tracking_sync
successbooleannotrue

events_since

Return events logged since a timestamp. Default: last 24 hours. Filter by type or success flag.

ParamTypeRequiredDefaultNotes
sincestring|nullnoISO-8601, e.g. 2026-06-10T08:00
. Omit for last 24 h.
event_typestring|nullnoFilter to one type
limitintegerno200
success_onlybooleannofalse

slack_notify_* — Slack Notifications

Send a DM to Wayne or post to a channel. Pass channel for ops-facing alerts (e.g. #ops-alerts) so Zach and Rick see them too.

Curated guide: Slack Notifications.

send_slack_notification

Send a Slack notification. DM to Wayne by default; pass channel to post to a channel instead.

ParamTypeRequiredDefaultNotes
messagestringyes
prioritystringnonormallow | normal | medium | high | urgent
titlestring|nullnoBold header above message
channelstring|nullnoChannel name (#ops-alerts) or ID. Omit for DM to Wayne.

file_transfer_* — File Transfer & Remote Write

transfer_file does host-to-host scp with sha256 verification. remote_write_file uses base64 piping (no more 15.8 KB echo truncation). Valid dest_host values: target, shtops, runpod.

Curated guide: File Transfer & Remote Write.

transfer_file

Copy a local file to a remote host via scp with sha256 verification. Replaces the old chunked-b64 workaround.

ParamTypeRequiredDefaultNotes
source_pathstringyesAbsolute path on Leif (10.10.0.25)
dest_hoststringyestarget | shtops | runpod
dest_pathstringyesAbsolute path on dest host
timeoutintegerno120

remote_write_file

Write a file on the target SSH host via base64 pipe + sha256 verify. No size limit; replaces echo-based approach.

ParamTypeRequiredDefaultNotes
pathstringyes
contentstringyes