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).

cwa_await_callback

Wait for a pending CWA PowerShell callback result. Use this after cwa_run_powershell returns status: Timeout with a callback_token. The shim script was successfully queued — it just hasn’t run yet because the CWA agent scheduler tick (~80-130s) hadn’t fired within the first call’s poll window. This tool polls the local SQLite store (cheap — no CWA API calls) for the token until the managed PC POSTs its output or the token expires. Args: token: The callback_token from a previou…

ParamTypeRequiredDefaultNotes
tokenstringyes—
poll_intervalnumberno5
poll_attemptsintegerno60

cwa_execute

Run a script on a computer.

ParamTypeRequiredDefaultNotes
computer_idintegeryes—
script_idintegeryes—
parametersobject|nullno—

cwa_get

Get or list ConnectWise Automate records.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idinteger|nullno—
conditionstring|nullno—
pageintegerno1
page_sizeintegerno50

cwa_probe_command_endpoint

Probe candidate CWA command endpoint paths to find the working one. Tries POST against all known path variants and reports HTTP status codes. 200/202 = working; 405 = path exists, wrong method; 404 = not found. Also caches the winner so subsequent cwa_run_command calls use it. Args: computer_id: A valid computer ID to use in path substitution.

ParamTypeRequiredDefaultNotes
computer_idintegeryes—

cwa_raw_request

Make a raw authenticated CWA API request and return the full response. Unlike other tools, this never raises on 4xx/5xx — it returns the raw status_code, headers, and body_text so you can diagnose schema mismatches or explore endpoints. Args: method: HTTP method (GET, POST, PUT, DELETE). path: API path beginning with / (e.g. /Commands). body: Optional JSON body for the request. params: Optional query parameters.

ParamTypeRequiredDefaultNotes
methodstringyes—
pathstringyes—
bodyobject|nullno—
paramsobject|nullno—

cwa_run_command

Queue a command on a CWA-managed computer. Verified live against POST /Computers/{id}/CommandExecute. IMPORTANT — output capture is limited by CWA itself: - command_type="2" (“Execute Command”) is fire-and-forget. The agent ALWAYS returns Output: "ERR" regardless of the actual stdout. Status reflects launch success only. To get real stdout, run a saved CWA script via cwa_execute / cwa_run_powershell (which use the /Batch/ScriptExecute “run now” endpoint and read output…

ParamTypeRequiredDefaultNotes
computer_idintegeryes—
commandstring|nullno—
command_typestringno2
parametersarray|nullno—
shellstringnocmd
fastalkbooleannotrue
auto_encodebooleannotrue
force_encodebooleannofalse
auto_salt_on_duplicatebooleannotrue
pollbooleannotrue
poll_intervalnumberno2
poll_attemptsintegerno20

cwa_run_powershell

Run an ad-hoc PowerShell script via the CWA shim and return stdout. This is the only path in CWA that returns real script output. Command type 2 (“Execute Command”) always returns Output: "ERR" regardless of stdout — this tool exists to work around that. Callback mode (default when CWA_CALLBACK_BASE_URL is set): Instead of relying on CWA’s DiagnosticMessage field (which is truncated to ~80 chars), the user’s script is wrapped in a PowerShell snippet that captures all stdout/st…

ParamTypeRequiredDefaultNotes
computer_idintegeryes—
scriptstringyes—
shim_script_idintegeryes—
poll_intervalnumberno3
poll_attemptsintegerno15
nudgebooleannofalse
use_callbackbooleannotrue

cwa_script_history

Fetch recent script-run history for a CWA computer. Each record includes DiagnosticMessage — the full execution log with captured variable values (when the script has @ScriptEngineEnableLogger@ set to True). This is the primary stdout-capture surface in CWA. Important: The list endpoint truncates DiagnosticMessage to ~80 characters. To get complete output for a specific run, pass history_id (the history_id returned by cwa_run_powershell after a Timeout or compl…

ParamTypeRequiredDefaultNotes
computer_idintegeryes—
script_idinteger|nullno—
limitintegerno10
history_idinteger|nullno—
full_outputbooleannofalse

Search ConnectWise Automate computers.

ParamTypeRequiredDefaultNotes
namestring|nullno—
conditionstring|nullno—
pageintegerno1
page_sizeintegerno50

cwa_search_scripts

Search the CWA script library by name or OData condition. Use this BEFORE writing your own diagnostic logic — there is almost certainly already a “Get Eventlog Last 24h” or similar script in the library. Pass the discovered Id to cwa_execute to run it on a target computer; that is the only path that returns real stdout from CWA. Args: name: Substring matched as Name like '%<name>%'. condition: Raw condition string. Overrides name. page: 1-indexed page number. page_size: Items…

ParamTypeRequiredDefaultNotes
namestring|nullno—
conditionstring|nullno—
pageintegerno1
page_sizeintegerno50

cwa_status

Get a quick ConnectWise Automate health overview.

ParamTypeRequiredDefaultNotes
include_alertsbooleannotrue
include_offlinebooleannotrue
offline_limitintegerno10

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_create

Create a Hudu record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
namestringyes—
company_idinteger|nullno—
dataobject|nullno—

hudu_delete

Delete a Hudu record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idintegeryes—

hudu_get

Get or list Hudu records by entity type.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idinteger|nullno—
company_idinteger|nullno—
namestring|nullno—
pageintegerno1
page_sizeintegerno25
dataobject|nullno—
integration_idstring|nullno—

hudu_lookup

Perform a special Hudu lookup.

ParamTypeRequiredDefaultNotes
lookup_typestringyes—
integration_slugstring|nullno—
integration_idstring|nullno—
integration_identifierstring|nullno—
company_idinteger|nullno—
resource_idinteger|nullno—
resource_typestring|nullno—
user_idinteger|nullno—
pageintegerno1

Search across Hudu entities.

ParamTypeRequiredDefaultNotes
querystringyes—

hudu_update

Update, archive, or unarchive a Hudu record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idintegeryes—
actionstringnoupdate
company_idinteger|nullno—
dataobject|nullno—

repairshopr_* — RepairShopr

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

Curated guide: RepairShopr.

repairshopr_comment

Add a comment to a RepairShopr ticket.

ParamTypeRequiredDefaultNotes
ticket_idintegeryes—
commentstringyes—
hiddenbooleannofalse
do_not_emailbooleannofalse

repairshopr_create

Create a RepairShopr record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
dataobjectyes—

repairshopr_delete

Delete a RepairShopr record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idintegeryes—

repairshopr_export

Slim paged export of tickets, customers, invoices, or POs for sync pipelines. Returns summary fields only, so responses stay far below the MCP output cap. Tickets filter server-side via since_updated_at; customers walk updated_at DESC pages and stop once records are older than since_updated_at (RS has no since filter for customers).

ParamTypeRequiredDefaultNotes
entity_typestringyes—
since_updated_atstring|nullno—
statusstring|nullno—
created_afterstring|nullno—
start_pageintegerno1
max_pagesintegerno5

repairshopr_get

Get or list RepairShopr records.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idinteger|nullno—
filtersobject|nullno—

Search across RepairShopr entities.

ParamTypeRequiredDefaultNotes
querystringyes—
search_typestringnoall

repairshopr_update

Update a RepairShopr record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idintegeryes—
dataobjectyes—

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_create

Create a QuickBooks record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
dataobjectyes—

quickbooks_delete

Delete a QuickBooks record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idstringyes—
sync_tokenstring|nullno—

quickbooks_export

Export QuickBooks records to CSV with pagination.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
filtersobject|nullno—
max_recordsintegerno1000

quickbooks_get

Get a single QuickBooks record or list records.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idstring|nullno—
filtersobject|nullno—

quickbooks_invoice_class_detail

Return invoice class attribution for an exact QuickBooks invoice number. Exposes transaction- and line-level ClassRef values in a compact shape so callers can audit upstream location/class mappings without parsing the full QBO invoice payload.

ParamTypeRequiredDefaultNotes
doc_numberstringyes—

quickbooks_query

Run a raw QuickBooks SQL-like query.

ParamTypeRequiredDefaultNotes
querystringyes—
start_positioninteger|nullno—
max_resultsinteger|nullno—

quickbooks_reconcile_invoice_classes

Bulk-audit expected class against actual QBO invoice line classes. Input rows require doc_number and expected_class; arbitrary caller context (for example RS invoice id, technician, or RS location) is echoed back. This tool is read-only and never changes QuickBooks.

ParamTypeRequiredDefaultNotes
invoicesarray[object]yes—

quickbooks_report

Run a standard QuickBooks financial report.

ParamTypeRequiredDefaultNotes
report_typestringyes—
report_namestring|nullno—
start_datestring|nullno—
end_datestring|nullno—
datestring|nullno—
accounting_methodstring|nullno—
summarize_column_bystring|nullno—
paramsobject|nullno—

quickbooks_update

Update a QuickBooks record.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idstringyes—
dataobjectyes—
sync_tokenstring|nullno—
sparsebooleannotrue

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_create_dns_record

Create a new DNS record in a Cloudflare zone. Args: params.zone_id: Cloudflare zone ID params.record_type: Record type (A, AAAA, CNAME, MX, TXT, SRV, etc.) params.name: Record name (e.g. ‘www’, ‘mail’, or ’@’ for root) params.content: Record value (IP, hostname, or text content) params.ttl: TTL in seconds; 1 = automatic (default) params.proxied: Route through Cloudflare proxy (default False) params.priority: Priority for MX/SRV records Returns: str: JSON with the created record details includ…

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_delete_dns_record

Delete a DNS record from a Cloudflare zone. This is a destructive operation and cannot be undone. Use cf_list_dns_records to find the record_id before deleting. Args: params.zone_id: Cloudflare zone ID params.record_id: ID of the DNS record to delete Returns: str: JSON confirming deletion with the deleted record ID.

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_get_ssl_mode

Get the SSL/TLS encryption mode for a Cloudflare zone. Modes: off, flexible, full, strict. ‘flexible’ is the most common cause of WordPress redirect loops. Args: params.zone_id: Cloudflare zone ID (get from cf_get_zone or cf_list_zones) Returns: str: JSON with the current ssl setting id, value, and editable flag.

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_get_zone

Look up a Cloudflare zone by domain name and return its details including zone ID. Args: params.domain: The exact domain name to look up (e.g. ‘sanbornpropane.com’) Returns: str: JSON with zone id, name, status, plan, name_servers, and paused flag.

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_get_zone_settings

Get all settings for a Cloudflare zone. Returns all configurable settings (SSL, security level, caching, minification, always_use_https, WAF, etc.) as a list of {id, value, editable} objects. Args: params.zone_id: Cloudflare zone ID Returns: str: JSON with list of all zone settings.

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_list_dns_records

List DNS records for a Cloudflare zone. Args: params.zone_id: Cloudflare zone ID params.record_type: Optional filter by type (A, CNAME, MX, TXT, etc.) params.name: Optional filter by record name Returns: str: JSON with list of DNS records including id, type, name, content, ttl, proxied.

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_list_zones

List all Cloudflare zones (domains) on the account. Returns a list of zones with id, name, status, name_servers, and plan. Use zone IDs from this list as input to other cf_* tools. Returns: str: JSON with success bool and result list of zone objects.

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

cf_purge_cache

Purge cached assets for a Cloudflare zone. Either purge_everything=True (clears all cached files) or provide a list of specific file URLs to purge selectively. Args: params.zone_id: Cloudflare zone ID params.purge_everything: If True, purge all cached assets params.files: List of specific URLs to purge (alternative to purge_everything) Returns: str: JSON confirming the purge operation.

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_set_ssl_mode

Set the SSL/TLS encryption mode for a Cloudflare zone. Valid modes: off - No SSL (HTTP only) flexible - SSL between visitor and Cloudflare; HTTP to origin full - SSL end-to-end; origin cert can be self-signed strict - SSL end-to-end; origin cert must be valid/trusted Use ‘full’ or ‘strict’ to fix WordPress/origin redirect loops caused by ‘flexible’. Args: params.zone_id: Cloudflare zone ID params.mode: One of: off, flexible, full, strict Returns: str: JSON with the updated ssl setting.

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_set_zone_setting

Set a specific zone setting for a Cloudflare zone. Common setting IDs and example values: always_use_https -> “on” or “off” security_level -> “off” | “essentially_off” | “low” | “medium” | “high” | “under_attack” browser_cache_ttl -> integer (seconds) cache_level -> “aggressive” | “basic” | “simplified” development_mode -> “on” or “off” email_obfuscation -> “on” or “off” minify -> {“css”: “on”, “html”: “on”, “js”: “on”} rocket_loader -> “on” or “off” automatic_https_rewrites -> “on” or “off”…

ParamTypeRequiredDefaultNotes
paramsanyyes—

cf_update_dns_record

Update (replace) an existing DNS record in a Cloudflare zone. All fields are required as this is a full replacement (PUT), not a partial update. Use cf_list_dns_records to find the record_id. Args: params.zone_id: Cloudflare zone ID params.record_id: ID of the DNS record to update params.record_type: Record type (A, AAAA, CNAME, MX, TXT, etc.) params.name: Record name params.content: New record value params.ttl: TTL in seconds; 1 = automatic params.proxied: Route through Cloudflare proxy para…

ParamTypeRequiredDefaultNotes
paramsanyyes—

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_lxc_create

Create an LXC container on a Proxmox node. Required inputs: node, vmid, hostname, ostemplate, storage, rootfs_size_gb, cores, memory_mb. Optional inputs: swap_mb, password, ssh_public_keys, net0, unprivileged, features, start. If the container will run Docker, set features=“nesting=1”. Without that, Docker-in-LXC will fail. Returns the async task UPID.

ParamTypeRequiredDefaultNotes
nodestringyes—
vmidintegeryes—
hostnamestringyes—
ostemplatestringyes—
storagestringyes—
rootfs_size_gbintegeryes—
coresintegeryes—
memory_mbintegeryes—
swap_mbintegerno512
passwordstring|nullno—
ssh_public_keysstring|nullno—
net0stringnoname=eth0,bridge=vmbr0,ip=dhcp
unprivilegedintegerno1
featuresstring|nullno—
startbooleannofalse

pve_lxc_destroy

Destroy an LXC container. This permanently deletes the container, so force=true is required.

ParamTypeRequiredDefaultNotes
nodestringyes—
vmidintegeryes—
forcebooleannofalse

pve_lxc_exec

Run a shell command inside an LXC using pct exec over SSH to the Proxmox host. Returns stdout, stderr, and return_code.

ParamTypeRequiredDefaultNotes
nodestringyes—
vmidintegeryes—
commandstringyes—

pve_lxc_list

List LXC containers with vmid, name, status, CPU, memory, and disk usage. If node is omitted, includes all nodes.

ParamTypeRequiredDefaultNotes
nodestring|nullno—

pve_lxc_shutdown

Gracefully shut down an LXC container and return the Proxmox task UPID.

ParamTypeRequiredDefaultNotes
nodestringyes—
vmidintegeryes—

pve_lxc_start

Start an LXC container and return the Proxmox task UPID.

ParamTypeRequiredDefaultNotes
nodestringyes—
vmidintegeryes—

pve_lxc_stop

Hard-stop an LXC container. This is abrupt power-off behavior, so force=true is required.

ParamTypeRequiredDefaultNotes
nodestringyes—
vmidintegeryes—
forcebooleannofalse

pve_node_status

Get CPU, memory, disk, uptime, and load data for each Proxmox node.

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

pve_storage_list

List Proxmox storage pools with type, used, total, available, and content types. If node is omitted, lists storage on all nodes.

ParamTypeRequiredDefaultNotes
nodestring|nullno—

pve_task_status

Get the status of an async Proxmox task by node and UPID.

ParamTypeRequiredDefaultNotes
nodestringyes—
upidstringyes—

pve_template_list

List available LXC templates on a node and storage. Use this to find the exact Debian 12 template name before pve_lxc_create.

ParamTypeRequiredDefaultNotes
nodestringyes—
storagestringnolocal

pve_vm_exec

Run a shell command inside a QEMU VM via the QEMU Guest Agent. Requires qemu-guest-agent installed and running inside the VM (and the VM’s config must have agent: 1). Returns stdout, stderr, and return_code. If the agent is unavailable, return_code will be non-zero and stderr will carry the host-side error message.

ParamTypeRequiredDefaultNotes
nodestringyes—
vmidintegeryes—
commandstringyes—

pve_vm_list

List QEMU VMs with vmid, name, status, CPU, memory, and disk usage. If node is omitted, includes all nodes.

ParamTypeRequiredDefaultNotes
nodestring|nullno—

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_add_note

Add a note to a Growably contact.

ParamTypeRequiredDefaultNotes
contact_idstringyes—
bodystringyes—

growably_create_opportunity

Create a new opportunity in a Growably pipeline. Use growably_get entity_type=pipeline to discover pipeline/stage IDs. status: open, won, lost, abandoned (default: open)

ParamTypeRequiredDefaultNotes
namestringyes—
pipeline_idstringyes—
stage_idstringyes—
contact_idstringyes—
monetary_valuenumber|nullno—
statusstringnoopen

growably_get

Get or list Growably/LeadConnector records. entity_type options: contact — list contacts or get by id opportunity — list opportunities or get by id pipeline — list all pipelines calendar — list calendars calendar_event — list events (filter: calendar_id, start_time, end_time) conversation — list conversations or get by id (filter: contact_id) conversation_messages — get messages for a conversation (requires: id) workflow — list workflows tag — list all tags custom_field — list custom fields l…

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idstring|nullno—
querystring|nullno—
pipeline_idstring|nullno—
stage_idstring|nullno—
contact_idstring|nullno—
calendar_idstring|nullno—
conversation_idstring|nullno—
start_timestring|nullno—
end_timestring|nullno—
limitintegerno20
start_afterstring|nullno—
start_after_idstring|nullno—

growably_manage_tags

Add or remove tags on a Growably contact. action: “add” or “remove” tags: List of tag strings Uses dedicated tag endpoints (not PUT contact) to avoid overwriting existing tags.

ParamTypeRequiredDefaultNotes
contact_idstringyes—
actionstringyes—
tagsarray[string]yes—

growably_send_message

Send a message to a Growably contact via SMS or Email. IMPORTANT: Always confirm the recipient, message content, and channel with Wayne before calling this tool. Once sent, messages cannot be recalled. type: SMS (default), Email, GMB, WhatsApp, IG, FB, Custom subject: Required when type=Email email_from: Optional sender address override for Email

ParamTypeRequiredDefaultNotes
contact_idstringyes—
messagestringyes—
typestringnoSMS
subjectstring|nullno—
email_fromstring|nullno—

growably_trigger_workflow

Trigger a Growably workflow on a contact. Use growably_get entity_type=workflow to discover workflow IDs. IMPORTANT: Confirm with Wayne before triggering workflows that send communications to customers.

ParamTypeRequiredDefaultNotes
contact_idstringyes—
workflow_idstringyes—

growably_update

Update a Growably record. entity_type: contact, opportunity id: Record ID to update data: Fields to update (dict). For contacts, avoid updating tags directly here — use growably_manage_tags instead to prevent tag overwrites.

ParamTypeRequiredDefaultNotes
entity_typestringyes—
idstringyes—
dataobjectyes—

growably_upsert_contact

Create or update a Growably contact (matched by email/phone). If a contact with the same email or phone already exists it will be updated; otherwise a new contact is created. custom_fields format: [{“id”: “<field_id>”, “value”: ""}] Use growably_get entity_type=custom_field to discover field IDs.

ParamTypeRequiredDefaultNotes
first_namestringyes—
last_namestring|nullno—
emailstring|nullno—
phonestring|nullno—
tagsarray|nullno—
sourcestring|nullno—
custom_fieldsarray|nullno—

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_confirm_send

Confirm and deliver a staged email. Retrieves the staged send created by gmail_stage_send, sends it via Gmail, and removes it from the staging store.

ParamTypeRequiredDefaultNotes
send_idstringyes—

gmail_create_draft

Create a Gmail draft. attachments is an optional list of absolute file paths on the Leif server, under the uploads folder (by default /home/superht/data/uploads), at most 10 files and 17 MB in total. A refused path creates no draft.

ParamTypeRequiredDefaultNotes
toarray[string]yes—
subjectstringyes—
bodystringyes—
htmlbooleannofalse
attachmentsarray|nullno—

gmail_discard_staged_send

Discard a staged email without sending it.

ParamTypeRequiredDefaultNotes
send_idstringyes—

gmail_get_attachment

Download a Gmail attachment.

ParamTypeRequiredDefaultNotes
message_idstringyes—
attachment_idstringyes—
output_pathstring|nullno—

gmail_get_labels

List Gmail labels.

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

gmail_get_message

Get a single Gmail message.

ParamTypeRequiredDefaultNotes
message_idstringyes—
include_bodybooleannotrue

gmail_get_recent_emails

Get recent Gmail messages with optional unread filtering.

ParamTypeRequiredDefaultNotes
daysintegerno7
max_resultsintegerno20
unread_onlybooleannofalse
page_tokenstring|nullno—

gmail_list_staged_sends

List all pending staged email sends awaiting confirmation.

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

gmail_mark_as_read

Mark a Gmail message as read.

ParamTypeRequiredDefaultNotes
message_idstringyes—

gmail_search_emails

Search Gmail messages using query syntax.

ParamTypeRequiredDefaultNotes
querystringyes—
max_resultsintegerno10
include_bodybooleannotrue
page_tokenstring|nullno—

gmail_search_emails_batch

Search Gmail messages with pagination until the requested limit.

ParamTypeRequiredDefaultNotes
querystringyes—
total_limitintegerno100
include_bodybooleannotrue

gmail_send_email

Send a Gmail message. attachments is an optional list of absolute file paths on the Leif server. Files must be under the uploads folder (by default /home/superht/data/uploads, where gmail_get_attachment saves), at most 10 files and 17 MB in total. A refused path sends nothing.

ParamTypeRequiredDefaultNotes
toarray[string]yes—
subjectstringyes—
bodystringyes—
htmlbooleannofalse
ccarray|nullno—
bccarray|nullno—
reply_to_idstring|nullno—
attachmentsarray|nullno—

gmail_stage_send

Stage an outbound email for review before it is sent. Use this instead of gmail_send_email for customer-facing messages. Returns a send_id. Call gmail_confirm_send with that id to actually deliver it, or gmail_discard_staged_send to cancel. Staged sends are stored locally and never leave the server until confirmed — the Gmail API is not contacted at this step. attachments is an optional list of absolute file paths on the Leif server, under the uploads folder (by default “…

ParamTypeRequiredDefaultNotes
toarray[string]yes—
subjectstringyes—
bodystringyes—
htmlbooleannofalse
ccarray|nullno—
bccarray|nullno—
reply_to_idstring|nullno—
attachmentsarray|nullno—

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_manage

Create spreadsheets, inspect metadata, or add sheets.

ParamTypeRequiredDefaultNotes
actionstringyes—
spreadsheet_idstring|nullno—
titlestring|nullno—
sheet_namesarray|nullno—
sheet_propertiesobject|nullno—

sheets_read

Read values from a spreadsheet.

ParamTypeRequiredDefaultNotes
spreadsheet_idstringyes—
rangestring|nullno—
value_render_optionstringnoFORMATTED_VALUE

sheets_write

Write, append, clear, or find/replace values in a spreadsheet.

ParamTypeRequiredDefaultNotes
spreadsheet_idstringyes—
rangestring|nullno—
modestringnowrite
valuesarray|nullno—
findstring|nullno—
replacestring|nullno—
value_input_optionstringnoUSER_ENTERED

add_* — add

add_email_filter

Create an email filter.

ParamTypeRequiredDefaultNotes
sender_emailstring|nullno—
sender_domainstring|nullno—
subject_patternstring|nullno—
subject_matchstringnocontains
descriptionstringno“

agent_* — agent

agent_dispatch

Start a scoped subagent run on the Leif host and return immediately. Edit agents (“edit”, “edit-probe”) are restricted to the principals in their allowed_callers. An “edit” run makes one change to the Leif repo in an ATC lane at an immutable base, checks every changed path against scope, runs the landing gate from main, and pushes atc/. It never lands or deploys. agent_result returns the manifest: base_sha, commit_sha, branch, changed_files, gate exit code and log tail. Args: agent:…

ParamTypeRequiredDefaultNotes
agentstringyes—
taskstringyes—
modelstring|nullno—
effortstring|nullno—
max_turnsinteger|nullno—
contextstring|nullno—
scopearray|nullno—
basestring|nullno—
patchstring|nullno—
expected_treestring|nullno—
idempotency_keystring|nullno—

agent_list

List dispatchable Leif subagents with model ceilings, caps and cost hints. Call this before agent_dispatch to pick the right agent. Every agent runs read-only under its own scoped Leif principal; the model can only be lowered from the default, never raised above the ceiling.

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

agent_result

Final report plus subtype, stop reason, cost, usage, note id, and status.

ParamTypeRequiredDefaultNotes
run_idstringyes—
max_charsintegerno20000

agent_runs

List recent dispatched runs, newest first (run_id, agent, status, cost, note_id). Use this to recover a lost run_id or to see what is queued/running before dispatching more. Compact rows only; call agent_result for a specific run’s report. Args: limit: Max rows (1-200, default 20). status: Optional exact filter: queued|running|done|failed|timeout|lost.

ParamTypeRequiredDefaultNotes
limitintegerno20
statusstring|nullno—

agent_status

Run status; cost, turns, and usage normally appear only after termination.

ParamTypeRequiredDefaultNotes
run_idstringyes—

agent_wait

Wait server-side until a run is terminal or max_wait_s passes; one call, not a poll loop. Returns the run’s status either way, so dispatch + agent_wait replaces dispatch + N agent_status polls. Bounded: max_wait_s is capped (default cap 90s, under the MCP edge’s request timeout) and the call never blocks past it. If terminal is false, call agent_wait again. Args: run_id: The dispatched run to wait on. max_wait_s: Seconds to wait before returning the current status.

ParamTypeRequiredDefaultNotes
run_idstringyes—
max_wait_snumberno60

append_* — append

append_to_excel

Append rows to an existing Excel workbook.

ParamTypeRequiredDefaultNotes
pathstringyes—
dataarray[object]yes—
sheet_namestring|nullno—

apt_* — apt

apt_install

Install packages with APT on the local host.

ParamTypeRequiredDefaultNotes
packagesarray[string]yes—
update_cachebooleannotrue

Search available APT packages on the local host.

ParamTypeRequiredDefaultNotes
search_termstringyes—

backfill_* — backfill

backfill_event_log

Backfill historical conversation turns into the event log. source_format is claude_export, slack_canvas, or reconstruction_from_notes. raw_data_or_path is a file path, a JSON string, or (for slack_canvas) raw transcript text. Turns are appended with source="backfill" and a per-source confidence so reconstructed history is weighted differently from real-time turns. Optionally restrict to conversation_date_range [start_iso, end_iso].

ParamTypeRequiredDefaultNotes
source_formatstringyes—
raw_data_or_pathstringyes—
conversation_date_rangearray|nullno—
confidencenumber|nullno—

bootstrap_* — bootstrap

bootstrap_context

Load scope-based living docs and the latest handoff for session bootstrap.

ParamTypeRequiredDefaultNotes
scopestringnoshtops
include_contentbooleannotrue

break_* — break

break_down_task

Create subtasks under a parent task.

ParamTypeRequiredDefaultNotes
parent_taskstringyes—
subtasksarray[string]yes—

calendar_* — Google Calendar

Curated guide: Google Calendar.

calendar_create_event

Create a calendar event.

ParamTypeRequiredDefaultNotes
summarystringyes—
start_timestringyes—
end_timestringyes—
calendar_idstringnoprimary
descriptionstring|nullno—
locationstring|nullno—
attendeesarray|nullno—
timezonestringnoUTC

calendar_delete_event

Delete a calendar event.

ParamTypeRequiredDefaultNotes
event_idstringyes—
calendar_idstringnoprimary

calendar_get_events

List events in a calendar.

ParamTypeRequiredDefaultNotes
calendar_idstringnoprimary
time_minstring|nullno—
time_maxstring|nullno—
max_resultsintegerno10
querystring|nullno—

calendar_get_free_busy

Get free/busy information for one or more calendars.

ParamTypeRequiredDefaultNotes
calendar_idsarray[string]yes—
time_minstringyes—
time_maxstringyes—

calendar_list_calendars

List all accessible calendars.

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

calendar_update_event

Update a calendar event.

ParamTypeRequiredDefaultNotes
event_idstringyes—
calendar_idstringnoprimary
summarystring|nullno—
start_timestring|nullno—
end_timestring|nullno—
descriptionstring|nullno—
locationstring|nullno—
timezonestringnoUTC

capture_* — capture

capture_action_items

Turn a conversation’s outcome into tracked work. Sort the conversation’s results into two buckets and submit once: - action_items: committed to-dos. Each becomes a task grouped under a single parent task named topic and linked to this conversation, so the whole list stays cohesive and traceable back to the chat. Each item is a dict with a required title and optional priority, category, due_date, due_time, description. - ideas: tentative thoughts not yet wor…

ParamTypeRequiredDefaultNotes
topicstringyes—
action_itemsarray|nullno—
ideasarray|nullno—
conversation_idstring|nullno—
project_idstring|nullno—
categorystring|nullno—
prioritystringnomedium

capture_deadline

Record a deadline or a deadline-less item to track. Pass due_date (ISO YYYY-MM-DD) for a hard deadline — it gets bucketed by the health check. Omit it to track important work that has no forced date; the stasis detector then watches it and surfaces it if it goes quiet for 3+ weeks. Capture high-confidence items only; if a date is ambiguous, confirm with Wayne first rather than guessing.

ParamTypeRequiredDefaultNotes
itemstringyes—
due_datestring|nullno—
contextstring|nullno—
confidencenumberno1

capture_task

Quick-capture a task from natural language with optional overrides. Severity: when priority is omitted, a P0/P1/P2 severity marker in the content can escalate the priority (issue #36, Finding 3) — P0/outage/incident → urgent, P1/blocker → high, P2 → medium — on top of the service’s existing urgency-keyword inference. An explicit priority always wins, and a marker never downgrades a stronger signal already detected. Category is intentionally not a parameter: server-side inf…

ParamTypeRequiredDefaultNotes
contentstringyes—
prioritynullno—
tagsarray|nullno—
due_datestring|nullno—
due_timestring|nullno—
project_idstring|nullno—
conversation_idstring|nullno—
sourcestringnoquick_capture
parent_taskstring|nullno—

cleanup_* — cleanup

cleanup_old_checkpoints

Delete stale progress checkpoints.

ParamTypeRequiredDefaultNotes
user_idstring|nullno—
max_age_daysintegerno7

commit_* — commit

commit_bill_entry_batch

Commit one exact financial batch after separate durable approval.

ParamTypeRequiredDefaultNotes
operation_idstringyes—
batch_idstringyes—
expected_revisionintegeryes—
decisionsarray|nullno—

commit_check_deposit_batch

Commit one exact financial batch after separate durable approval.

ParamTypeRequiredDefaultNotes
operation_idstringyes—
batch_idstringyes—
expected_revisionintegeryes—
decisionsarray|nullno—

complete_* — complete

complete_checkpoint

Mark a progress checkpoint complete.

ParamTypeRequiredDefaultNotes
user_idstringyes—
task_idstringyes—
completion_messagestring|nullno—

complete_leif_task

Deprecated compatibility alias for complete_tracked_task.

ParamTypeRequiredDefaultNotes
taskstringyes—
forcebooleannofalse

complete_task

Deprecated compatibility alias for complete_checkpoint.

ParamTypeRequiredDefaultNotes
user_idstringyes—
task_idstringyes—
completion_messagestring|nullno—

complete_tracked_task

Mark an actionable tracked task as done.

ParamTypeRequiredDefaultNotes
taskstringyes—
forcebooleannofalse

conversation_* — conversation

conversation_analytics

Analyze Leif conversation history across all stored sessions.

ParamTypeRequiredDefaultNotes
analysis_typestringyes—
date_rangestring|nullno—

convert_* — convert

convert_excel_to_csv

Convert an Excel sheet to CSV.

ParamTypeRequiredDefaultNotes
excel_pathstringyes—
csv_pathstring|nullno—
sheet_namestring|integer|nullno0

council_* — council

council_result

Read this principal’s paged Council result; follow each seat next_offset. Optional seat: claude/codex/xai; offset >=0, limit 1-1000 characters. Default returns the first page of all seats, never an opaque output cap.

ParamTypeRequiredDefaultNotes
submission_idstringyes—
seatstring|nullno—
offsetintegerno0
limitintegerno1000

council_status

Read only the current authenticated principal’s Council receipt and status.

ParamTypeRequiredDefaultNotes
submission_idstringyes—

council_submit

Submit project text to all three advisory Council seats; return durable receipt. This sends artifact content to external model providers. authorization_scope carries the user’s existing explicit instruction and content-specific scope; it is attribution, never approval or a policy override. Respect platform review and sensitive-data restrictions. Do not ask again solely because this is a write. Retry identical requests with the same key; changed content fails. Fetch status and result; never re…

ParamTypeRequiredDefaultNotes
project_idstringyes—
pathstringyes—
authorization_scopestringyes—
request_keystringyes—

create_* — create

create_directory

Create a local directory.

ParamTypeRequiredDefaultNotes
pathstringyes—

create_file

Create or overwrite a local file.

ParamTypeRequiredDefaultNotes
pathstringyes—
contentstringyes—

create_project

Create a new project context.

ParamTypeRequiredDefaultNotes
namestringyes—
descriptionstringno“
system_instructionsstringno“
project_idstring|nullno—
metadataobject|nullno—

create_task

Create a task with explicit fields. priority accepts None (or omission) and falls back to TaskPriority.MEDIUM. Tolerating null keeps MCP clients that emit an explicit priority: null from hitting a validation loop. Category is intentionally not a parameter: server-side inference (TaskService._auto_categorize) assigns it from the title and description at creation. To force a different category, use update_task afterwards.

ParamTypeRequiredDefaultNotes
titlestringyes—
descriptionstringno“
prioritynullno—
tagsarray|nullno—
due_datestring|nullno—
due_timestring|nullno—
project_idstring|nullno—
sourcestringnomanual
metadataobject|nullno—
parent_taskstring|nullno—
conversation_idstring|nullno—

create_task_from_ticket

Create a new task from a RepairShopr ticket.

ParamTypeRequiredDefaultNotes
ticketstringyes—

Create a one-tap web link for the current user to upload files to Leif. Returns a URL the user opens in any browser (works on mobile) to drop one or more files. Uploaded files are tagged to the calling user and can then be used by other tools (for example, wp_create_post_draft images, or image edits) by referencing their upload_id. The link expires after a short window. After the user uploads, call list_recent_uploads to get the ids.

ParamTypeRequiredDefaultNotes
purposestringno“

deadline_* — deadline

deadline_status

Current deadline + stasis status: overdue, due soon (≤7d), due later (≤30d), and stuck deadline-less items. Read-only snapshot for surfacing what’s approaching or has gone quiet.

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

delete_* — delete

delete_file

Delete a local file.

ParamTypeRequiredDefaultNotes
pathstringyes—

discover_* — discover

discover_services

Discover existing services, clients, and scripts in the codebase.

ParamTypeRequiredDefaultNotes
querystringno“

drive_* — Google Drive

Curated guide: Google Drive.

drive_create_folder

Create a new folder in Google Drive.

ParamTypeRequiredDefaultNotes
namestringyes—
parent_folder_idstring|nullno—

drive_create_google_doc

Create a new Google Doc with optional initial content.

ParamTypeRequiredDefaultNotes
titlestringyes—
contentstring|nullno—
parent_folder_idstring|nullno—

drive_get_file_metadata

Get metadata for a Google Drive file.

ParamTypeRequiredDefaultNotes
file_idstringyes—

drive_list_files

List Google Drive files.

ParamTypeRequiredDefaultNotes
page_sizeintegerno20
querystring|nullno—
order_bystringnomodifiedTime desc

drive_move_file

Move a file or folder to a different Google Drive folder.

ParamTypeRequiredDefaultNotes
file_idstringyes—
folder_idstringyes—

drive_read_google_doc

Read the text content from a Google Doc.

ParamTypeRequiredDefaultNotes
document_idstringyes—

drive_search_files

Search Google Drive files by filename.

ParamTypeRequiredDefaultNotes
name_containsstringyes—
mime_typestring|nullno—
page_sizeintegerno20

drive_update_google_doc

Write content to an existing Google Doc. mode=‘append’ adds to the end; mode=‘replace’ overwrites all content.

ParamTypeRequiredDefaultNotes
document_idstringyes—
contentstringyes—
modestringnoappend

email_* — email

email_intelligence_coverage

Inspect nonsecret stored coverage without ingestion or task creation.

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

Search cited records without Gmail, model calls, or writes.

ParamTypeRequiredDefaultNotes
querystringyes—
limitintegerno8

esa_* — esa

esa_discovery_dry_run

Run the ESA discovery engine in READ-ONLY dry-run mode on nvrbackup. Executes esa_watchlist.discovery_report (the report/dry-run twin of the discovery cron) against the live pricing DB and returns the parsed JSON summary. It writes NOTHING: no esa_discovery_log rows, no Google Sheet append, no watchlist_items changes — safe to run any time. A CSV of every qualified per-(SKU, state) row is written to csv_path on the target host (pull it with transfer_file if you need the fi…

ParamTypeRequiredDefaultNotes
deploy_pathstringno/home/superht/pricing
csv_pathstringno/tmp/esa_dryrun.csv
timeoutintegerno180
fullbooleannofalse

esa_portal_orders_reconcile

Reconcile stored portal order history against local ESA orders. Compares only each successfully synced state’s latest portal snapshot with esa_orders (email-driven intake), joined on (state, normalized line item ID) so identical IDs in different portals cannot collide. Reports: missing_order (active on the portal, never became a local order), unfulfilled_order (active but not fully fulfilled locally), cancelled_but_fulfilled (portal cancelled/refunded while fulfilled locally — refund exposure…

ParamTypeRequiredDefaultNotes
statestring|nullno—
max_rowsintegerno25

Search the stored ESA portal order history and contact info. query matches customer name, email, line item ID, portal order ID, and offer name. Filter with state (e.g. “TX”), status (exact portal status such as “Pending” or “Shipped”), or sku (substring). active_only restricts results to nonterminal lines present in each state’s latest successful snapshot; otherwise both current and historical lines are returned with is_current. Results are newest-synced first with full shipping contact detai…

ParamTypeRequiredDefaultNotes
querystring|nullno—
statestring|nullno—
statusstring|nullno—
skustring|nullno—
active_onlybooleannofalse
limitintegerno25
offsetintegerno0

esa_portal_orders_status

Show ESA portal orders ingest health per state. For each known state portal: effective credential/base-URL status, total historical lines, lines in the current snapshot, active current lines, and latest successful sync metadata. Empty successful snapshots retain their sync timestamp and report zero current/export rows.

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

esa_portal_orders_sync

Sync ESA portal orders.csv exports into the local history table. With no arguments, downloads the full orders CSV live from every state portal with configured credentials (OD_UN / OD_PW) and upserts the complete order history plus customer contact info. Pass state (e.g. “TX”) to sync one portal. To ingest a manually downloaded orders.csv instead, pass state plus either csv_path (a relative path below ESA_PORTAL_ORDERS_IMPORT_ROOT, which defaults to data/imports/esa-portal-orders) or…

ParamTypeRequiredDefaultNotes
statestring|nullno—
csv_pathstring|nullno—
upload_idstring|nullno—
dry_runbooleannofalse

events_* — events

events_since

Return episodic events logged since a given timestamp. since is an ISO-8601 timestamp (e.g. 2026-06-10T08:00:00Z). Defaults to the last 24 hours when omitted. Use this to answer “what did Leif do autonomously since my last session?” — covers scheduled job runs, notifications sent, retries, webhook firings, and any other event recorded with log_event. Filter by event_type to narrow results (e.g. job_run, notification, error). Set success_only=true to hide failures.

ParamTypeRequiredDefaultNotes
sincestring|nullno—
event_typestring|nullno—
limitintegerno200
success_onlybooleannofalse

execute_* — execute

execute_python

Execute Python code in the configured runtime.

ParamTypeRequiredDefaultNotes
codestringyes—
timeoutinteger|nullno—
clear_namespacebooleannofalse

extract_* — extract

extract_pdf_tables

Extract tables from a PDF file.

ParamTypeRequiredDefaultNotes
file_pathstringyes—
pageinteger|nullno—

fetch_* — fetch

fetch_rss

Fetch and parse an RSS or Atom feed.

ParamTypeRequiredDefaultNotes
feed_urlstringyes—
max_itemsintegerno10

fetch_url

Fetch a URL and return response content or parsed HTML.

ParamTypeRequiredDefaultNotes
urlstringyes—
methodstringnoGET
headersobject|nullno—
paramsobject|nullno—
json_dataobject|nullno—
parse_htmlbooleannofalse
max_bytesinteger|nullno—

finance_* — Finance

Curated guide: Finance.

finance_app_execute_command

Execute a shell command from the remote finance app root directory.

ParamTypeRequiredDefaultNotes
commandstringyes—
timeoutintegerno30

finance_app_file_exists

Check whether a file exists in the remote finance app source tree.

ParamTypeRequiredDefaultNotes
pathstringyes—

finance_app_list_directory

List files in the remote finance app source tree.

ParamTypeRequiredDefaultNotes
pathstringno.

finance_app_read_file

Read a file from the remote finance app source tree.

ParamTypeRequiredDefaultNotes
pathstringyes—

finance_app_write_file

Write a file in the remote finance app source tree.

ParamTypeRequiredDefaultNotes
pathstringyes—
contentstringyes—

finance_get_portfolio

Get the current finance project portfolio summary.

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

finance_get_quote

Get the latest quote for a symbol.

ParamTypeRequiredDefaultNotes
symbolstringyes—

finance_get_risk_limits

Get finance project risk limits.

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

finance_get_risk_status

Get finance project risk status.

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

finance_get_signals

Get recent finance project signals.

ParamTypeRequiredDefaultNotes
asset_typestringnoequity
symbolstring|nullno—
signal_typestring|nullno—
min_qualitynumber|nullno—
limitintegerno50
recentbooleannotrue

finance_health_check

Check the finance project health endpoint.

ParamTypeRequiredDefaultNotes
detailedbooleannofalse

finance_list_positions

List open positions from the finance project.

ParamTypeRequiredDefaultNotes
symbolstring|nullno—

finance_list_watchlists

List finance project watchlists.

ParamTypeRequiredDefaultNotes
asset_typestring|nullno—

finance_search_symbols

Search the finance project for symbols.

ParamTypeRequiredDefaultNotes
querystringyes—
marketstringnoall
limitintegerno10

ga_* — Google Analytics

Curated guide: Google Analytics.

ga_conversion_overview

List top key events/conversions from GA4.

ParamTypeRequiredDefaultNotes
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno10
propertystring|nullno—

ga_devices

List device-category performance from GA4.

ParamTypeRequiredDefaultNotes
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno10
propertystring|nullno—

ga_geo_overview

List top countries/regions from GA4.

ParamTypeRequiredDefaultNotes
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno10
propertystring|nullno—

ga_landing_pages

List top landing pages from GA4.

ParamTypeRequiredDefaultNotes
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno10
propertystring|nullno—

ga_list_properties

List the configured Google Analytics property aliases available to MCP tools.

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

ga_marketing_overview

Return a marketing-oriented GA4 summary for business lead pages.

ParamTypeRequiredDefaultNotes
start_datestringno30daysAgo
end_datestringnotoday
business_page_prefixesarray|nullno—
conversion_event_namesarray|nullno—
limitintegerno25
propertystring|nullno—

ga_realtime_overview

Get a minimal realtime GA4 snapshot.

ParamTypeRequiredDefaultNotes
propertystring|nullno—

ga_run_report

Run a generic GA4 report for arbitrary dimensions and metrics.

ParamTypeRequiredDefaultNotes
dimensionsarray[string]yes—
metricsarray[string]yes—
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno25
propertystring|nullno—

ga_search_terms

List top site search terms from GA4.

ParamTypeRequiredDefaultNotes
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno10
propertystring|nullno—

ga_top_pages

List top pages from GA4.

ParamTypeRequiredDefaultNotes
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno10
propertystring|nullno—

ga_traffic_sources

List top traffic sources from GA4.

ParamTypeRequiredDefaultNotes
start_datestringno7daysAgo
end_datestringnotoday
limitintegerno10
propertystring|nullno—

gads_* — Google Ads

Curated guide: Google Ads.

gads_account_overview

Return an account-level Google Ads performance summary for the date range.

ParamTypeRequiredDefaultNotes
date_rangestringnoLAST_30_DAYS
start_datestring|nullno—
end_datestring|nullno—
customerstring|nullno—

gads_ad_group_performance

List ad-group-level performance metrics.

ParamTypeRequiredDefaultNotes
date_rangestringnoLAST_30_DAYS
start_datestring|nullno—
end_datestring|nullno—
limitintegerno25
customerstring|nullno—

gads_campaign_performance

List campaign-level performance metrics (cost, clicks, conversions).

ParamTypeRequiredDefaultNotes
date_rangestringnoLAST_30_DAYS
start_datestring|nullno—
end_datestring|nullno—
limitintegerno25
customerstring|nullno—

gads_keyword_performance

List keyword-level performance metrics.

ParamTypeRequiredDefaultNotes
date_rangestringnoLAST_30_DAYS
start_datestring|nullno—
end_datestring|nullno—
limitintegerno25
customerstring|nullno—

gads_list_accessible_customers

List every Google Ads account the configured credentials can access.

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

gads_list_customers

List the configured Google Ads customer aliases available to MCP tools.

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

gads_run_query

Run an arbitrary GAQL (Google Ads Query Language) query for a customer.

ParamTypeRequiredDefaultNotes
querystringyes—
customerstring|nullno—

gads_search_terms

List the search terms that triggered ads, with performance metrics.

ParamTypeRequiredDefaultNotes
date_rangestringnoLAST_30_DAYS
start_datestring|nullno—
end_datestring|nullno—
limitintegerno25
customerstring|nullno—

gads_update_ad_group_bid

Set an ad group’s maximum CPC bid (cpc_bid in dollars, e.g. 2.50). Set validate_only=true to dry-run the change without applying it.

ParamTypeRequiredDefaultNotes
ad_group_idstringyes—
cpc_bidnumberyes—
customerstring|nullno—
validate_onlybooleannofalse

gads_update_ad_group_status

Pause, enable, or remove an ad group (status: ENABLED, PAUSED, REMOVED). Set validate_only=true to dry-run the change without applying it.

ParamTypeRequiredDefaultNotes
ad_group_idstringyes—
statusstringyes—
customerstring|nullno—
validate_onlybooleannofalse

gads_update_ad_status

Pause, enable, or remove a single ad (status: ENABLED, PAUSED, REMOVED). Set validate_only=true to dry-run the change without applying it.

ParamTypeRequiredDefaultNotes
ad_group_idstringyes—
ad_idstringyes—
statusstringyes—
customerstring|nullno—
validate_onlybooleannofalse

gads_update_campaign_status

Pause, enable, or remove a campaign (status: ENABLED, PAUSED, REMOVED). Set validate_only=true to dry-run the change without applying it.

ParamTypeRequiredDefaultNotes
campaign_idstringyes—
statusstringyes—
customerstring|nullno—
validate_onlybooleannofalse

gbp_* — Google Business Profile

Curated guide: Google Business Profile.

gbp_get_location

Fetch a single Google Business Profile location.

ParamTypeRequiredDefaultNotes
location_namestringyes—

gbp_list_accounts

List accessible Google Business Profile accounts.

ParamTypeRequiredDefaultNotes
page_sizeintegerno20

gbp_list_locations

List locations for a Google Business Profile account.

ParamTypeRequiredDefaultNotes
account_namestringno“
limitintegerno100
filter_expressionstringno“
order_bystringnotitle

gbp_local_overview

Aggregate local performance across all accessible GBP locations.

ParamTypeRequiredDefaultNotes
start_datestringyes—
end_datestringyes—
account_namestringno“
daily_metricsarray[string]noBUSINESS_IMPRESSIONS_DESKTOP_MAPS,BUSINESS_IMPRESSIONS_DESKTOP_SEARCH,BUSINESS_IMPRESSIONS_MOBILE_MAPS,BUSINESS_IMPRESSIONS_MOBILE_SEARCH,BUSINESS_DIRECTION_REQUESTS,CALL_CLICKS,WEBSITE_CLICKS

gbp_location_performance

Fetch local performance metrics for one Google Business Profile location.

ParamTypeRequiredDefaultNotes
location_namestringyes—
start_datestringno30daysAgo
end_datestringnotoday
daily_metricsarray[string]noBUSINESS_IMPRESSIONS_DESKTOP_MAPS,BUSINESS_IMPRESSIONS_DESKTOP_SEARCH,BUSINESS_IMPRESSIONS_MOBILE_MAPS,BUSINESS_IMPRESSIONS_MOBILE_SEARCH,BUSINESS_DIRECTION_REQUESTS,CALL_CLICKS,WEBSITE_CLICKS

gbp_multi_location_summary

Aggregate GBP performance across multiple locations.

ParamTypeRequiredDefaultNotes
account_namestringno“
location_namesarray|nullno—
start_datestringno30daysAgo
end_datestringnotoday
daily_metricsarray[string]noBUSINESS_IMPRESSIONS_DESKTOP_MAPS,BUSINESS_IMPRESSIONS_DESKTOP_SEARCH,BUSINESS_IMPRESSIONS_MOBILE_MAPS,BUSINESS_IMPRESSIONS_MOBILE_SEARCH,BUSINESS_DIRECTION_REQUESTS,CALL_CLICKS,WEBSITE_CLICKS
page_sizeintegerno100

get_* — get

get_bill_entry_batch

Return durable bill-entry status without external reads or writes.

ParamTypeRequiredDefaultNotes
batch_idstringyes—

get_check_deposit_batch

Return durable check-deposit status without external reads or writes.

ParamTypeRequiredDefaultNotes
batch_idstringyes—

get_daily_review

Return a prioritized daily task review.

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

get_excel_info

Get workbook sheet metadata.

ParamTypeRequiredDefaultNotes
pathstringyes—

get_location

Get the user’s current location information.

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

get_note

Fetch a single note’s full content by its ID.

ParamTypeRequiredDefaultNotes
note_idstringyes—

get_pdf_info

Get metadata and information about a PDF file.

ParamTypeRequiredDefaultNotes
file_pathstringyes—

get_person_summary

Summarize the relationship history with a specific person.

ParamTypeRequiredDefaultNotes
person_namestringyes—
limitintegerno20

get_project

Return a single project by ID.

ParamTypeRequiredDefaultNotes
project_idstringyes—

get_project_context

Read a project’s combined context file contents.

ParamTypeRequiredDefaultNotes
project_idstring|nullno—

get_project_status

Return context quality information for a project.

ParamTypeRequiredDefaultNotes
project_idstring|nullno—

get_python_namespace

Show variables currently defined in the Python execution namespace.

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

get_recent_notes

Return the most recent notes.

ParamTypeRequiredDefaultNotes
limitintegerno10
categorystring|nullno—

get_time

Get the current time in Wayne’s timezone (US/Central) with day-of-week and time-of-day bucket. Returns a JSON object with: - iso: ISO 8601 timestamp in CT - human: human-friendly formatted time - day_of_week: full day name (e.g., ‘Tuesday’) - hour_24: hour of day (0-23) in CT - bucket: time-of-day bucket per leif_self.md — one of: late_night, morning, midday, maintenance_window, evening - is_maintenance_window: True if 14

<= hour < 16
CT - is_weekend: True for Saturday/Sunday

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

get_topic_overview

Summarize discussion history for a topic.

ParamTypeRequiredDefaultNotes
topicstringyes—
limitintegerno20

get_weather

Get a weather forecast for a location.

ParamTypeRequiredDefaultNotes
locationstring|nullno—
daysintegerno3

github_* — GitHub

Curated guide: GitHub.

github_batch_move_files

Move multiple files in GitHub.

ParamTypeRequiredDefaultNotes
operationsarray[object]yes—
commit_messagestringyes—
branchstringnomain
ownerstring|nullno—
repostring|nullno—

github_create_issue

Create a GitHub issue.

ParamTypeRequiredDefaultNotes
titlestringyes—
bodystringyes—
labelsarray|nullno—
assigneesarray|nullno—
ownerstring|nullno—
repostring|nullno—

github_create_or_update_file

Create or update a file in GitHub.

ParamTypeRequiredDefaultNotes
file_pathstringyes—
contentstringyes—
commit_messagestringyes—
branchstringnomain
ownerstring|nullno—
repostring|nullno—

github_get_file

Fetch a file from a GitHub repository.

ParamTypeRequiredDefaultNotes
file_pathstringyes—
refstringnomain
ownerstring|nullno—
repostring|nullno—

github_list_issues

List issues from a GitHub repository.

ParamTypeRequiredDefaultNotes
statestringnoopen
labelsarray|nullno—
limitintegerno20
ownerstring|nullno—
repostring|nullno—

github_search_code

Search code in a GitHub repository.

ParamTypeRequiredDefaultNotes
querystringyes—
max_resultsintegerno10
ownerstring|nullno—
repostring|nullno—

gsc_* — Google Search Console

Curated guide: Google Search Console.

gsc_local_visibility

Return a local-intent visibility view from Search Console.

ParamTypeRequiredDefaultNotes
start_datestringno30daysAgo
end_datestringnotoday
site_urlstringno“
keywordsarray|nullno—
page_filtersarray|nullno—
row_limitintegerno25
countrystringno“
devicestringno“
search_typestringnoweb

gsc_run_query

Run a generic Search Console query.

ParamTypeRequiredDefaultNotes
dimensionsarray[string]yes—
start_datestringno30daysAgo
end_datestringnotoday
site_urlstringno“
row_limitintegerno25
pagestringno“
querystringno“
countrystringno“
devicestringno“
search_typestringnoweb
dimension_filter_groupsarray|nullno—

gsc_top_pages

List top Search Console pages.

ParamTypeRequiredDefaultNotes
start_datestringno30daysAgo
end_datestringnotoday
site_urlstringno“
row_limitintegerno25
query_regexstringno“
countrystringno“
devicestringno“
search_typestringnoweb

gsc_top_queries

List top Search Console queries.

ParamTypeRequiredDefaultNotes
start_datestringno30daysAgo
end_datestringnotoday
site_urlstringno“
row_limitintegerno25
pagestringno“
countrystringno“
devicestringno“
search_typestringnoweb
query_regexstringno“

install_* — install

install_python_package

Install a Python package with pip.

ParamTypeRequiredDefaultNotes
packagestringyes—

job_* — job

job_health

Return a health summary for all known scheduled jobs. Flags jobs whose last heartbeat is older than max_stale_minutes or older than 1.5× their derived cron interval (whichever is looser), as well as any job whose last run returned a non-zero exit code. Covers registry jobs plus external producers explicitly declared in the tracked monitoring policy. Registered jobs awaiting their first run are separated from overdue heartbeat_missing jobs; heartbeat-only IDs remain unregistered an…

ParamTypeRequiredDefaultNotes
max_stale_minutesintegerno120

Link a task to a RepairShopr ticket.

ParamTypeRequiredDefaultNotes
taskstringyes—
ticketstringyes—

Create a dependency or hierarchy relationship between tasks.

ParamTypeRequiredDefaultNotes
source_taskstringyes—
target_taskstringyes—
relationshipanyyes—

list_* — list

list_active_tasks

List active checkpoints for a user.

ParamTypeRequiredDefaultNotes
user_idstringyes—

list_directory

List the contents of a local directory.

ParamTypeRequiredDefaultNotes
pathstringno.

list_email_filters

List email filters.

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

list_projects

List known projects.

ParamTypeRequiredDefaultNotes
include_archivedbooleannofalse
statusstring|nullno—

list_python_packages

List installed Python packages.

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

list_recent_uploads

List the current user’s recently uploaded files. Returns upload_id, filename, content_type, size, and age for each, newest first. Use an upload_id with a consuming tool (e.g. wp_create_post_draft).

ParamTypeRequiredDefaultNotes
limitintegerno10

list_scheduled_jobs

List all registered scheduled jobs.

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

list_tasks

List tasks for dashboard-style views.

ParamTypeRequiredDefaultNotes
filterstringnoall
categorynullno—
limitintegerno10
offsetintegerno0
include_completedbooleannofalse
include_archivedbooleannofalse
project_idstring|nullno—

load_* — load

load_progress

Load a specific checkpoint by task ID.

ParamTypeRequiredDefaultNotes
user_idstringyes—
task_idstringyes—

local_* — Local shell and files

Curated guide: Local shell and files.

local_execute_command

Execute a shell command on the local host.

ParamTypeRequiredDefaultNotes
commandstringyes—
timeoutintegerno10

local_get_system_info

Return basic local system information.

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

local_restart_deploy

Queue an explicitly operator-approved exact-commit Leif deployment. Requires a separately installed broker and root-owned approval matching this ID. Preparation is not deployment authorization. Restarts both Leif services independently; poll local_restart_deploy_status with the same ID after reconnecting. Never retry with a new ID when the outcome is unknown.

ParamTypeRequiredDefaultNotes
approval_idstringyes—

local_restart_deploy_status

Read a durable deployment report by approval ID without restarting.

ParamTypeRequiredDefaultNotes
approval_idstringyes—

local_restart_service

Restart a local systemd service.

ParamTypeRequiredDefaultNotes
service_namestringyes—

log_* — log

log_event

Append a typed event to the episodic event log. Call this at the conclusion of any autonomous action so that events_since can reconstruct what Leif did between sessions. Common event_type values: job_run, notification, webhook, retry, tool_call, error, info.

ParamTypeRequiredDefaultNotes
event_typestringyes—
summarystringyes—
detailsobject|nullno—
sourcestring|nullno—
successbooleannotrue

magica_* — magica

magica_clone_voice

Clone a reusable voice from a speech sample (MiniMax). Pass either a public audio_url or a local_path on this host, which is uploaded first. The sample must be 10 seconds to 5 minutes of clear single-speaker speech (MP3, M4A, or WAV, max 20 MB); a dry unprocessed recording clones better than a limited one. Returns the voice_id to hand to magica_speak. Register a separate voice per delivery register rather than expecting one clone to cover both warm and neutral reads.

ParamTypeRequiredDefaultNotes
voice_namestringyes—
audio_urlstring|nullno—
local_pathstring|nullno—
waitbooleannotrue
max_waitnumberno300

magica_generate

Start a Magica image run and return its run_id. Use image_urls (publicly fetchable, e.g. from magica_upload) for edits, or set text_to_image=True for a fresh image. model accepts an alias (pro, fast, gpt, flux) or a raw node type. Poll the returned run_id with magica_get_run.

ParamTypeRequiredDefaultNotes
promptstringyes—
modelstringnopro
image_urlsarray|nullno—
sub_model_idstring|nullno—
text_to_imagebooleannofalse

magica_get_run

Poll a Magica generation run for status and output image URLs.

ParamTypeRequiredDefaultNotes
run_idstringyes—

magica_list_models

List the image models available on the Magica (galaxy.ai) account.

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

magica_run_node

Run ANY Magica node with an explicit input dict. The escape hatch for node types without a dedicated tool: ai_transcription, elevenlabs_v3_tts, elevenlabs_sfx, elevenlabs_music, elevenlabs_dubbing, fal_demucs, the video nodes, and so on. Get exact field names from the node’s schema first; magica_list_models lists every available nodeType. With wait=False poll the run_id via magica_get_run.

ParamTypeRequiredDefaultNotes
nodestringyes—
run_inputobjectyes—
sub_model_idstring|nullno—
waitbooleannofalse
max_waitnumberno300

magica_speak

Synthesize speech with a MiniMax voice and return the audio URL. voice_id comes from magica_clone_voice. Levers, in order of how much likeness they cost: punctuation and sentence length in the text itself (free), speed (0.5-2.0), intensity (-100 to 100, energy), then emotion (auto, happy, sad, angry, fearful, disgusted, surprised, neutral) which pushes affect hardest but also fights the clone. Set english_normalization=True when the text is number-heavy. Do NOT reach f…

ParamTypeRequiredDefaultNotes
textstringyes—
voice_idstringyes—
emotionstring|nullno—
speednumber|nullno—
volumenumber|nullno—
voice_pitchnumber|nullno—
intensitynumber|nullno—
pronunciationarray|nullno—
english_normalizationboolean|nullno—
audio_formatstring|nullno—
sample_rateinteger|nullno—
bitrateinteger|nullno—
waitbooleannotrue
max_waitnumberno300

magica_upload

Upload a local file and return a public URL Magica can fetch. Works for any file type, not just images: pass an image path for magica_generate(image_urls=...) edits, or an audio path (MP3, M4A, WAV) for magica_clone_voice and the transcription nodes.

ParamTypeRequiredDefaultNotes
pathstringyes—

marketing_* — Marketing

Curated guide: Marketing.

marketing_lead_snapshot

Return a GA4 lead-focused marketing snapshot.

ParamTypeRequiredDefaultNotes
start_datestringyes—
end_datestringyes—
limitintegerno10

marketing_local_snapshot

Return a Google Business Profile local snapshot.

ParamTypeRequiredDefaultNotes
start_datestringyes—
end_datestringyes—
account_namestringno“

marketing_seo_snapshot

Return a Search Console SEO snapshot.

ParamTypeRequiredDefaultNotes
start_datestringyes—
end_datestringyes—
site_urlstringno“
limitintegerno10

marketing_snapshot

Return a combined marketing snapshot across GA4, Search Console, and GBP.

ParamTypeRequiredDefaultNotes
start_datestringyes—
end_datestringyes—
site_urlstringno“
account_namestringno“
limitintegerno10

prepare_* — prepare

prepare_bill_entry_batch

Read QBO and persist a proposed bill batch; make no financial writes.

ParamTypeRequiredDefaultNotes
ap_accountobjectyes—
source_documentsarray[object]yes—
billsarray[object]yes—
decisionsarray|nullno—

prepare_check_deposit_batch

Read live systems and persist a proposed batch; make no financial writes.

ParamTypeRequiredDefaultNotes
deposit_datestringyes—
deposit_accountobjectyes—
source_documentsarray[object]yes—
checksarray|nullno—
existing_deposit_idstring|nullno—

pricing_* — Pricing App

Curated guide: Pricing App.

pricing_app_create_esa_catalog_item

Create/update an ESA catalog item in Pricing App and RepairShopr. OD_SKU is generated when omitted. The RepairShopr UPC Code mapping is written to repairshopr_upc_field (default: upc_code), with short_description and long_description carried alongside it for the ESA portal copy sync. inventory_policy (‘allow_oversell’ or ‘hard_limit’) is REQUIRED by the Pricing App whenever this call newly assigns an od_sku. It has no default: an ESA item with no fulfillment settings row reads bac…

ParamTypeRequiredDefaultNotes
namestringyes—
short_descriptionstringyes—
long_descriptionstringyes—
source_skustring|nullno—
od_skustring|nullno—
brandstring|nullno—
categorystring|nullno—
conditionstring|nullno—
price_costnumber|nullno—
price_retailnumber|nullno—
quantityinteger|nullno—
image_urlsarray|string|nullno—
repairshopr_product_idinteger|nullno—
repairshopr_category_idinteger|nullno—
repairshopr_upc_fieldstring|nullno—
inventory_policystring|nullno—
fulfillment_methodstring|nullno—
safety_stockinteger|nullno—
pricing_app_extra_fieldsobject|nullno—
repairshopr_extra_fieldsobject|nullno—
queue_esa_deploymentbooleannotrue
esa_portalsarray|nullno—
dry_runbooleannofalse
requested_bystring|nullno—

pricing_app_create_file_import

Create a file-based Pricing App import from a vendor spreadsheet. file_path is a path on the Leif host (e.g. /home/superht/import/foo.xlsx). Do NOT transfer the file to the Pricing App host first: this tool reads the file locally, normalizes xlsx/xls to CSV when needed, and uploads it to the Pricing App API over HTTPS. openpyxl is optional — if it is missing the raw workbook is uploaded and parsed server-side. You do not need to inspect the workbook locally (no unzipping XML); use “g…

ParamTypeRequiredDefaultNotes
vendor_namestringyes—
file_pathstringyes—
use_generic_parserbooleannofalse

pricing_app_create_live_import

Create a live Pricing App import from a distributor API. For looking up a specific product (e.g. cross-vendor cost comparison), pass vendor_item_id (manufacturer part number / MPN) or upc for an exact match. Prefer these over term: fuzzy term matching pulls wrong records (e.g. “Lenovo 500e Chromebook” -> warranty SKUs, “MacBook Air M5” -> a 2015 A1466). MPN/UPC is also the only reliable cross-vendor join key, since vendor SKUs differ and some vendors 404 on other vendors’ SKUs.

ParamTypeRequiredDefaultNotes
vendor_namestringyes—
manufacturerstring|nullno—
termstring|nullno—
categorystring|nullno—
product_typestring|nullno—
vendor_item_idstring|nullno—
upcstring|nullno—
limitintegerno100
pageintegerno1
max_pagesinteger|nullno—
min_qtyintegerno1
allow_missing_qtybooleannofalse

pricing_app_generate_od_sku

Generate the OD_SKU used by Odyssey/ESA portal catalog logic.

ParamTypeRequiredDefaultNotes
source_skustring|nullno—
namestring|nullno—
brandstring|nullno—
prefixstring|nullno—
max_lengthintegerno32

pricing_app_get_cheaper_than_amazon

Find products cheaper than Amazon.

ParamTypeRequiredDefaultNotes
min_savings_pctnumber|nullno—
min_savingsnumber|nullno—
brandstring|nullno—
categorystring|nullno—
vendorstring|nullno—
exclude_vendorsarray|nullno—
import_idstring|nullno—
has_rankboolean|nullno—
max_rankinteger|nullno—
daysintegerno30
limitintegerno100
sortstringnosavings_pct
pageintegerno1
min_amazon_pricenumber|nullno—

pricing_app_get_esa_margins

List every active ESA/Odyssey portal listing with its live margin. This is the tool for margin checks and margin watchdogs: it returns the deployed portal price, known vendor cost, estimated shipping, landed cost and margin % for every active ESA/Odyssey listing, per state, straight from the Pricing App’s live catalog and pricing state — not a snapshot you have to reconstruct from separate product and portal-sync calls. cost_source “none” means no vendor cost is known for that listing, so…

ParamTypeRequiredDefaultNotes
statestring|nullno—
max_margin_pctnumber|nullno—
include_missing_costboolean|nullno—
limitintegerno150
compactbooleannotrue

pricing_app_get_esa_portal_categories

List valid Odyssey/ESA portal categories from Pricing App validation.

ParamTypeRequiredDefaultNotes
statestring|nullno—
categorystring|nullno—

pricing_app_get_import_status

Get the current status of a Pricing App import.

ParamTypeRequiredDefaultNotes
import_idstringyes—

pricing_app_get_product_details

Get Pricing App product details by SKU.

ParamTypeRequiredDefaultNotes
skustringyes—
include_relatedbooleannotrue

pricing_app_health_check

Check the Pricing App API health.

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

pricing_app_list_imports

List recent Pricing App imports.

ParamTypeRequiredDefaultNotes
vendorstring|nullno—
statusstring|nullno—
limitintegerno50
daysintegerno7

pricing_app_list_products

Search and filter Pricing App products.

ParamTypeRequiredDefaultNotes
qstring|nullno—
categorystring|nullno—
brandstring|nullno—
activeboolean|nullno—
conditionstring|nullno—
min_deal_scorenumber|nullno—
min_buy_confidencenumber|nullno—
max_riskstring|nullno—
sales_trendstring|nullno—
has_asinboolean|nullno—
has_forecastboolean|nullno—
newegg_statusstring|nullno—
sortstring|nullno—
orderstring|nullno—
pageintegerno1
limitintegerno25
include_relatedbooleannofalse

pricing_app_match_candidates

List Pricing App inventory-match candidates (review queue). Thin pass-through to the Pricing App matcher. Each candidate pairs a RepairShopr item with scored product suggestions. Page forward by passing the prior response’s next_cursor as cursor. band defaults to the medium review band; pass low/none/all to widen.

ParamTypeRequiredDefaultNotes
statusstringnopending
limitintegerno50
cursorinteger|nullno—
bandstring|nullno—

pricing_app_match_resolve

Resolve a Pricing App inventory-match candidate. action is one of confirm, reject, or import_new. product_id is required for confirm unless the candidate has a top suggestion to default to. Pass decided_by (e.g. the portal username) for the audit trail.

ParamTypeRequiredDefaultNotes
candidate_idintegeryes—
actionstringyes—
product_idinteger|nullno—
decided_bystring|nullno—

pricing_app_match_stats

Get Pricing App inventory-match stats (matched/pending/rs_only/total_rs). Counts read 0 until the matcher has run in the Pricing App.

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

pricing_app_monitor_import

Monitor a Pricing App import until completion or timeout.

ParamTypeRequiredDefaultNotes
import_idstringyes—
poll_intervalintegerno5
max_waitintegerno600

pricing_app_parse_price_list

Parse pasted vendor pricing text into a CSV file.

ParamTypeRequiredDefaultNotes
vendor_namestringyes—
raw_textstring|nullno—
output_pathstring|nullno—
gmail_message_idstring|nullno—

pricing_app_queue_esa_deployment

Queue one or more OD_SKUs for ESA portal deployment.

ParamTypeRequiredDefaultNotes
skustring|nullno—
skusarray|nullno—
portalsarray|nullno—
dry_runbooleannofalse
requested_bystring|nullno—
metadataobject|nullno—

pricing_app_refresh_keepa

Trigger a Keepa refresh for one or more Pricing App products.

ParamTypeRequiredDefaultNotes
skustring|nullno—
skusarray|nullno—
max_concurrencyintegerno5

pricing_app_secondary_market_compare

Compare cheapest secondary-market open-box/refurb offers for an Apple model. Read-only; does not import or write to the DB. Returns the cheapest cross-vendor offers for a single Apple model number (e.g. MTL73LL/A) across iPower, QuickShip, and the tracked eBay seller stores, reading the same DB the Apple Open-Box board uses. The server applies iPower’s effective-price discount and filters out parts/accessory listings that share a device’s model number. Pass condition to filter by conditio…

ParamTypeRequiredDefaultNotes
modelstringyes—
conditionstring|nullno—
in_stockboolean|nullno—
limit_per_vendorinteger|nullno—

pricing_app_sync_esa_copy_from_repairshopr

Sync ESA product name and offering details from a RepairShopr item.

ParamTypeRequiredDefaultNotes
od_skustringyes—
repairshopr_product_idinteger|nullno—
copy_overridesobject|nullno—
dry_runbooleannofalse
updated_bystring|nullno—

pricing_app_upsert_catalog_product

Create or update a Pricing App catalog product by OD_SKU.

ParamTypeRequiredDefaultNotes
skustringyes—
namestringyes—
short_descriptionstringyes—
long_descriptionstringyes—
source_skustring|nullno—
brandstring|nullno—
categorystring|nullno—
conditionstring|nullno—
price_costnumber|nullno—
price_retailnumber|nullno—
quantityinteger|nullno—
image_urlsarray|string|nullno—
repairshopr_product_idinteger|nullno—
inventory_policystring|nullno—
fulfillment_methodstring|nullno—
safety_stockinteger|nullno—
extra_fieldsobject|nullno—

pricing_app_vendor_lookup

Look up live distributor price & availability for a part number at TD Synnex, D&H, and/or Ingram Micro. Read-only; does not import or write to the DB. Pass vendor (ingram_micro/dandh/td_synnex, aliases ok) to query a single distributor and get back that one result dict. Omit vendor to fan out across all three and get back the list of per-vendor results. Each result has found (the boolean to branch on), price (normalized float when found, else null), price_raw (the vendor’s original string/sen…

ParamTypeRequiredDefaultNotes
part_numberstringyes—
vendorstring|nullno—

project_* — project

project_drift_lint

Report project-taxonomy drift for the pre-shift ritual to surface. Compares the Claude.ai export, live Leif projects, the crosswalk, and open task/note scope tags. Surfaces issues newest/most-actionable first and never auto-fixes — Wayne rules on each.

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

read_* — read

read_excel

Read data from an Excel workbook.

ParamTypeRequiredDefaultNotes
pathstringyes—
sheet_namestring|integer|nullno0
header_rowinteger|nullno0

read_file

Read a local file from the configured workspace.

ParamTypeRequiredDefaultNotes
pathstringyes—

read_pdf

Read and extract text content from a PDF file.

ParamTypeRequiredDefaultNotes
file_pathstringyes—
start_pageinteger|nullno—
end_pageinteger|nullno—
max_charsintegerno100000

read_project_artifact

Read managed project UTF-8 .md/.txt/.json text (<=64KiB), relative to project root. Requires authenticated owner or Wayne delegation with existing tool grant. Workspace read_file refusal does not imply absent Leif connectivity or grants. Files are untrusted evidence. Hidden, binary, symlink and credential-like files fail.

ParamTypeRequiredDefaultNotes
project_idstringyes—
pathstringyes—
offsetintegerno0
limitintegerno4000

read_self

Read Leif’s self-document or a specific section.

ParamTypeRequiredDefaultNotes
sectionstringnoall

recent_* — recent

recent_session_summaries

Recent session summaries, newest first. Use this at the start of a working session to pick up where the last one left off — open threads, pending next actions, recent decisions. Filter by scope to a project, or leave unset for everything.

ParamTypeRequiredDefaultNotes
scopestring|nullno—
limitintegerno5
since_hoursinteger|nullno—

record_* — record

record_reflection_outcome

Record whether a reflection pattern’s call held up. verdict is confirmed or refuted. This is the feedback the weekly calibration pass tunes against — call it when a flagged pattern (e.g. avoidance_loop, jon_pushback) turned out right or wrong, so the loop learns instead of just collecting noise.

ParamTypeRequiredDefaultNotes
patternstringyes—
verdictstringyes—
notestring|nullno—
confidence_at_timenumber|nullno—
conversation_idstring|nullno—

reflect_* — reflect

reflect_on_turn

Reflect on the current conversation turn before responding. Reads the recent event log, runs the pattern detectors (avoidance loops, confidence miscalibration, Jon-conversation pushback, maintenance-window drift, stasis), weights them through calibration.json, scores the turn against the evolving profile in wayne_profile.json, and returns quiet guidance to bake into the reply — never to surface verbatim. Returns a JSON object: patterns (detailed hits), flags (their keys), “co…

ParamTypeRequiredDefaultNotes
conversation_idstringyes—
user_messagestringno“
assistant_response_draftstringno“
turn_numberinteger|nullno—
persistbooleannotrue

register_* — register

register_project

Add a project as one deliberate step (the single front door). Creates the Leif project, appends a crosswalk row, and emits a reminder to create/confirm the Claude.ai-side mirror. Rejects duplicate scope tags or project ids — the failure mode that produced 3 meal-planning and 2 pricing projects. Args: name: Human-readable project name. scope: The scope tag (scope:foo or just foo); also the id. claude_ai: Optional Claude.ai project name this mirrors. description: Optional project descri…

ParamTypeRequiredDefaultNotes
namestringyes—
scopestringyes—
claude_aistring|nullno—
descriptionstringno“

remote_* — Remote shell and files

Curated guide: Remote shell and files.

remote_execute_command

Execute a shell command on the target SSH host.

ParamTypeRequiredDefaultNotes
commandstringyes—
timeoutintegerno30

remote_file_exists

Check whether a path exists on the target SSH host.

ParamTypeRequiredDefaultNotes
pathstringyes—

remote_get_system_info

Get system information from the target SSH host.

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

remote_list_directory

List a directory on the target SSH host.

ParamTypeRequiredDefaultNotes
pathstringyes—

remote_read_file

Read a file from the target SSH host. For inspecting text/config files only. To COPY a file to another host, do NOT read it here and write it elsewhere — that round-trips the bytes through the model context (slow, token-heavy, truncates large/binary files). Use transfer_file instead; it scp’s host-to-host directly.

ParamTypeRequiredDefaultNotes
pathstringyes—

remote_write_file

Write generated/new content to a file on the target SSH host. Uses base64 piping + sha256 verification — no shell arg-length limits and no quote corruption on binary-safe or large content. Use this for content you are CREATING. To copy an EXISTING file from another host, do not read it into context and write it here — use transfer_file (direct scp, no size limit, sha256-verified).

ParamTypeRequiredDefaultNotes
pathstringyes—
contentstringyes—

remove_* — remove

remove_email_filter

Remove an email filter.

ParamTypeRequiredDefaultNotes
filter_idstringyes—

remove_scheduled_job

Remove a scheduled job by its ID.

ParamTypeRequiredDefaultNotes
job_idstringyes—

request_* — request

request_bill_entry_commit_approval

Create a separate exact-argument review; make no financial writes.

ParamTypeRequiredDefaultNotes
operation_idstringyes—
batch_idstringyes—
expected_revisionintegeryes—
decisionsarray|nullno—

request_check_deposit_commit_approval

Create a separate exact-argument review; make no financial writes.

ParamTypeRequiredDefaultNotes
operation_idstringyes—
batch_idstringyes—
expected_revisionintegeryes—
decisionsarray|nullno—

run_* — run

run_calibration_pass

Audit the last week of reflection outcomes and tune pattern confidence. With apply=false (default) this is a dry run: it returns the proposed confidence changes and review suggestions without writing. apply=true writes calibration.json and logs to calibration_history.json (guarded to once per week unless force=true). The scheduler runs this automatically; use the tool to preview or force a pass on demand.

ParamTypeRequiredDefaultNotes
applybooleannofalse
window_daysintegerno7
forcebooleannofalse

runpod_* — RunPod

Curated guide: RunPod.

runpod_execute_command

Execute a shell command on the RunPod GPU instance.

ParamTypeRequiredDefaultNotes
commandstringyes—
timeoutintegerno60

runpod_get_system_info

Get system information from the RunPod GPU instance (GPU, CPU, memory, disk).

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

runpod_list_directory

List a directory on the RunPod GPU instance.

ParamTypeRequiredDefaultNotes
pathstringyes—

runpod_read_file

Read a file from the RunPod GPU instance.

ParamTypeRequiredDefaultNotes
pathstringyes—

runpod_write_file

Write generated/new content to a file on the RunPod GPU instance. To copy an existing file to/from RunPod, use transfer_file (scp, sha256-verified) rather than reading it into context and writing it out.

ParamTypeRequiredDefaultNotes
pathstringyes—
contentstringyes—

save_* — save

save_note

Persist a note or context snippet.

ParamTypeRequiredDefaultNotes
contentstringyes—
categorystringnoreference
tagsarray|nullno—
sourcestringnoai_generated
user_idstringnoAI
channel_idstringnocontext
project_idstring|nullno—
metadataobject|nullno—

save_progress

Save a progress checkpoint for later resumption.

ParamTypeRequiredDefaultNotes
user_idstringyes—
original_requeststringyes—
task_idstring|nullno—
progress_percentintegerno0
current_stepintegerno0
total_stepsintegerno0
task_planstring|nullno—
completed_stepsarray|nullno—
pending_stepsarray|nullno—
next_actionstring|nullno—
context_summarystring|nullno—
files_modifiedarray|nullno—
files_pendingarray|nullno—
tools_executedintegerno0
estimated_total_toolsintegerno0
is_completebooleannofalse
completion_messagestring|nullno—
model_usedstring|nullno—
max_tokens_usedinteger|nullno—
task_complexitystring|nullno—
tool_results_summarystring|nullno—
key_findingsarray|nullno—
raw_messagesarray|nullno—
channelstringnomcp
session_countintegerno1

schedule_* — Scheduling

Curated guide: Scheduling.

schedule_job

Create or update a scheduled job in the Leif registry. Owner/admin (or explicitly scoped) callers only. env_allowlist is required: declare the job’s environment explicitly ([] = no env). principal_id is attribution metadata exported as LEIF_JOB_PRINCIPAL, not runtime identity enforcement or a bound security context.

ParamTypeRequiredDefaultNotes
namestringyes—
commandstringyes—
schedulestringyes—
enabledbooleannotrue
principal_idstring|nullno—
env_allowlistarray|nullno—

scratchpad_* — scratchpad

scratchpad_append

Append an idea to the scratch pad so it is not forgotten. This is the capture path. When an idea comes up in conversation that is not yet a committed task, drop it here. It shows up in the widget immediately and can be promoted to a task later.

ParamTypeRequiredDefaultNotes
textstringyes—

scratchpad_get

Read the freeform scratch pad — the single place loose ideas live.

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

scratchpad_set

Replace the entire scratch pad. Use to clean up or reorganize it.

ParamTypeRequiredDefaultNotes
contentstringyes—

search_console_list_sitemaps

List sitemaps submitted to Search Console for a property.

ParamTypeRequiredDefaultNotes
site_urlstringno“

search_console_list_sites

List Search Console properties visible to the configured credentials.

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

search_console_page_queries

List queries for a specific page in Search Console.

ParamTypeRequiredDefaultNotes
pagestringyes—
start_datestringyes—
end_datestringyes—
site_urlstringno“
limitintegerno25
countrystringno“
devicestringno“
search_typestringnoweb

search_console_top_pages

List top organic pages for a Search Console property.

ParamTypeRequiredDefaultNotes
start_datestringyes—
end_datestringyes—
site_urlstringno“
limitintegerno25
querystringno“
countrystringno“
devicestringno“
search_typestringnoweb

search_console_top_queries

List top organic queries for a Search Console property.

ParamTypeRequiredDefaultNotes
start_datestringyes—
end_datestringyes—
site_urlstringno“
limitintegerno25
pagestringno“
countrystringno“
devicestringno“
search_typestringnoweb

search_excel

Search for text across workbook cells.

ParamTypeRequiredDefaultNotes
pathstringyes—
search_termstringyes—
sheet_namestring|integer|nullno—
case_sensitivebooleannofalse

search_news

Search recent news articles.

ParamTypeRequiredDefaultNotes
querystringyes—
max_resultsintegerno10

search_notes

Search stored notes and saved context.

ParamTypeRequiredDefaultNotes
querystringyes—
limitintegerno5
categorystring|nullno—
sourcestring|nullno—
user_idstring|nullno—
channel_idstring|nullno—
tagsarray|nullno—
offsetintegerno0

search_past_conversations

Search imported conversations for historical context.

ParamTypeRequiredDefaultNotes
querystringyes—
personstring|nullno—
sentimentstring|nullno—
date_rangestring|nullno—
limitintegerno5

search_pdf

Search for text within a PDF file.

ParamTypeRequiredDefaultNotes
file_pathstringyes—
search_termstringyes—
case_sensitivebooleannofalse
max_resultsintegerno50

search_tasks

Search tasks with structured filters.

ParamTypeRequiredDefaultNotes
querystring|nullno—
categorynullno—
categoriesarray|nullno—
prioritynullno—
statusnullno—
statusesarray|nullno—
tagsarray|nullno—
project_idstring|nullno—
include_archivedbooleannofalse
include_completedbooleannofalse
limitintegerno50
offsetintegerno0

semantic_* — semantic

Semantic search across notes, project_notes, conversations, memories. Args: query: Search query. scopes: Subset of {“conversations”,“memories”,“notes”,“project_notes”}. Defaults to all four. k: Max results to return overall. project_id: When set, filters project_notes by project.

ParamTypeRequiredDefaultNotes
querystringyes—
scopesarray|nullno—
kintegerno10
project_idstring|nullno—

send_* — send

send_slack_notification

Send a Slack notification — DM to Wayne by default, or to a channel. Pass channel as a channel name (e.g. #ops-alerts) or channel ID to post there instead of a direct message. Useful for ops alerts that Zach and Rick should also see.

ParamTypeRequiredDefaultNotes
messagestringyes—
prioritystringnonormal
titlestring|nullno—
channelstring|nullno—

service_* — service

service_health

Report per-service configuration/health and per-tool call metrics.

ParamTypeRequiredDefaultNotes
include_metricsbooleannotrue

session_* — session

session_bootstrap

Read-only probe of connectivity, authenticated identity and effective read/write access.

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

set_* — set

set_active_project

Set the active project explicitly.

ParamTypeRequiredDefaultNotes
project_idstringyes—

shipstation_* — ShipStation

Curated guide: ShipStation.

shipstation_create_order

Create a ShipStation order.

ParamTypeRequiredDefaultNotes
order_numberstringyes—
ship_toobjectyes—
itemsarray[object]yes—
order_datestring|nullno—
bill_toobject|nullno—
customer_emailstring|nullno—
order_statusstringnoawaiting_shipment
carrier_codestring|nullno—
service_codestring|nullno—
store_idinteger|nullno—

shipstation_create_shipments

Create one or more ShipStation shipments.

ParamTypeRequiredDefaultNotes
shipmentsarray[object]yes—

shipstation_get_order

Get a ShipStation order by ShipStation order ID.

ParamTypeRequiredDefaultNotes
order_idstringyes—

shipstation_get_shipment

Get a ShipStation shipment by ShipStation shipment ID. Not available: this client speaks V1, which has no GET /shipments/{id}.

ParamTypeRequiredDefaultNotes
shipment_idstringyes—

shipstation_get_shipment_by_external_id

Get a ShipStation shipment by external shipment ID. Not available: external_shipment_id is a V2-only concept.

ParamTypeRequiredDefaultNotes
external_shipment_idstringyes—

shipstation_search_orders

Search ShipStation orders with optional filters.

ParamTypeRequiredDefaultNotes
order_numberstring|nullno—
order_statusstring|nullno—
customer_namestring|nullno—
item_keywordstring|nullno—
create_date_startstring|nullno—
create_date_endstring|nullno—
sort_bystring|nullno—
sort_dirstring|nullno—
store_idinteger|nullno—
pageintegerno1
page_sizeintegerno25

shipstation_search_shipments

Search ShipStation shipments (V1 API). Date filters accept YYYY-MM-DD or ISO timestamps. ship_date_start / ship_date_end filter on when the label shipped; created_at_* filter on when the shipment record was created. Set include_shipment_items=True to get line items back. Each shipment carries its billed weight, which is what carrier induction actually recorded. Filters with no V1 equivalent (shipment_status, batch_id, pickup_id, modified_at_*, “item_keywor…

ParamTypeRequiredDefaultNotes
tracking_numberstring|nullno—
order_numberstring|nullno—
sales_order_idstring|nullno—
store_idstring|nullno—
ship_to_namestring|nullno—
created_at_startstring|nullno—
created_at_endstring|nullno—
ship_date_startstring|nullno—
ship_date_endstring|nullno—
include_shipment_itemsbooleannofalse
sort_bystring|nullno—
sort_dirstring|nullno—
pageintegerno1
page_sizeintegerno100
shipment_statusstring|nullno—
batch_idstring|nullno—
pickup_idstring|nullno—
modified_at_startstring|nullno—
modified_at_endstring|nullno—
item_keywordstring|nullno—
payment_date_startstring|nullno—
payment_date_endstring|nullno—
shipment_numberstring|nullno—
external_shipment_idstring|nullno—

sht_* — sht

sht_brand_card

Generate a SuperHiTech-branded marketing card from a headline. Composes a branded prompt and runs text-to-image. With wait=True it polls to completion and returns the output image URL; otherwise it returns the run_id to poll with magica_get_run.

ParamTypeRequiredDefaultNotes
headlinestringyes—
subtitlestring|nullno—
stylestring|nullno—
modelstringnopro
waitbooleannotrue

shtops_* — SHTops

Curated guide: SHTops.

shtops_bootstrap

Compatibility alias for bootstrap_context(scope=‘shtops’).

ParamTypeRequiredDefaultNotes
include_contentbooleannotrue

shtops_check_service

Check the status of a systemd service on the SHTops host.

ParamTypeRequiredDefaultNotes
service_namestringyes—

shtops_execute_command

Execute a shell command on the SHTops host.

ParamTypeRequiredDefaultNotes
commandstringyes—
timeoutintegerno30

shtops_get_status

Get SHTops status information.

ParamTypeRequiredDefaultNotes
modestringnocompact

shtops_get_system_info

Get system information from the SHTops host.

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

shtops_list_processes

List high-memory processes on the SHTops host.

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

shtops_list_tasks

List supported automation tasks on the SHTops host.

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

shtops_restart_service

Restart a systemd service on the SHTops host.

ParamTypeRequiredDefaultNotes
service_namestringyes—

skill_* — skill

skill_get

Fetch a skill’s SKILL.md (or a referenced resource) and follow it. name and expected_digest come from the same skill_search result: use that item’s manifest_digest exactly as returned (sha256:...). Never reuse a digest from an earlier turn. If the reply is error_code: digest_mismatch, the skill was updated; its current digest is returned in identifier - call skill_get again with that value. resource_path defaults to SKILL.md; only pass another path if t…

ParamTypeRequiredDefaultNotes
namestringyes—
expected_digeststringyes—
resource_pathstringnoSKILL.md

Find the operational runbook (skill) for a SuperHiTech task. Call this ONCE before acting on a recurring operational task: ESA or Odyssey portal listings and orders, Bambu dropship, vendor price imports, Stripe reconciliation, check deposits, bill entry, RS inventory or reservations, TN portal, scheduled jobs, Leif tooling. query is 2-4 topic keywords (e.g. “oversold on order”, “bambu cart stuck”); do not paste skill names or whole sentences. Each result has name, description and…

ParamTypeRequiredDefaultNotes
querystringyes—
limitintegerno10

social_* — Social

Curated guide: Social.

social_approve_draft

Approve or unapprove a normalized social post draft.

ParamTypeRequiredDefaultNotes
draft_idstringyes—
providerstringnometa
approvedbooleannotrue

social_create_post_draft

Create a social post draft for review and approval. Returns a preview of the composed post and a review_url where you can approve, reject, or request revisions before the post is published.

ParamTypeRequiredDefaultNotes
profile_idstringyes—
textstringno“
providerstringnometa
titlestringno“
bodystringno“
link_urlstringno“
call_to_actionstringno“
hashtagsarray|nullno—
media_urlsarray|nullno—
scheduled_forstringno“
approval_requiredbooleannotrue

social_get_draft

Fetch a normalized social post draft.

ParamTypeRequiredDefaultNotes
draft_idstringyes—
providerstringnometa

social_get_post_metrics

Return normalized metrics for a social post.

ParamTypeRequiredDefaultNotes
post_idstringyes—
providerstringnometa

social_list_accounts

List connected social accounts for a provider.

ParamTypeRequiredDefaultNotes
providerstringnometa

social_list_comments

List normalized comments for a social post.

ParamTypeRequiredDefaultNotes
post_idstringyes—
providerstringnometa
limitintegerno25

social_list_posts

List recent social posts for a provider/profile.

ParamTypeRequiredDefaultNotes
providerstringnometa
profile_idstringno“
limitintegerno10
statusstringno“

social_list_profiles

List publishable social profiles for a provider account.

ParamTypeRequiredDefaultNotes
providerstringnometa
account_idstringno“

social_publish_post

Publish a social post immediately.

ParamTypeRequiredDefaultNotes
providerstringnometa
draft_idstringno“
profile_idstringno“
textstringno“
titlestringno“
bodystringno“
link_urlstringno“
call_to_actionstringno“
hashtagsarray|nullno—
media_urlsarray|nullno—
approvedbooleannofalse

social_reply_to_comment

Reply to a social comment through the normalized interface.

ParamTypeRequiredDefaultNotes
comment_idstringyes—
messagestringyes—
providerstringnometa

social_schedule_post

Schedule a social post for future publishing.

ParamTypeRequiredDefaultNotes
publish_atstringyes—
providerstringnometa
draft_idstringno“
profile_idstringno“
textstringno“
titlestringno“
bodystringno“
link_urlstringno“
call_to_actionstringno“
hashtagsarray|nullno—
media_urlsarray|nullno—
approvedbooleannofalse

social_snapshot

Return a cross-platform social snapshot.

ParamTypeRequiredDefaultNotes
providerstringnometa
profile_idstringno“
limitintegerno5

sonicwall_* — SonicWall

Curated guide: SonicWall.

sonicwall_list_sources

List the configured SonicWall log sources (firewalls). Every other SonicWall tool targets one of these by source name (or serial, or raw source_ip). Use this to discover which customer firewalls are onboarded and which one is the default when source is omitted. Sources with a serial set are scoped to that serial within their source_ip stream. Returns: str: JSON with success bool and a result containing default (the default source name) and sources (each with name, source_ip, seria…

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

sonicwall_log_query

Structured search of the SonicWall syslog by named fields. Supply any combination of serial, user, src, dst, code, category, action, rule. They are ANDed. Each field becomes an anchored LogQL regex line-filter, so values match whole tokens: code=“16” hits m=16 and not the category c=16, and src won’t bleed into srcMac. Returns newest-first events with parsed key=value fields plus the raw line. Examples: user=“superht”, action=“mgmt” admin-UI activity code=“526” all web-management requests src…

ParamTypeRequiredDefaultNotes
paramsanyyes—

Freeform search of the SonicWall syslog with parsed results. Filter a source firewall’s log by a plain substring (contains) and/or an RE2 regex, over a lookback window. Each match is returned both as the raw line and as parsed key=value fields, newest first. Examples: contains=“src=203.” to find traffic from a subnet; regex=“m=(177|178)” for specific message IDs; contains=“Dropped”. Returns: str: JSON with success bool and result containing events (each with parsed dict + line) and…

ParamTypeRequiredDefaultNotes
paramsanyyes—

sonicwall_log_summary

Triage view: what is this firewall talking about? Scans the source firewall’s log over a window and tallies the top message IDs (with a representative msg text), categories, source IPs, usernames, and a drop/deny count. Good for spotting noise (e.g. a runaway message ID) and getting a quick health read. Returns: str: JSON with success bool and result containing top-N tallies.

ParamTypeRequiredDefaultNotes
paramsanyyes—

sonicwall_vpn_activity

Who’s on the VPN and how the tunnels are behaving. Two structured views of a source firewall’s VPN, over a time window: * control_plane - VPN/IKE category (c=16) events: IKE negotiation, IPsec SA add/delete, DPD, IKEv2. This is the tunnel lifecycle / rekey / failure signal. Sparse; returned newest-first. * sessions - distinct VPN users seen on L2TP / SSL-VPN session lines, collapsed to one row per (user, source IP, session type) with a hit count and first/last seen. The underlying per-connect…

ParamTypeRequiredDefaultNotes
paramsanyyes—

specialist_* — specialist

specialist_complete

Send one prompt to the specialized worker model, return its text. Use when a subtask needs the specialized model (e.g. uncensored or domain-tuned generation) instead of the main orchestrator. The worker does not call tools; it just returns a completion.

ParamTypeRequiredDefaultNotes
promptstringyes—
systemstringno“
max_tokensintegerno1024
temperaturenumberno0.7

ted_* — ted

ted_intelligence_coverage

Count business records; opt in to synthetic diagnostics, never mailbox completeness.

ParamTypeRequiredDefaultNotes
include_syntheticbooleannofalse

ted_intelligence_record

Save Ted’s dated, cited assertion; retry with the same key and payload. Payload: statement, epistemic_status (reported_fact or inference), observed_at (timezone-aware), sources (source_type, source_id or url/message_id/thread_id, optional source_at, message_id/thread_id), optional price (vendor, sku, amount decimal string, currency; optional variant/specification/condition/quantity/unit/terms/warranty). Optional product (sku; optional vendor/variant/specification/condition/quantity/ unit/term…

ParamTypeRequiredDefaultNotes
payloadobjectyes—
request_keystringyes—

Search submitted assertions, optionally by exact SKU; preserve variant and terms. Default excludes synthetic and superseded records. include_synthetic is a diagnostic opt-in; source_type matches an exact citation type. Limit: 1–50 (default 20). Product SKU lookup does not require a complete price. This reads only Ted records, never Gmail or existing email-awareness bodies. Prices are dated evidence, not comparable/current quotes or verified facts.

ParamTypeRequiredDefaultNotes
querystringno“
skustring|nullno—
include_supersededbooleannofalse
include_syntheticbooleannofalse
source_typestring|nullno—
limitintegerno20

touch_* — touch

touch_job_heartbeat

Record that a scheduled job just ran. Call this at the end of any cron or scheduled script — including external crons not managed by the Leif scheduler (RS sync, tn_tracking_sync, etc.) — so job_health can detect stale jobs without SSH log-tailing. job_id must be a stable slug (e.g. rs-ticket-sync). It does not have to exist in the scheduler registry; heartbeats are tracked separately. exit_code 0 preserves the legacy success contract. Callers may also provide result (succ…

ParamTypeRequiredDefaultNotes
job_idstringyes—
exit_codeintegerno0
duration_snumber|nullno—
notestring|nullno—
resultstring|nullno—
error_codestring|nullno—

transfer_* — transfer

transfer_file

Copy a file between hosts via scp with sha256 verification. ALWAYS prefer this over reading a file into context and writing it back out somewhere else: it scp’s the bytes host-to-host without routing them through the model, has no size limit, and verifies the sha256 on both ends. All local hosts have keys installed, so every direction works. source_host and dest_host are host aliases. leif is the local Leif server (10.10.0.25, the default source); the remote aliases are target…

ParamTypeRequiredDefaultNotes
source_pathstringyes—
dest_hoststringyes—
dest_pathstringyes—
source_hoststringnoleif
timeoutintegerno120

uisp_* — uisp

uisp_authorize

Authorize a pending UISP device and assign it to a site (WRITE). Calls POST /devices/{device_id}/authorize with {“siteId”: site_id} — the same action as clicking “Authorize” in the UISP UI. Authorization and site assignment are atomic; siteId is required by the API. Safety: * Pre-flight: the site_id must resolve, and the device must currently be UNAUTHORIZED. An already-authorized device is refused with no write, so re-runs can’t silently re-home a live device. * Post-flight: the device is r…

ParamTypeRequiredDefaultNotes
paramsanyyes—

uisp_connect

Onboard discovered UBNT device(s) by pushing the UISP Key (WRITE). Calls POST /discovery/connect/ubnt — the proper adoption path for devices in the discovery queue (status ‘discovered’). UISP logs into each device with the provided admin credentials and pushes the UISP Key so it becomes managed. ASYNCHRONOUS: this starts the connect process. Devices transition (discovered -> connecting -> unauthorized/active) over the next few minutes; the immediate post-flight will usually still show ‘dis…

ParamTypeRequiredDefaultNotes
paramsanyyes—

uisp_create_site

Create a new UISP infrastructure site (WRITE). Confirmed contract: POST /sites with {“name”: …} — name is the only required field; type defaults to “site”. Stand up a site here, then assign devices to it with uisp_authorize. Safety: * Duplicate-name guard: UISP permits two sites with the same name (a footgun). If a site with this name already exists, this returns that site (created=False) and does NOT create a twin. * Post-flight: re-reads the site list and returns the created site’s id/na…

ParamTypeRequiredDefaultNotes
paramsanyyes—

uisp_get

Fetch UISP entities: sites, devices, or a single device. entity_type: sites — all sites (optionally filtered by name substring) devices — all devices, slimmed (optionally filtered by site name) device — one full device record; requires device_id discovered — the discovery/adoption queue: devices found on the network but not yet managed (optionally filtered by name/ip substring via the site arg) Args: params.entity_type: ‘sites’ | ‘devices’ | ‘device’ params.site: optional case-insensitive…

ParamTypeRequiredDefaultNotes
paramsanyyes—

Search UISP devices and sites by a free-text substring. Matches (case-insensitive) against device name, model, IP, and MAC, and against site name. Returns slim device and site records. Args: params.query: e.g. ‘rocket’ to find airMax Rocket radios. Returns: str: JSON with matching devices and sites.

ParamTypeRequiredDefaultNotes
paramsanyyes—

uisp_status

Fleet rollup for the UISP controller (airMax / EdgeRouter / etc.). Returns site count, device count, a device-type breakdown, and a full count-by-status breakdown plus the derived online (active) device count. The online count comes from the overview.status field; the complete count_by_status map is included so the distribution can be verified directly. Returns: str: JSON with totals, device_types, count_by_status, active_devices.

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

unifi_* — UniFi

Curated guide: UniFi.

unifi_get

Get UniFi data from the SHTops caches. entity_type options: sites — list all sites with metadata (both sources) devices — device inventory (both sources) hosts — UniFi consoles / network-servers (cloud source only) health — health subsystem data per site (local source only) wlans — SSID/WLAN configs per site (local source only) networks — LAN/VLAN configs per site (local source only) site: optional case-insensitive substring filter — matches site name, site_id, or host name. Omit for all site…

ParamTypeRequiredDefaultNotes
entity_typestringyes—
sitestring|nullno—
sourcestringnoall

Search UniFi hosts, sites, and devices across both caches. Searches across: - Local controller: site names/descriptions, device names/models/IPs/MACs - Cloud (Site Manager API): host hostnames/locations, site descriptions, device names/models/IPs/MACs Use this to find a customer by name when you don’t know whether they’re on the hosted controller or on their own Cloud Key (e.g. JElectric). source: “local” | “cloud” | “all” (default).

ParamTypeRequiredDefaultNotes
querystringyes—
sourcestringnoall

unifi_status

Get a summary of all UniFi sites and hosts managed by SHTops. Returns cache freshness, site/device counts, fleet-wide rollup, and any sites with zero devices (potential connectivity issues). source: “local” (unifi.super-ht.com only), “cloud” (Site Manager API hosts only — JElectric etc.), or “all” (default, both).

ParamTypeRequiredDefaultNotes
sourcestringnoall

Remove a dependency or hierarchy relationship between tasks.

ParamTypeRequiredDefaultNotes
source_taskstringyes—
target_taskstringyes—
relationshipanyyes—

update_* — update

update_bootstrap_context

Compatibility entrypoint for updating scope-backed living docs or handoffs.

ParamTypeRequiredDefaultNotes
scopestringnoshtops
contentstringno“
document_pathstring|nullno—
modestringnoappend
targetstringnodocs
sectionstring|nullno—
importancestringnonormal

update_bootstrap_context_tool

Update a scope-backed living doc or handoff in a uniform way.

ParamTypeRequiredDefaultNotes
scopestringnoshtops
contentstringno“
document_pathstring|nullno—
modestringnoappend
targetstringnodocs
sectionstring|nullno—
importancestringnonormal

update_deadline_status

Update a tracked item’s status. new_status is one of: not_started, in_progress, blocked, completed, deferred. Updating also resets the stasis clock (the item counts as mentioned). Use this when progress is made, an item is blocked, or it’s consciously closed/deferred.

ParamTypeRequiredDefaultNotes
item_idstringyes—
new_statusstringyes—
notestring|nullno—

update_note

Update an existing note in place. Only the fields you supply are changed; omitted fields are left untouched. tags and metadata replace the stored values wholesale rather than merging. Resolve note_id first with search_notes or get_recent_notes.

ParamTypeRequiredDefaultNotes
note_idstringyes—
contentstring|nullno—
categorystring|nullno—
tagsarray|nullno—
metadataobject|nullno—

update_project_context

Append an update to a project’s _notes.md context file.

ParamTypeRequiredDefaultNotes
sectionstringyes—
contentstringyes—
project_idstring|nullno—
importancestringnonormal

update_task

Update a task’s fields.

ParamTypeRequiredDefaultNotes
taskstringyes—
updatesobjectyes—
forcebooleannofalse

validate_* — validate

validate_script

Validate a Python script for syntax and common issues.

ParamTypeRequiredDefaultNotes
file_pathstringyes—
run_checksbooleannotrue

web_* — web

Search the web using DuckDuckGo.

ParamTypeRequiredDefaultNotes
querystringyes—
max_resultsintegerno5

web_traverse

Traverse links from a starting URL breadth-first.

ParamTypeRequiredDefaultNotes
start_urlstringyes—
max_pagesintegerno5
max_depthintegerno1
same_domainbooleannotrue
max_links_per_pageintegerno30
delay_secondsnumberno0

website_* — Website shell and files

Curated guide: Website shell and files.

website_create_directory

Create a website directory relative to the configured site roots.

ParamTypeRequiredDefaultNotes
pathstringyes—

website_delete_file

Delete a website file relative to the configured site roots.

ParamTypeRequiredDefaultNotes
pathstringyes—

website_execute_command

Execute a shell command from one allowed website root without allowing cd or .. traversal.

ParamTypeRequiredDefaultNotes
commandstringyes—
timeoutintegerno30
rootstring|nullno—

website_file_exists

Check whether a website path exists relative to the configured site roots.

ParamTypeRequiredDefaultNotes
pathstringyes—

website_get_system_info

Get SSH system information from the website host.

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

website_list_directory

List the contents of a website directory relative to the configured site roots.

ParamTypeRequiredDefaultNotes
pathstringno.

website_list_roots

List the allowed website root aliases exposed by the website MCP tools.

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

website_read_file

Read a website file relative to the configured site roots.

ParamTypeRequiredDefaultNotes
pathstringyes—

website_write_file

Write a website file relative to the configured site roots.

ParamTypeRequiredDefaultNotes
pathstringyes—
contentstringyes—

wp_* — wp

wp_create_post_draft

Create a WordPress DRAFT post from markdown on a managed WordPress site. Converts markdown into native Gutenberg blocks: ## headings become H2 (### becomes H3, etc.), text become links, ![alt](url) become image blocks, plus bold/italic/bullet lists. Uploads the featured image and any inline images into the WordPress media library, sets the author, and saves the post as a DRAFT. Status is ALWAYS draft; this tool never publishes. Image sources may be public URLs or paths already on the w…

ParamTypeRequiredDefaultNotes
titlestringyes—
body_markdownstringyes—
authorstringno“
featured_imagestringno“
imagesarray|nullno—
rootstringnosuper-ht.com

write_* — write

write_excel

Create a new Excel workbook.

ParamTypeRequiredDefaultNotes
pathstringyes—
dataarray[object]yes—
sheet_namestringnoSheet1

write_file

Create or overwrite a local file.

ParamTypeRequiredDefaultNotes
pathstringyes—
contentstringyes—

write_session_summary

Persist a structured summary at the end of a working session. Call this when a session naturally wraps (Wayne signs off, or the thread clearly lands): the decisions made, threads opened/closed, anything that needs Wayne’s attention (escalations), and concrete next_actions. scope matches the project scopes (e.g. personal, msp, esa, pricing). Summaries surface in the morning brief and via recent_session_summaries so the next session starts warm instead of cold. Skip chit-chat se…

ParamTypeRequiredDefaultNotes
scopestringyes—
one_line_summarystringyes—
decisionsarray|nullno—
threads_openedarray|nullno—
threads_closedarray|nullno—
escalationsarray|nullno—
next_actionsarray|nullno—
notable_artifactsarray|nullno—
conversation_idstring|nullno—
duration_minutesinteger|nullno—
supersedesarray|nullno—