Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
THEOSNoPath to the Theos installation, required for tweak builds. Can also be set via the 'theos' setting in the config file.
VESPER_CONFIGNoPath to the vesper configuration file. Selects which TOML config to use; the --config command-line option takes precedence over this environment variable.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
device_listA

List configured allowlisted device IDs and applications.

device_infoA

Get TTL-cached SSH discovery for this connection; force_refresh=true requests fresh architecture, iOS and jailbreak evidence.

frida_detachB

Unload the inspection agent and hooks, then detach.

frida_get_eventsC

Read bounded, redacted trace events by sequence cursor; includes loss count.

frida_trace_methodC

Register bounded call tracing; optionally capture scalar arguments, return addresses and in-context stacks.

frida_unhookC

Remove a specific interceptor from this process session.

objc_dumpA

Dump headers with automatic backend selection: local binary_path uses host classdumpc; device_id/bundle_id/class_name uses the live runtime and reuses its session. Returns a local header file; preview is opt-in and bounded. Static cache: 5 minutes, 4 files, 16 MiB. Use objc_query_instances for live values.

objc_query_instancesA

One-call allowlisted app instance values: reuse/attach, discover class instances or read mixed-class object_ids, then read bounded ivars without arbitrary getters/descriptions. Select field_names to minimize tokens; sensitive fields are redacted. Default first 8 ivars, 20 instances, 10 per page. snapshot_id pages never rescan the heap. Foundation strings/numbers/collections are bounded; other objects return leased references. ObjC-visible classes only.

ui_snapshotB

Capture a fresh bounded UIKit summary. Reuse snapshot_id + offset for immutable pages without device access. Text is opt-in; format=detail or fields selects extra metadata.

ui_captureB

One-call allowlisted app capture with automatic session reuse/attach. Required mode=summary, screenshot or both; screenshots and text require explicit selection. Summary returns snapshot_id for paging.

ui_automateB

Run an app-scoped batch: tap, back/dismiss, input_text, scroll, assert or bounded wait_for. Uses UIKit control/accessibility actions, not physical touch injection. Select targets by leased view_id, identifier/class/text or window x+y. No implicit wait/screenshots/text. Optional after_capture reuses the same RPC. Stops at the first failure; never automatically retries mutations.

app_logsA

Start/reuse app log hooks and read one filtered page from a bounded on-device ring. Pass after=next_cursor; default 20 entries, no waiting. os_log/NSLog expose format strings; NSLogv and stdio expose rendered text. Sources/buffer options apply when starting. Stop removes hooks; an active log stream keeps the session alive.

debug_inspectA

Inspect app threads, bounded backtraces or registers in one call. Frida is immediate and samples running threads. backend=lldb temporarily stops the process, supports locals, then detaches/resumes. mode=capabilities checks host LLDB and cached device debugserver availability. No arbitrary debugger commands or expression execution.

debug_setupA

Check required Frida/LLDB/debugserver components and return actionable missing-component instructions. action=install installs absent device debugserver from the matching local Xcode iOS image or a workspace local_debugserver_path. action=repair reapplies an existing device-provided signing profile. Installation checks execution; verify actual attach separately with debug_inspect(backend=lldb).

app_decryptA

Decrypt one loaded app Mach-O using maintained frida-ios-dump code and the existing Frida/SSH session. Default main executable, background job; module_name/path selects an app framework. action=modules lists bounded loaded candidates without dumping. Returns verified cryptid=0/UUID/SHA-256 and binary_path for objc_dump or ida_open_binary; no IPA packaging or forced framework loading.

server_statusA

Inspect server configuration and process-session lifecycle without touching a device.

job_statusC

Retrieve a long-running job result.

job_cancelB

Cancel a job and clean up its active operation.

platform_toolA

Access advanced Vesper primitives without loading the full catalog. action=schema returns one exact input schema; action=call validates and executes arguments. Names include objc_get_ivars, objc_get_methods, ui_inspect_view, tweak_*, ida_* and device_*. Existing operation checks apply. Use the vesper-ios skill for workflows.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 19 tools

Disambiguation3/5

Most tools map cleanly to a resource+action, but several boundaries blur: ui_snapshot and ui_capture both return bounded UIKit summaries (capture also returns a snapshot_id), frida_detach vs frida_unhook differ only by scope, and platform_tool exposes objc_get_ivars/ui_inspect_view/device_* primitives that duplicate top-level tools. The verbose descriptions mitigate this but an agent must read carefully to pick the right one.

Naming Consistency4/5

There is a predictable domain-prefix convention (device_, frida_, objc_, ui_, app_, debug_, job_, server_, platform_), all in snake_case. Minor deviations exist within groups (verb-first frida_get_events/frida_trace_method vs. noun-first device_info/objc_dump/ui_snapshot), but the scheme remains readable and guessable.

Tool Count4/5

Nineteen tools is on the heavy side, but the domain (iOS dynamic analysis over SSH+Frida) genuinely needs distinct workflows for device discovery, ObjC introspection, UI automation, logging, debugging, decryption and job control. Some consolidation is possible (ui_snapshot/ui_capture, detach/unhook), but no tool looks wholly gratuitous.

Completeness3/5

Coverage is strong for the inspection/RE lifecycle (discover, attach, query, trace, dump, UI, logs, debug, decrypt) plus a platform_tool escape hatch for ida_*/tweak_* primitives. However, obvious gaps remain in the explicit surface: no file transfer (pull/push), no process list/launch/kill, and no shell execution, which agents will hit in real iOS workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues