Every tool the Busymate MCP server exposes, grouped by what it does. There are 188 tools in total — a one-to-one mirror of the dashboard's read/write surface.
How to read this page
Each tool carries permission gating, enforced server-side on every call:
section:view/section:edit— a capability check against your RBAC role. You need the named capability (e.g.devices:edit) for the call to run. Built-inadmingrants all; built-invieweris read-only.- confirm-gated — a destructive action that requires an explicit
confirm: true(orconfirm: "all") argument. The agent must opt in deliberately; a stray call is rejected. - admin-only — restricted to admin roles regardless of capabilities.
Tools are scoped to your account and RLS — you only ever see and touch your own devices, entries, and settings.
Generic CRUD — db_* (5)
Low-level PostgREST access to allowlisted tables. The section gate is per-table: each table maps to a capability section, and db_select/db_rpc need view, the mutators need edit. Update and delete reject empty filters.
| Tool | What it does | Gating |
|---|---|---|
db_select | Generic select against an allowlisted table (columns, filters, order, limit, offset). | per-table :view |
db_insert | Generic insert / upsert (with onConflict). | per-table :edit |
db_update | Generic update; empty filters rejected. | per-table :edit |
db_delete | Generic delete; empty filters rejected. | per-table :edit |
db_rpc | Call an allowlisted Postgres function. | per-table :view |
Realtime & introspection (2)
| Tool | What it does | Gating |
|---|---|---|
realtime_broadcast | Send a Broadcast message on a Realtime channel (the same fan-out the dashboard uses). | global:edit |
list_tables | List the tables / RPCs available to the generic CRUD tools. | global:view |
Device reads (3)
| Tool | What it does | Gating |
|---|---|---|
list_devices | List every paired device with metadata. | devices:view |
get_device | Fetch one device by uuid or name. | devices:view |
get_device_status | Live status / heartbeat for a device. | devices:view |
Device realtime control (8)
Control flows delivered over Realtime to a paired device. The destructive ones are confirm-gated.
| Tool | What it does | Gating |
|---|---|---|
rename_device | Rename a device. | devices:edit |
delete_device | Delete a device record. | devices:edit · confirm-gated |
unpair_device | Unpair / revoke a device. | devices:edit · confirm-gated |
vpn_on_device | Turn the on-device VPN tunnel on. | devices:edit |
vpn_off_device | Turn the on-device VPN tunnel off. | devices:edit |
open_sheet_device | Remotely open the iOS app's settings / cert / pac sheet (foreground only). | devices:edit |
set_device_connection_type | Set a device's connection type (e.g. VPN vs PAC). | devices:edit |
set_live_activity_message | Set or clear the per-device Live Activity lock-screen pill text. | devices:edit |
External / upstream proxy control (2)
Route a device's egress through an upstream proxy so its public IP and country become the proxy's.
| Tool | What it does | Gating |
|---|---|---|
list_proxies | List available proxies from the MyPrivateProxy pool (filter by country / free-text). Credentials never returned. | devices:view |
set_device_external_proxy | Set or clear a device's upstream proxy — by country (auto-select a healthy proxy) or explicit host+port. | devices:edit · confirm-gated |
Remote browser / CDP control (7)
Drive a real Chrome that a bmc (cdp-connector) device controls. Every command needs the per-device remote-control opt-in to be ON; the raw escape hatch is admin-only.
| Tool | What it does | Gating |
|---|---|---|
set_device_cdp_control | Turn the per-device remote-browser opt-in on / off (off by default). | devices:edit |
browser_targets | List the open browser targets / tabs the device controls. | devices:edit |
browser_open | Open a URL in the controlled Chrome. | devices:edit |
browser_eval | Evaluate JavaScript in a target (resolves {{VAR}} env refs server-side). | devices:edit |
browser_screenshot | Capture a screenshot of a target. | devices:edit |
browser_snapshot | Capture an accessibility / DOM snapshot of the page. | devices:edit |
browser_cdp | Send a raw Chrome DevTools Protocol command (arbitrary-code power). | devices:edit · admin-only |
Named CDP device daemon (5)
Lifecycle of named CDP "devices" (Chrome instances on a bmc machine), plus hot-updating the daemon itself. The mutators are confirm-gated.
| Tool | What it does | Gating |
|---|---|---|
list_cdp_instances | List the named CDP instances a machine runs. | devices:view |
start_device | Start a named CDP device. | devices:edit · confirm-gated |
stop_device | Stop a named CDP device. | devices:edit · confirm-gated |
create_device | Provision a new named CDP device (fresh port + profile, pairs its JWT). | devices:edit · confirm-gated |
update_cdp_host | Hot-update the bmc daemon on a machine to the latest build and recycle its supervisor — running captures keep capturing (re-adopted), remote control is briefly unavailable while it reconnects. | devices:edit · confirm-gated |
Custom browser profiles (4)
CRUD over the browser_profiles table of custom Chromium-family launch profiles authored in the dashboard (Settings → CDP) and synced to the bmc CLI. The five built-ins (chrome / brave / edge / godbrowser / chromium) live in the CLI code — they're reserved slugs and never appear here.
| Tool | What it does | Gating |
|---|---|---|
list_browser_profiles | List custom browser profiles (slug, display name, binaries, default flags, flag catalog, CDP notes). | devices:view |
get_browser_profile | Get one custom profile by slug or id — full detail. | devices:view |
upsert_browser_profile | Create or update a custom profile (matched by slug); reserved built-in slugs are rejected. | devices:edit · confirm-gated |
delete_browser_profile | Delete a custom profile by slug or id. | devices:edit · confirm-gated |
Entries (9)
Read, tag, search, and inspect captured request / response pairs. summarize_device_traffic is the one to reach for first on a busy device — a bounded, index-only profile of which hosts/endpoints dominate, without scanning raw rows. inspect_requests is the deep one — full headers and bodies for reverse-engineering an API. delete_entries is the precise, targeted counterpart to the whole-device wipe_entries.
| Tool | What it does | Gating |
|---|---|---|
search_entries | Search captured entries (host, status, method, date). | devices:view |
get_entry_count | Count entries matching a filter. | devices:view |
summarize_device_traffic | Bounded, index-only traffic profile for ONE device — top hosts by request count, or (with host) the top path-bases on that host with per-path count + last-seen. Never scans or returns raw rows; fast on 17k+ rows. The first tool to call to find the busy/flooding host. | devices:view |
inspect_requests | Deep-inspect FULL request + response headers and bodies for ONE host (requires a full hostname with a dot). | devices:view |
export_har | Export matching entries as a HAR 1.2 log (scope by device / host / date). | devices:view |
tag_entry | Add a tag to an entry. | tags:edit |
untag_entry | Remove a tag from an entry. | tags:edit |
wipe_entries | Delete captured entries (per-device, or every device with all: true). Requires confirm: true (irreversible). | devices:edit |
delete_entries | Targeted filter-then-delete on ONE device (host / path_contains / method / time range; at least one filter required). Optional keep_latest_n keeps the N newest matching rows and deletes the rest — trim a flooding endpoint while keeping recent samples. Destructive + irreversible. | devices:edit + admin + confirm |
inspect_requestsandexport_harreturn real captured headers and bodies — treat any tokens, cookies, or credentials in them as secrets.
Service groups (5)
A service group can link one or more BusyBro specialist agents from the busybro_agents registry, with exactly one primary (the service's lens + default run_task target) and an explicit order. list_service_groups / get_service_group return each group's primary_agent plus its ordered agents[].
| Tool | What it does | Gating |
|---|---|---|
list_service_groups | List service groups, each with its primary_agent + ordered linked agents[]. | services:view |
get_service_group | Fetch one service group, with its primary_agent + ordered linked agents[]. | services:view |
upsert_service_group | Create or update a service group. | services:edit |
delete_service_group | Delete a service group. | services:edit |
set_service_group_agents | Full-replace the agents linked to a group: pass the complete desired [{agent_id, is_primary?, position?}] set (exactly one primary; an empty set clears all links). | services:edit + confirm |
The legacy
service_groups.ai_agentjsonb (the old single inline{enabled, name, instructions}per-service agent) and the deprecatedservice_groups.agent_idFK have been dropped — link agents withset_service_group_agentsinstead (theservice_group_agentsjoin is the single source of truth).upsert_service_groupstill accepts anai_agentarg for back-compat but ignores it.
Tags (3)
| Tool | What it does | Gating |
|---|---|---|
list_tags | List defined tags. | tags:view |
upsert_tag | Create or update a tag. | tags:edit |
delete_tag | Delete a tag. | tags:edit |
Settings & environment (14)
Effective settings (global / per-user / per-service / per-device), environment variables, connection types, and breakpoint patterns. Env values are masked on read and never echoed on write; reference them later as {{KEY}} in resend_request and browser_eval. The env tools gate dynamically by scope — global checks global:*, device checks devices:*.
| Tool | What it does | Gating |
|---|---|---|
get_global_settings | Read settings_global.data. | global:view |
get_device_settings | Read a device's settings row. | devices:view |
set_device_settings | Patch a device's settings_device.data. | devices:edit |
clear_device_settings | Delete a per-device override row. | devices:edit |
get_env | List env vars for a scope (values masked). | global / devices:view by scope |
set_env_var | Set one env var (value never echoed). | global / devices:edit by scope |
delete_env_var | Remove one env var from a scope. | global / devices:edit by scope |
import_env | Bulk-import vars from .env text (merge or replace). | global / devices:edit by scope |
set_breakpoint_patterns_global | Set the global breakpoint patterns per direction — requestPatterns (outbound) / responsePatterns (inbound); patterns is a legacy alias for the request direction. | global:edit |
set_breakpoint_patterns_device | Set a device's breakpoint patterns per direction — requestPatterns / responsePatterns; patterns is a legacy alias for the request direction. | devices:edit |
set_breakpoint_patterns_user | Set a USER's breakpoint patterns per direction (the middle tier global → user → device). Effective per device = global ++ user ++ device. | users:edit · confirm-gated |
set_breakpoint_patterns_service | Set a SERVICE GROUP's breakpoint patterns per direction (the SERVICE tier global → user → service → device); applies to every device that has applied the group. Effective per device = global ++ service ++ user ++ device. | services:edit · confirm-gated |
set_global_connection_type | Set the global default connection type. | global:edit |
set_user_connection_type | Set the per-user connection type. | users:edit |
Control flows (2)
Realtime control directed at the proxy-server / device handling a paused request.
| Tool | What it does | Gating |
|---|---|---|
resend_request | Replay a captured request (resolves {{VAR}} env refs server-side). | devices:edit · confirm-gated |
breakpoint_continue | Release a request paused at a breakpoint. | devices:edit · confirm-gated |
Pauses (1)
| Tool | What it does | Gating |
|---|---|---|
set_paused_domains | Read (omit domains) or replace the global paused-domains list. | pauses:view / pauses:edit |
Block rules (5)
Auto-block requests matching a method + host/path wildcard, before they reach upstream. The rule action is one of three variants: block returns a synthetic error response (status default 403, body, contentType); drop tears the connection down; mock returns a synthetic SUCCESS response (status default 200, optional string→string headers map, body, contentType). Stored in settings_{global,device}.data.blockRules; effective per device = global ++ device (de-duped by id).
Each rule also accepts an optional maxRuns integer — a run-count cap. Omit it (or pass a non-positive value) for unlimited (the default); maxRuns: 1 makes the rule fire once then auto-disable. The cap is set at creation right here on the rule object and applies to any action type. The count is tracked per device and persisted (it survives reconnect/restart — "once ever"), and a global rule that hits its cap is suppressed only on the device that reached it, never fleet-wide. See Block rules for the full semantics.
Example mock rule (force a JSON 200):
{ "id": "33333333-3333-3333-3333-333333333333", "enabled": true, "method": "GET",
"pattern": "api.doordash.com/v3/feature_flags",
"action": { "type": "mock", "status": 200, "headers": { "x-mocked-by": "busymate" },
"contentType": "application/json", "body": "{\"flags\":{\"new_ui\":true}}" } }Example one-shot mock rule (maxRuns: 1 — fire a single synthetic 401 to force a token refresh, then auto-disable):
{ "id": "44444444-4444-4444-4444-444444444444", "enabled": true, "method": "GET",
"pattern": "api.example.com/v1/me",
"action": { "type": "mock", "status": 401, "contentType": "application/json",
"body": "{\"error\":\"token_expired\"}" },
"maxRuns": 1 }| Tool | What it does | Gating |
|---|---|---|
get_block_rules | Read the global block rules and (with device_uuid/deviceName) the owner USER's rules + that device's per-device rules + the effective 3-tier union (global ++ user ++ device). | global:view |
set_block_rules_global | Replace the global block rules (full list, each rule may carry maxRuns); merged into settings_global.data without clobbering other keys. | global:edit |
set_block_rules_user | Replace a USER's block rules (the middle tier); additive (effective = global ++ user ++ device). A {type:'script'} action stays privilege-gated (scripts:edit + admin + confirm). | users:edit · confirm-gated |
set_block_rules_service | Replace a SERVICE GROUP's block rules (the SERVICE tier); applies to every device that has applied the group. Additive (effective = global ++ service ++ user ++ device, device wins then user then service then global). A {type:'script'} action stays privilege-gated (scripts:edit + admin + confirm). | services:edit · confirm-gated |
set_block_rules_device | Replace a device's per-device block rules (full list, each rule may carry maxRuns); additive on top of the global ++ user lists. | devices:edit |
Scripting engine (6)
Scripts are sandboxed JavaScript hooks (onRequest / onResponse) the proxy-server, cdp-connector, and iOS VPN run inline to mutate or synthesize matching requests/responses — the grown-up evolution of a Mock block rule. They live in settings_{global,user,device}.data.scripts; effective per device = global ++ user ++ device (de-duped by id, device wins then user then global), the same model as block rules. Writing a script is arbitrary-code power (browser_cdp-tier): the write tools need scripts:edit + admin + confirm: true at EVERY tier (the user tier does not lower the bar), enforced at the database layer (settings_{global,user,device}_scripts_gate) so no surface can smuggle a script in via a blocks write or a self-write.
A script object is { id, enabled, name, pattern, method?, phase: "request" | "response" | "both", code, version?, note? }.
| Tool | What it does | Gating |
|---|---|---|
get_scripts | Read the global scripts and (with device_uuid/deviceName) the owner USER's scripts + that device's per-device scripts + the effective 3-tier union (global ++ user ++ device). | scripts:view |
set_scripts_global | Replace the global scripts (full list); merged into settings_global.data without clobbering other keys. | scripts:edit · admin-only · confirm-gated |
set_scripts_user | Replace a USER's scripts (the middle tier); additive (effective = global ++ user ++ device). IDENTICAL bar to the global/device writers — the user tier does NOT lower it. | scripts:edit · admin-only · confirm-gated |
set_scripts_service | Replace a SERVICE GROUP's scripts (the SERVICE tier); applies to every device that has applied the group. Additive (effective = global ++ service ++ user ++ device). IDENTICAL bar — the service tier does NOT lower it (services:edit alone is not enough; the DB service_groups_scripts_gate enforces it). | scripts:edit · admin-only · confirm-gated |
set_scripts_device | Replace a device's per-device scripts (full list); additive on top of the global ++ user lists. | scripts:edit · admin-only · confirm-gated |
dry_run_script | Statically check a candidate script before saving — parse-only compile + contract check (no write, no live execution). Full semantic dry-run runs in the live sandbox / dashboard, not the Edge function. | scripts:view |
Workspaces (6)
| Tool | What it does | Gating |
|---|---|---|
list_workspaces | List workspaces. | global:view |
get_workspace | Fetch one workspace. | global:view |
create_workspace | Create a workspace. | global:edit |
rename_workspace | Rename a workspace. | global:edit |
delete_workspace | Delete a workspace. | global:edit · confirm-gated |
set_workspace_retention | Set a workspace's retention window. | global:edit |
Tabs (6)
| Tool | What it does | Gating |
|---|---|---|
list_tabs | List tabs. | global:view |
create_tab | Create a tab. | global:edit |
rename_tab | Rename a tab. | global:edit |
delete_tab | Delete a tab. | global:edit |
set_tab_filters | Set a tab's filters. | global:edit |
set_tab_selected_entry | Set a tab's selected entry. | global:edit |
Snapshots (3)
| Tool | What it does | Gating |
|---|---|---|
create_snapshot | Create a snapshot of captured state. | snapshots:edit |
list_snapshots | List snapshots. | snapshots:view |
download_snapshot | Download a snapshot's contents. | snapshots:view |
Push (2)
| Tool | What it does | Gating |
|---|---|---|
list_push_tokens | List registered APNs push tokens. | push:view |
send_push | Send a push notification via APNs. | push:edit · confirm-gated |
Roles & RBAC (5)
Manage capability-based roles. All mutators are confirm-gated.
| Tool | What it does | Gating |
|---|---|---|
list_roles | List roles and their capabilities. | users:view |
create_role | Create a custom role. | users:edit · confirm-gated |
update_role | Update a role's capabilities. | users:edit · confirm-gated |
delete_role | Delete a custom role. | users:edit · confirm-gated |
set_user_role | Assign a role to a user. | users:edit · confirm-gated |
Stats & status (2)
| Tool | What it does | Gating |
|---|---|---|
get_stats | Live capture / usage stats. | stats:view |
get_status | Infrastructure / service health. | status:view |
Tester (2)
The architecture-prove verdict board — read the latest test run + trigger a new one.
| Tool | What it does | Gating |
|---|---|---|
get_test_status | Read the latest tester run (the prove verdict + per-phase / per-suite results + recent history) or one run by id. | tester:view |
run_test_suite | Trigger a tester run (a tier / component); records a requested run that CI runs + reconciles. Confirm-gated. | tester:run + confirm |
Telegram linking (5)
Link a Busymate account to a Telegram identity for BusyBro chat.
| Tool | What it does | Gating |
|---|---|---|
get_telegram_link | Get your Telegram link. | users:view |
list_telegram_links | List Telegram links. | users:view |
link_telegram | Link a Telegram account. | users:edit |
unlink_telegram | Unlink your Telegram account. | users:edit · confirm-gated |
admin_unlink_telegram | Admin: unlink any account's Telegram link. | users:edit · confirm-gated |
TestFlight beta admin (13)
Manage TestFlight groups, testers, and invitations via the testflight-admin Edge Function. Reads need testflight:view; every write needs testflight:edit and is confirm-gated.
| Tool | What it does | Gating |
|---|---|---|
list_testflight_groups | List beta groups. | testflight:view |
list_testflight_testers | List testers. | testflight:view |
get_testflight_tester | Get one tester. | testflight:view |
list_testflight_invitations | List tester invitations. | testflight:view |
list_testflight_users | List App Store Connect users. | testflight:view |
list_testflight_user_invitations | List user invitations. | testflight:view |
invite_testflight_tester | Invite a beta tester. | testflight:edit · confirm-gated |
delete_testflight_tester | Remove a tester. | testflight:edit · confirm-gated |
add_testflight_tester_to_group | Add a tester to a group. | testflight:edit · confirm-gated |
remove_testflight_tester_from_group | Remove a tester from a group. | testflight:edit · confirm-gated |
send_testflight_invitation | Send a tester invitation. | testflight:edit · confirm-gated |
invite_testflight_user | Invite an App Store Connect user. | testflight:edit · confirm-gated |
cancel_testflight_user_invitation | Cancel a user invitation. | testflight:edit · confirm-gated |
BusyBro memory & shares (4)
BusyBro's long-term memory and shared-conversation reader. The memory trio is owner-scoped — you only ever see and touch your own account's memories, the same store the dashboard and Telegram BusyBro read and write.
| Tool | What it does | Gating |
|---|---|---|
list_memories | List or semantically search your own durable memories (facts / preferences / corrections / episodes). | users:view |
save_memory | Save one durable memory about you / your work; near-duplicates merge, a correction overwrites. | users:edit |
forget_memory | Delete your memories — by id, by best semantic query match, or all. | users:edit · confirm-gated |
get_busybro_share | Read a shared BusyBro conversation by its /busybro/share/<id> id — title, context, full transcript — so you can continue it. | public (by id) |
BusyBro sessions (5)
Multi-session chat management — a "session" is one busybro_threads row (a resumable conversation), shared across the dashboard, iOS, and the bmc CLI. All five are owner-scoped — you only ever list / load / rename / delete your own sessions. context_key is the dashboard nav-binding find-or-create key (UUID-keyed, e.g. device:<uuid>); last_active_at is the sidebar ordering anchor.
| Tool | What it does | Gating |
|---|---|---|
list_busybro_sessions | List your chat sessions, newest-active first — {thread_id, title, context_key, updated_at, last_active_at, turns}. | users:view |
get_busybro_session | Load one of your sessions by id — title, context_key, and ordered turns. A session you don't own returns not-found. | users:view |
create_busybro_session | Create a new empty session; optionally seed a title + nav-binding context_key. Find-or-create: a colliding context_key returns the existing session. | users:edit · confirm-gated |
rename_busybro_session | Rename one of your sessions (owner-gated no-op on a foreign id). | users:edit · confirm-gated |
delete_busybro_session | Permanently delete one of your sessions (owner-gated no-op on a foreign id). | users:edit · confirm-gated |
BusyBro global (team) memory governance (10)
The shared, non-personal team-knowledge store and its review queue — see Global (team) memory and the shareable Connect to team memory page. The shared store has no user_id and is leak-proof on the recall path; contributor identity surfaces only through list_memory_contributors, never in what an LLM recalls. Proposals land pending (not recallable) until an operator approves them.
| Tool | What it does | Gating |
|---|---|---|
list_global_memories | Operator browse of the team store across all statuses (pending / approved / rejected); filter by status / kind / origin / query. Returns each row's origin + contributor_count — never contributor ids. | users:view |
get_memory_stats | Memory dashboard counters: personal vs global totals, the global pending / approved / rejected split, and distinct_contributors (count only). | users:view |
list_memory_contributors | Operator attribution lookup for ONE team fact — who proposed it (joined to email / display name from the leak-proof busybro_global_contributions ledger) + who approved it (approved_by). Strictly off the recall path. | users:view |
propose_global_memory | Propose one candidate team fact — third-person, subject-less, ≤ 600 chars, no PII / secrets. Writes a pending row (not recallable) + records you as a contributor. | users:edit · confirm-gated |
approve_global_memory | Promote a pending team fact to approved (recallable); stamps approved_by = you. | users:edit · confirm-gated |
reject_global_memory | Reject a candidate (kept for audit / dedup, never recalled). | users:edit · confirm-gated |
update_global_memory | Edit a team fact's content / kind / importance; editing content flags it for re-embedding. | users:edit · confirm-gated |
admin_list_user_memories | Admin / support drill-down — read ONE user's personal memories by user_id (never feeds another user's recall). | users:view |
admin_forget_user_memory | Admin / support — delete ONE of a user's personal memories by id (a correction, not the full GDPR wipe). | users:edit · confirm-gated |
gdpr_forget_user | Admin GDPR erasure — wipe ALL of a user's personal memory + drop their global contributions; the recompute trigger then deletes any team fact that loses its last contributor. | users:edit · admin-only · confirm-gated |
The recall store (
busybro_global_memories) carries no identity —match_global_memoriesreturns nouser_id. Per-person provenance lives only in thebusybro_global_contributionsside-table, read only bylist_memory_contributors(operator-gated), for dedup, corroboration, stats, and erasure — never on the recall path. The dashboard review queue shows a candidate's contributor count, never identities.
Stripe billing & admin (9)
Subscription + metered (captured_entries) billing (Phase 1 = Stripe TEST mode). The owner-scoped reads filter on the caller's identity; operators pass all_users:true for the fleet. The admin reads back the /billing-admin operator surface — all value-blind (get_stripe_config derives test/live mode from the publishable-key prefix and NEVER returns the secret key or webhook signing secret).
| Tool | What it does | Gating |
|---|---|---|
get_subscription | The caller's own Stripe subscription(s); operators pass all_users:true for the fleet. | billing:view |
list_invoices | The caller's own invoices (amounts / hosted URL / period); all_users:true for the fleet. | billing:view |
get_usage | The caller's own metered usage rollup (captured_entries) by period; all_users:true for the fleet. | billing:view |
create_checkout_session | Open a Checkout (subscribe) or Customer Portal (manage) session; customer derived server-side from the caller. | billing:view · confirm-gated |
get_stripe_config | Value-blind connection status: { mode, publishable_key } only (mode derived from the pub-key prefix; secret/whsec_ never read). | billing:view |
list_prices | The Stripe Products' prices (value-blind projection: amounts, recurring/metered, lookup_key). | billing:view |
list_customers | The stripe_customers ↔ users mapping (fleet — the local mapping table, not the Stripe API). | billing:view |
get_webhook_events | The stripe_webhook_events idempotency ledger (fleet) — event_id / type / received. | billing:view |
get_billing_settings | The billing_settings singleton (default price, quota/overage, dunning, mode, …). | billing:view |
Legacy aliases (4)
Older names kept for backward compatibility. Prefer the generic db_* tools or the typed reads / writes above for new work.
| Tool | What it does | Gating |
|---|---|---|
list_entries | Paginated entries query. | devices:view |
get_entry | Fetch one entry by id / request_id. | devices:view |
get_settings | Effective settings for a device. | devices:view |
set_global_settings | Patch settings_global.data. | global:edit |
Total: 188 tools.