Skip to main content
Glama
YPYT1

frida-ios-mcp

by YPYT1

frida-mcp

TypeScript stdio MCP for Frida iOS exploration — Playwright-style loop:

device_list → app_list → session_open → wait_until_texts (TikTok) / wait → screen_snapshot
  → tap(ref) / swipe / type_text → screen_snapshot → … → session_close

If session_open hangs or Cursor cancel leaves MCP half-dead: session_statussession_force_unlock → retry one open. Independent of fleetcontrol (agent JS copied under agent/).

Requirements

Component

Version

Node.js

≥ 22

pnpm

9+

npm frida

17.x (this repo pins ^17.16.2)

iOS frida-server

same major as host npm frida (e.g. both 17.x)

USB

MVP: native USB only (no wecha TCP yet)

Python (media only)

3.x + pymobiledevice3 via FRIDA_MCP_PYTHON

Mismatch between host frida and phone frida-server → inject / session_open fails.

Related MCP server: ya-frida-mcp

Device prerequisites

This MCP targets jailbroken iPhones only. Without a jailbreak and a running frida-server, device_list may still show USB, but inject / touch / UI text collection will fail.

1. Supported jailbreak stacks

Stack

Notes

Dopamine

Common; works well with RootHide. This repo’s default spawn-only path is built for this class of devices.

Waterfall / Serotonin-family

Same requirement: a matching frida-server must run on the phone (daemon or manual start).

RootHide

Recommended for TikTok-like apps (reduces inject fingerprints). Do not rely on attach to an already-running app process (_touchesEvent often stays null).

Not supported: stock (non-jailbroken) devices, Developer Mode alone, pymobiledevice3 without Frida, or remote TCP Frida (USB-only MVP).

2. frida-server must be running on the phone

  1. Download frida-server from Frida releases with the same major as the host npm frida package (e.g. host frida@17.16.x → device frida-server 17.x).

  2. Push it to the device and chmod +x (paths vary by jailbreak; common: /var/jb/usr/sbin/frida-server or /usr/sbin/frida-server).

  3. Start it as root and keep it running, e.g.:

# On-device SSH / terminal (adjust path for your jailbreak)
sudo frida-server -D
# or foreground for debugging:
sudo frida-server
  1. Verify from the PC:

pnpm cli call device_list
# or
npx frida-ps -U

Only then start the MCP. If frida-server stops, later session_open calls will fail or hang.

3. Host machine

  • Node.js ≥ 22; pnpm install && pnpm build in this repo

  • USB cable + trusted computer

  • For Photos import: Python with pymobiledevice3, pointed to by FRIDA_MCP_PYTHON

4. TikTok / touch rules

Approach

Result

session_open (default spawn: kill → inject while suspended → resume)

Touch reliable

attach to already-foreground TikTok

Unreliable (blocked by default; FRIDA_MCP_ALLOW_ATTACH=1 escape hatch only)

Immediate Accessibility dump_tree after launch

Triggers anti-debug; this MCP uses safe text collection instead

Search UI tip: prefer tool tiktok_open_search from For You (taps the top-right magnifier with retries). The top wide field is the text input ([input]). The narrow 搜尋 / 搜索 / Search label on the right is a submit button (tap after typing) — never smart_type_text it.

Spawn-only (this device stack)

RootHide / TikTok / many jailbreak setups cannot use reliable attach (touch _touchesEvent null, or process dies).

Policy

Behavior

Default

Always mode=spawn

mode=attach

Forced to spawn + warning

Escape hatch

FRIDA_MCP_ALLOW_ATTACH=1 (not recommended)

kill old pid → device.spawn(bundleId) suspended → attach(pid) → inject agent → [netEnable?] → resume

Dual parallel: App + SpringBoard (+ Photos side channel)

Channel

Session field

Lock

How to open

App (TikTok)

live

appLock

session_open

SpringBoard

sbLive

sbLock

withSpringBoard:true / sb_ensure / first sb_*

Photos album

photosLive

photosLock

photos_ensure / photos_import_file

Stuck open / half-dead MCP: Cursor cancel does not abort server-side Frida. If device_list works but session_open / ping hang forever, check session_status (appLockBusy, appLockWaiters), then call session_force_unlock or restart the MCP process. CLI can still open apps because it is a different Node process with its own locks.

Env

Default

Meaning

FRIDA_MCP_OPEN_TIMEOUT_MS

60000

spawn/attach/inject total timeout

FRIDA_MCP_CLOSE_TIMEOUT_MS

8000

soft timeout for script unload/detach (won't pin the lock)

FRIDA_MCP_LOCK_WAIT_MS

90000

max wait to acquire appLock/sbLock

FRIDA_MCP_TOOLS

all

core = hide net/photos/dual extras from MCP tool list

FRIDA_MCP_ALLOW_DEBUG_TOOLS

unset (on)

Default all registers debug tools. Set 0/false/off to hide rpc_call / dump_modal / set_text_at_point only

session_open also has a hold timeout (~open+close+5s): if Frida close/spawn hangs but the event loop is alive, the lock is released with APP_LOCK_HOLD_TIMEOUT instead of pinning forever. On hold/open timeout the server best-effort kills inFlightPid / last app pid and sets orphanFridaOpPossible. Soft-close timeout on the app channel also kills that pid (SpringBoard is never killed).

Stuck / orphan recovery: session_status (look for orphanFridaOpPossible / inFlightPid) → session_force_unlock (kills orphan pid, clears flag) → one session_open. Do not immediately re-open while orphan is set.

  • Held in parallel — App + SB Frida scripts; Photos is a temporary third channel.

  • RPCs concurrent — separate locks; dual_ping / Promise.all([app…, sb…]) run together.

  • Not multi-app business — one app + SpringBoard; Photos is import/clear only.

  • photos_ never closes TikTok* — spawn Photos may briefly steal foreground.

Media import (PhotoKit, no fleetcontrol HTTP)

Requires Python 3 with pymobiledevice3 on the interpreter MCP actually runs (AFC).
MCP does not pip install for you. Missing deps → stage: afc within ~5s (preflight), not a 120s hang.

Pin the interpreter (recommended on Windows):

# CLI
set FRIDA_MCP_PYTHON=C:\Users\You\AppData\Local\Programs\Python\Python312\python.exe
"%FRIDA_MCP_PYTHON%" -m pip install pymobiledevice3

Cursor / Claude MCP config example:

{
  "mcpServers": {
    "frida-ios": {
      "command": "node",
      "args": ["D:/Project/tk/frida-mcp/dist/index.js"],
      "env": {
        "FRIDA_MCP_PYTHON": "C:\\Users\\You\\AppData\\Local\\Programs\\Python\\Python312\\python.exe"
      }
    }
  }
}
# image or small mp4 (prefer no other session_open during video import)
pnpm cli call photos_import_file --localPath D:\path\to\clip.mp4 --mediaType video
pnpm cli call photos_list --mediaType video
pnpm cli call photos_clear

Video tip: concurrent App sessions (e.g. Preferences open via session_open) can delay sqlite verify → needsRetry:true with a valid localIdentifier. Close other sessions and photos_list / re-import; do not treat needsRetry as silent success.

Tool

Role

photos_import_file

Upload + ensure Photos + PhotoKit import (+ sqlite verify); image or video

media_upload / photos_ensure / photos_import

Split steps for retry

photos_list

Untrashed assets; optional mediaType / idPrefix

photos_clear

Trash untrashed media (Recently Deleted), optional DCIM cleanup

AFC helper: scripts/afc_tool.py (preflight / push / list-untrashed / rm-dcim). Host = Photos.app only. SQLite query aligns with fleetcontrol (ZKIND in (0,1,2) + extensions).

session_open { bundleId: TikTok, withSpringBoard: true }
dual_ping                    # both channels pong at once
# later, can issue app + sb work concurrently if client allows

Install & build

cd D:\Project\tk\frida-mcp
pnpm install
pnpm build

Product surface

Surface

Role

MCP (frida-mcp)

Interactive AI/human probe (main)

CLI (cli/frida-ios.mjs)

Scripts / CI / one-shot

Core (src/backend.ts + session)

Shared API — not shared memory by default

MCP vs CLI sessions (read this)

  1. Embedded MCP = its own Node process + own sessionStore (Cursor/Grok default).

  2. CLI = another process; cannot see the MCP session.

  3. To share one Frida session: run the daemon, then set FRIDA_MCP_MODE=daemon on both MCP and CLI.

  4. Without daemon, open/close in CLI is independent of Cursor.

  5. App acts are serialized in-process (AI parallel tap+swipe will queue, not race).

# CLI (after build) — separate process unless daemon
pnpm cli help
pnpm cli open --bundleId com.ss.iphone.ugc.Ame --withSpringBoard
pnpm cli call wait --ms 4000
pnpm cli snap --limit 20
pnpm cli call net_dump --summaryOnly
pnpm cli close

Open-source safety (net_dump defaults):

  • Redact Authorization / Cookie / *Token*

  • Drop data: URLs (base64 images)

  • Fold binary / octet-stream body previews

  • summaryOnly: true for host counts only

  • redact:false / includeDataUrls / includeBinaryBodies only on trusted local machines — never paste raw dumps into issues/PRs.

Typing (real input path): Feed → tiktok_open_search (preferred; retries magnifier points) → smart_type_text on the wide [input] search bar → then tap the narrow 搜尋 / 搜索 / Search submit button to run the query.
Never smart_type_text on nav tabs or on the submit 搜尋 button itself.
Nav / composer chips (e.g. “What's on your mind”) are not fields → NOT_INPUT.

SB test alert: sb_alert_triggersb_alert_list (hasAlert) → single sb_alert_dismiss (post-settle cleared) or stacked sb_alert_dismiss({ all: true }); if needsRetry re-list / retry all.

Debug tools (rpc_call, dump_modal, set_text_at_point): registered by default in FRIDA_MCP_TOOLS=all (prefixed [debug]). Hide with FRIDA_MCP_ALLOW_DEBUG_TOOLS=0, or hide advanced+debug with FRIDA_MCP_TOOLS=core.

Modes

Session lives inside the MCP process. No daemon, no env:

node dist/index.js
# or
pnpm dev

Daemon + thin MCP (NSSM) — shared session with CLI

  1. Daemon holds Frida session on 127.0.0.1:18765

  2. stdio MCP and CLI forward when FRIDA_MCP_MODE=daemon (or FRIDA_MCP_DAEMON=1)

pnpm start:daemon
# other terminal / Cursor:
set FRIDA_MCP_MODE=daemon
node dist/index.js

Grok config (~/.grok/config.toml)

Why no args? MCP spawns command + optional args. We ship bin/frida-mcp.cmd which already runs node dist/index.js, so config only needs the launcher path:

[mcp_servers.frida-ios]
command = "D:/Project/tk/frida-mcp/bin/frida-mcp.cmd"
enabled = true

Optional daemon mode (daemon must be running separately):

[mcp_servers.frida-ios]
command = "D:/Project/tk/frida-mcp/bin/frida-mcp.cmd"
enabled = true

[mcp_servers.frida-ios.env]
FRIDA_MCP_MODE = "daemon"

Cursor mcp.json

{
  "mcpServers": {
    "frida-ios": {
      "command": "D:/Project/tk/frida-mcp/bin/frida-mcp.cmd"
    }
  }
}

TikTok red lines

  • Never dump_tree / find_view / find_buttons / dump_login_gate (MCP gates these).

  • Read UI only via screen_snapshotcollectTextsWithFrames.

  • Prefer session_open mode=spawn for reliable touch.

  • After open, wait 3000–5000 ms before first snapshot.

  • Refs only valid for last snapshot — re-snapshot after UI changes.

Tools

Tool

Purpose

device_list

Frida devices (default USB-only; usbOnly=false for all)

app_list

Apps + pid. Default userFacing=true filters Apple services; runningOnly / query supported

session_open

spawn | attach + inject

session_status / session_respawn / session_close / session_force_unlock

lifecycle + stuck-lock recovery (appLockBusy, openInFlight, refsValid)

wait / wait_until_texts

blind sleep vs poll until text; TikTok use preset:"tiktok_feed" (multi-locale)

ping

agent liveness

screen_window

simplified {width,height,x,y,cx,cy,className}

screen_snapshot / screen_search

texts refs are generation-scoped (g3t8); tree mode does not wipe texts refs

screen_shot

lockdown pixel screenshot (pymobiledevice3); visual assist — not for tap refs

tap / swipe / press_home / wait

act — swipe prefer durationMs (agent seconds; duration>10 = ms)

probe_help

Recommended probe loop + tool tiers (tools.core / advanced)

type_text

Humanized per-char typing into focused field (resnapshot default true)

smart_type_text

Preferred: tap → focus → humanized typing

clear_text / first_responder / human_pause

focus / clear / step-gap pause

double_tap

double-tap like at ref/x,y

set_otp

TikTok OTP fill (setOtpCode)

set_text_at_point

coordinate setText (not humanized; debug)

dump_modal

mid-screen modal (blocked on TikTok; debug)

rpc_call

whitelisted agent RPC ([debug]; on by default in all, hide with ALLOW_DEBUG_TOOLS=0)

process_list

device processes (pid/name)

sb_alert_trigger / sb_alert_list / sb_alert_tap / sb_alert_dismiss / sb_close

SpringBoard system alerts

net_enable / net_disable / net_clear / net_status / net_dump

in-process NSURLSession + TTNet/Cronet capture (TLS plaintext after app decrypt)

tiktok_inbox / tiktok_reply / tiktok_im / tiktok_posts / tiktok_sign

Inbox+MR read / composer reply / IM advanced / self posts / MetaSec sign I/O

Refs expire after tap/swipe and across snapshot generations. Off-screen / zero-size nodes are marked and rejected on tap.

Humanized typing (inputText)

Agent: agent/text_input/comment.js (same approach as fleetcontrol).

MCP tool

fleetcontrol counterpart

Behavior

type_text

TypeTextAction / HumanTypeInField

Field already focused; per-char inputText

smart_type_text

SmartTypeTextAction

tap → wait firstResponder → human_pause → type

human_pause

human_pause(min,max)

Random gap between steps (not inter-key delay)

  • Default perCharDelayMs=90; agent adds randomDelay(base, jitter≈base) (jitter ≥ 30ms).

  • Insert fallbacks: insertTextreplaceRange → inner insertTextsetText + notify.

  • Nav tabs / chips like “Home” or “What's on your mind” are not inputs → NOT_INPUT (session stays alive).

  • Prefer smart_type_text on a real field ref; use first_responder if unsure (canInsertText).

  • screen_snapshot defaults: onScreenOnly=true, limit=40; optional search / showDiff.

  • tap / swipe / smart_type_text default resnapshot=true (returns snapshot).

  • Errors return { code, recovery[] } (e.g. SCRIPT_DESTROYED → respawn).

  • Start probes with probe_help; prefer first-class tools over [debug] rpc_call (hide debug with FRIDA_MCP_ALLOW_DEBUG_TOOLS=0).

Network capture (reverse-engineering)

# Best: capture launch traffic (hooks before resume)
session_open {
  bundleId,
  captureNet: true,
  netOptions: { captureMode: "all", maxBody: 16384, captureResponse: true, signTrace: true }
}
  → use app (Inbox / Profile)
  → net_dump({ redact:false, dedupe:false, query:"imapi|inbox|/im/|profile/self|security-argus", includeBinaryBodies:true, limit:100 })
  → tiktok_sign({ action: "last" })   # recent sign headers (+ backtrace if signTrace)
  • captureMode: nsurl | ttnet | all (default).

  • Signing model (general capability): MCP does not reimplement offline X-Gorgon / X-Argus. Instead it uses in-process TTNet (TTNetworkManager JSON request) so the App's MetaSec signs, and net_* / tiktok_sign capture x-security-argus / x-Tt-Token / x-metasec-* I/O (+ optional signTrace backtrace).

  • iOS sign headers (45.x): x-security-argus, x-Tt-Token, x-metasec-*, ticket/device-guard — classic X-Gorgon / X-Argus names are often absent on this build.

  • Responses: captureResponse:true uses TTNet onReadResponseData + setIsCompleted. Do not hook onURLFetchComplete (kills script). Many JSON/IM payloads may still arrive empty via this path (protobuf/other channels); binary/CDN bodies usually populate. Prefer ttnetRequest callback JSON for posts/list APIs.

  • DM / works URLs seen on device: imapi-*.tiktokv.com/v1/message/get_by_user, …/v2/message/get_by_user_init, tiktok/v1/im/inbox_data/get, aweme/v1/user/profile/self, feed/post endpoints.

  • IM inbox/reply:

    • tiktok_inbox — refresh Inbox + Message Requests and return username, real text content, conversationId, peerUid.

    • tiktok_reply / tiktok_im send_text — default dryRun:true. With dryRun:false, opens the real chat composer (ChatInputTextView + 傳送), and returns sent:true only after the exact text is re-read from live AWEIMTextMessage models (blank bubbles / network-callback-only success are rejected). transport:"sdk" is disabled.

    • tiktok_im action: messages — list recent messages with real text when available; open_chat accepts conversationId or peerUid.

  • Posts (tiktok_posts): self post list via TTNet to aweme/v1/aweme/post/ (override url/userId if needed).

  • Add Phone popup attribution (no dedicated tool):

    1. session_open with captureNet + reproduce the popup

    2. net_dump({ query: "passport/account|bind_phone|mobile", redact:false, dedupe:false }) — avoid bare phone (matches iPhone device_type noise)

    3. tiktok_im({ action: "phone_status" }) — on this build: AWEUserService.sharedServicecurrentLoginUser:

      • havePhoneNumber / isPhoneBinded false + empty bindPhoneaccount unbound (not just a cosmetic prompt)

      • canShowThirdPartyPhoneBindingPopup / is3pBindPopupRequestShow distinguish third-party bind UI vs mandatory add-phone

    4. Boot traffic often includes passport/account/info/v2 and passport/token/beat/v2

  • RE dump tip: redact:false, dedupe:false, includeBinaryBodies:true.

Advanced TikTok tools (not core)

Tool

Purpose

tiktok_inbox

Read Inbox + Message Requests/notification messages (username/content/conversation ID)

tiktok_reply

Reply via real chat composer; succeeds only after exact text re-read

tiktok_im

Advanced IM diagnostics / compatibility actions

tiktok_posts

Self works list (in-app signed TTNet)

tiktok_sign

last sign headers or enable_trace

NSSM (only after device tools work)

# Admin
cd D:\Project\tk\frida-mcp
pnpm build
.\scripts\install-nssm-service.ps1
nssm start FridaMcpDaemon

Uninstall: .\scripts\uninstall-nssm-service.ps1

Logs: logs/daemon.stdout.log, logs/daemon.stderr.log

Typical probe

  1. device_list

  2. app_list → find TikTok bundle

  3. session_open { "bundleId": "…", "mode": "spawn" }

  4. wait { "ms": 4000 }

  5. pingpong

  6. screen_snapshot → refs

  7. tap { "ref": "t3" }screen_snapshot again

Agent

  • Source: agent/agent_main.js (+ imports), includes ping

  • Override: FRIDA_AGENT_ENTRY=path/to/agent_main.js

  • Compile: Frida Compiler, projectRoot = repo root (frida-objc-bridge in node_modules)

License

Private / internal use.

Available Tools

53 tools
app_listA

Enumerate apps: identifier, name, pid. Default userFacing=true filters noisy Apple services. Use runningOnly for live apps, query for name/id substring.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNoDevice id; default USB
queryNoFilter by identifier or name substring
userFacingNoDefault true: drop idle Apple system services
runningOnlyNoOnly apps with pid>0

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It implies a read-only enumeration but does not explicitly state non-destructiveness or potential side effects. The behavior is inferred from the listing nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two well-structured sentences: first states purpose and output, second provides usage hints. No redundancy, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's core function and parameter usage but omits the udid parameter entirely. No output schema exists, so the description partially compensates by listing returned fields (identifier, name, pid), but could be more comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters have schema descriptions (100% coverage), so the description adds marginal value. It reinforces userFacing's default filtering and runningOnly's purpose but does not clarify the udid parameter or add new detail about query behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Enumerate' and the resource 'apps' with output fields (identifier, name, pid). It differentiates from sibling 'process_list' by focusing on apps and mentioning default filtering. However, it does not explicitly compare to similar siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on parameter usage: default userFacing=true filters noisy services, runningOnly for live apps, query for substring matching. It does not, however, advise when to use app_list over other tools like process_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_textA

Clear current firstResponder text field (setText empty).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It correctly indicates a mutation action (clear), but does not disclose edge cases like what happens if no first responder exists or if it's not a text field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single sentence that states exactly what the tool does. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description covers the essential action. It could mention what happens when no first responder is available, but overall it's sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no parameters, so the baseline is 4. The description adds no param info, which is fine since schema coverage is 100% and there are no params to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool clears the current first responder text field, using specific verb+resource ('Clear current firstResponder text field'). It distinguishes from siblings like 'type_text' and 'set_text_at_point'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use is provided. The purpose implies usage for clearing text fields, but no alternatives or exclusions are mentioned. For a simple tool, this is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

device_listA

List Frida devices. Default USB-only. Need matching frida-server on phone (17.x with this package).

ParametersJSON Schema
NameRequiredDescriptionDefault
usbOnlyNoDefault true: only USB devices. Set false to include local/socket.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses default behavior and a prerequisite, but lacks details on error cases or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences, front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with few parameters, the description covers purpose, default, and prerequisite. Missing error handling details, but adequate for low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already describes the only parameter. Description adds the prerequisite about frida-server but not significant additional parameter context beyond 'default USB-only'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool lists Frida devices and defaults to USB-only. No sibling tool does the same thing, so it distinguishes itself well.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States prerequisite (frida-server) and default mode, which guides when to use. Does not explicitly state when not to use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

double_tapC

Double-tap (like) at ref or x,y. gapMs default 140. resnapshot default true.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
refNo
gapMsNoDefault 140
resnapshotNoDefault true

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must fully convey behavioral traits. It mentions default values for gapMs (140) and resnapshot (true), but does not disclose side effects, error handling, or behavior when coordinates are invalid. The phrase 'double-tap (like)' hints at a like action but lacks detailed behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with three short sentences. The main action is front-loaded. While it could be more structured (e.g., listing parameters), it avoids unnecessary verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters (none required), no output schema, and moderate complexity, the description is incomplete. It does not specify return values, success criteria, or how x,y and ref interact. The defaults are mentioned, but overall context for a reliable call is lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 40% (only gapMs and resnapshot have descriptions). The description adds meaning by clarifying that 'ref' is an alternative to x,y for location, and restates defaults for gapMs and resnapshot. However, it does not explain the relationship between x,y and ref (e.g., mutually exclusive) or provide constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a 'double-tap (like)' action at a location specified by either ref or x,y coordinates. The verb 'double-tap' and resource implication are specific, but it does not differentiate from sibling tools like 'tap' or 'swipe'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'tap' (single tap) or 'swipe'. The description implies a 'like' action but does not clarify context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dual_pingA

[advanced] Parallel health: app ping + SpringBoard ping at the same time (proves dual inject + concurrent locks).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the parallel execution and the purpose of testing concurrent locks. However, no annotations are provided, and the description does not cover potential side effects, error conditions, or requirements (e.g., device state).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence with no wasted words. Efficiently conveys the purpose and advanced nature.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description covers the essential behavior. The '[advanced]' marker implies caution, but no additional context is needed for such a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema description coverage is 100%. The description adds context about what the tool does beyond the schema, which is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it performs parallel health pings (app + SpringBoard). The phrase 'proves dual inject + concurrent locks' adds specificity, though it is slightly technical. Distinguishes from sibling 'ping' which likely does a single ping.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only an '[advanced]' tag hints at non-standard usage. No explicit when-to-use or when-not-to-use guidance, and no reference to alternatives like the single 'ping' tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dump_modalD

[debug] dumpModalView. BLOCKED on TikTok. Daily probe: do not use.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses almost no behavioral traits. It only mentions being blocked on TikTok and being a daily probe, which warns against use but does not describe any side effects, output, or operational details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but its brevity sacrifices clarity and usefulness. The phrase 'do not use' conflicts with the concept of a usable tool definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description fails to provide sufficient context for the tool's operation. A debug tool should explain what it dumps and under what conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the input schema is fully covered by default. The description adds no parameter information, but according to the rubric, 0 parameters warrant a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description vaguely indicates a debug function ('dumpModalView') but is unclear on what exactly it accomplishes. It labels the tool as blocked and not for use, obscuring its actual purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool; instead, the description explicitly states 'do not use', which is negative guidance without alternatives or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

first_responderA

Current firstResponder info (className/frame/canInsertText). Check focus before type_text.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It accurately describes a read-only inspection tool with no side effects. The information about returned fields (className, frame, canInsertText) is transparent and sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It conveys purpose, behavioral traits, and usage guidance efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no input schema, no annotations, and no output schema, the description covers the essential aspects: what the tool returns and its role in a workflow. It could mention potential error states, but for a simple info retrieval tool, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so schema coverage is 100%. Baseline for 0 parameters is 4. The description adds value by explaining the purpose of the output, which is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves first responder info (className, frame, canInsertText) and explicitly links it to a specific use case: checking focus before typing. This verb+resource specification distinguishes it from sibling action tools like type_text and set_text_at_point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Check focus before type_text' provides explicit when-to-use guidance. It does not mention when not to use or list alternatives, but the context is sufficiently clear given the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

human_pauseA

Random step gap sleep (fleetcontrol human_pause). Not typing delay — use between actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxMsNoDefault 500
minMsNoDefault 200

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description reveals basic behavior (random sleep, min/max parameters) but omits details like blocking nature, interruptibility, or side effects. It adds some value by stating it's not typing delay.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise with two sentences, front-loading the purpose and key usage hint. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two number parameters and no output schema, the description provides adequate context on usage. However, it could mention that it blocks or returns nothing, and lacks a distinction from the similar sibling 'wait'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with basic default descriptions, but the tool description adds no further meaning. The randomness is implicit from the tool purpose but not explicitly linked to parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a random sleep between actions, explicitly distinguishes it from typing delay, and uses specific verbs and resource terms ('random step gap sleep').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using it between actions and clarifies it is not a typing delay, but does not discuss when not to use it or compare with sibling tools like 'wait'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

media_uploadC

[advanced] AFC upload PC file to /DCIM/100APPLE/{IMG|VID}_XXXX.ext. Needs Python + pymobiledevice3. stage=upload on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
localPathYesAbsolute path on this PC
mediaTypeYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It mentions AFC upload but does not explain overwrite behavior, permission requirements, or the meaning of 'stage=upload on failure'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief and mostly to the point, but the cryptic note 'stage=upload on failure' is unclear and could be rephrased or expanded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks information about return values, error handling, and the overall workflow. Given the tool's complexity (AFC upload to iPhone), it is incomplete without output schema or further context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 33% schema description coverage, the description does not add meaning to the parameters. It does not explain mediaType or udid beyond the schema, despite the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it uploads a PC file to a specific iPhone directory via AFC, distinguishing it from higher-level import tools like photos_import. However, the '[advanced]' tag is vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions prerequisites (Python + pymobiledevice3) and a cryptic failure note, but does not specify when to use this tool over alternatives or provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

net_clearB

[advanced] Clear captured network buffer.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates a destructive action ('Clear') but does not disclose side effects, prerequisites, or any behavioral traits beyond the basic operation. With no annotations, the description carries the full burden, and it falls short.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, but borderline under-specified. It communicates the core action but lacks context. The '[advanced]' tag is somewhat informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and no annotations, the description is minimally adequate. It tells what the tool does, but for a destructive action, more context (e.g., confirmation, reversibility) would be expected for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the schema coverage is trivially 100%. The description does not need to add parameter semantics. The baseline score for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Clear' and the resource 'captured network buffer'. It distinguishes from sibling tools like net_disable, net_enable, and net_dump, which have different purposes. However, it could be more specific about what 'captured network buffer' refers to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The '[advanced]' prefix hints at a target audience but does not give explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

net_disableA

[advanced] Stop recording new network entries (buffer retained until net_clear).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the key behavioral trait that the buffer is retained until net_clear, which goes beyond a simple 'stop recording'. However, it does not mention side effects, reversibility, or permissions, which would be helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using only two clauses with no wasted words. The key action and buffer retention behavior are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple toggle tool with no output schema and no annotations, the description covers the essential effect and buffer behavior. It is complete enough for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema is complete. Description adds no parameter info but none is needed. Baseline score for 0-parameter tools is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool stops recording new network entries, with specific verb 'Stop' and resource 'network entries'. It distinguishes from sibling tools like net_clear (which clears buffer) and net_enable (which resumes recording).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes '[advanced]' hinting at target audience, but provides no explicit guidance on when to use this tool vs alternatives like net_clear or net_enable. Usage is implied through the action description but lacks direct exclusions or recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

net_dumpB

[advanced] Quiet HTTP dump. Entries may include stack=nsurl|ttnet, signHeaders, query, backtrace (if signTrace). rawCount=buffer; returned(=count)=entries after filter. Default: redact, DROP data: URLs, FOLD binary, dedupe method+url. RE tip: redact:false dedupe:false query:"tiktokv" or query:"sign_header". Add Phone: query:"phone|bind|mobile|passport|verify".

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries, default 50
queryNoFilter substring on url/method/status
dedupeNoDefault true — keep first entry per method+url
redactNoDefault true. false = raw secrets (never for issues/PRs)
summaryOnlyNoHost aggregation only
includeDataUrlsNoDefault false — drop data:image base64 URLs
includeBinaryBodiesNoDefault false — fold octet-stream / binary previews

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It mentions defaults like redact, dedupe, and dropping data URLs, but it is unclear about side effects, authorization needs, or whether it modifies state. It also omits details about the output format (e.g., rawCount, returned count) that an agent needs to interpret results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively short but dense and somewhat cryptic. It front-loads the purpose but lacks clear structure. There is no wasted content, but it could be better organized for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no output schema, no annotations), the description does not fully equip an agent. It lacks a clear explanation of the output format (rawCount, returned entries) and does not detail how parameters interact. More context on return values and edge cases is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds some value by explaining default behaviors for parameters like redact, dedupe, includeDataUrls, and includeBinaryBodies. However, it does not systematically cover all parameters or add significant meaning beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'Quiet HTTP dump' and details what entries may include (stack, signHeaders, query, backtrace). The name 'net_dump' aligns well. It distinguishes itself from sibling network tools by being a dump tool, though it doesn't explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides specific example queries and tips (e.g., 'redact:false dedupe:false query:tiktokv') and mentions default behaviors. However, it does not explain when to use this tool versus alternatives nor explicitly state prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

net_enableA

[advanced] Start in-process HTTP capture. captureMode: nsurl | ttnet | all (default all). ttnet hooks TikTok TTHttpTaskChromium AFTER request filters (api.tiktokv.com + headers/sign fields). signTrace:true attaches module+offset backtrace on sign_header writes (MetaSec RE). captureResponse wraps TTNet onReadResponseData+setIsCompleted (stable). NSURLSession wrap skipped when TTHttpTaskChromium present. Each call RESETS opts. Typical RE: session_open({captureNet:true, netOptions:{signTrace:true}}) → use app → net_dump / tiktok_sign.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxBodyNoMax body preview bytes, default 4096
signTraceNoAttach compact backtrace on MetaSec sign_header writes
urlFilterNoURL regex; omitted/empty = capture all. Not sticky across enables.
captureModeNonsurl | ttnet | all (default all)
captureResponseNoCapture response bodies. TTNet: onReadResponseData+setIsCompleted. Default false.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description thoroughly discloses behavioral traits: capture modes' hooking behavior, signTrace backtrace attachment, response capture wrapping, NSURLSession skip condition, and opts reset on each call. No annotations were provided, so the description carries full responsibility and meets it well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded with the core purpose. While lengthy, every part adds necessary detail for an advanced tool. It could be slightly more structured, but it remains effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 parameters, no output schema, no annotations), the description is remarkably complete. It covers parameter behavior, mode differences, reset behavior, and even gives a usage flow. No output schema means return values are handled by sibling tools, which is fine.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage with descriptions, but the description adds significant extra meaning: it explains the ttnet mode's hooking timing, the NSURLSession wrap skipping, and the non-sticky nature of urlFilter. This goes beyond schema basics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Start in-process HTTP capture.' It specifies modes (nsurl, ttnet, all) and distinguishes from sibling tools like net_dump and net_disable by focusing on enabling capture.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a typical usage example (session_open with options) and notes that each call resets opts, but it does not explicitly specify when to use this tool versus alternatives or provide context for when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

net_statusB

[advanced] Network capture status: enabled, hooksInstalled, count, options.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions it returns status fields but does not disclose whether it is read-only, has side effects, or requires specific permissions. The word 'status' implies a read operation, but the description lacks explicit behavioral clarity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence) and front-loads '[advanced]' and the key fields. However, it lacks structure and could be formatted as a list or more readable. It is concise but at the expense of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no parameters and no output schema. The description lists the fields but does not explain what they represent or the expected return format. Given the lack of output schema, the description should provide more detail on the return value structure and possible values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the input schema is empty with 100% coverage. The description adds no parameter information, which is acceptable since there are none. Baseline 4 is appropriate as the schema already handles this.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly indicates the tool returns network capture status with specific fields (enabled, hooksInstalled, count, options). The verb is implied (get/retrieve), and it distinguishes from sibling tools like net_enable, net_disable by hinting at status retrieval. However, it could be more explicit about the action (e.g., 'Get network capture status').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes '[advanced]' suggesting it's for advanced users but provides no guidance on when to use this tool vs. alternatives like net_enable or net_disable. No context on prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photos_clearA

[advanced] PhotoKit trash all untrashed image/video (Recently Deleted), verify count=0, optional DCIM source cleanup. needsRetry if leftover.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
clearDcimNoDefault true — also rm AFC upload sources under /DCIM/100APPLE

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool trashes (deletes) media, verifies count=0, and may require retry. However, it does not detail permanence, authorization needs, or side effects (e.g., whether recently deleted items become permanently removable).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with all key information front-loaded. No redundant words; every phrase adds value (advanced, trash, verify, optional cleanup, retry condition).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and destructive nature, the description covers the core behavior, verification step, and retry logic. It does not explain return values or error cases beyond retry, but it is sufficiently complete for an agent to understand the primary function.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (clearDcim described). The description adds meaning by clarifying clearDcim's default true and its role in removing DCIM sources. The udid parameter is not described, but its purpose (device identifier) is standard. Overall, description adds value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool trashes all untrashed image/video from Recently Deleted, verifies count=0, and optionally cleans DCIM source. This is a specific verb+resource combination that distinguishes it from sibling tools like photos_ensure or photos_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies advanced usage and mentions 'needsRetry if leftover,' but does not explicitly state when to use versus alternatives or when not to use. It lacks exclusion criteria or alternative tool recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photos_ensureA

[advanced] Spawn+resume Photos.app (com.apple.mobileslideshow), settle ~4s, inject photos agent. Does not close TikTok/app session. May steal foreground briefly.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
settleMsNoDefault 4000

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and honestly discloses spawn, resume, settle time, injection, foreground stealing, and non-closure of sessions. Missing details like required permissions or error cases, but overall good transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (3 short sentences) with front-loaded action. Every sentence adds value, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main action and side effects but omits return behavior, error conditions, prerequisites (e.g., device state, app existence). Adequate but not fully informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only settleMs described as 'Default 4000'). The description echoes the settle time but adds no meaning for 'udid'. It insufficiently compensates for the missing param documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: spawn/resume Photos.app, settle, inject agent. It also notes what it does not do (close TikTok) and a side effect (steal foreground), making the purpose distinct from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (setup step, not closing sessions) but lacks explicit when-to-use, when-not-to-use, or direct comparison with alternatives like photos_import or photos_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photos_importB

[advanced] PhotoKit import already-on-device file (devicePath or remotePath under /DCIM). Host=Photos.app only. Returns localIdentifier.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
mediaTypeYes
devicePathNo/var/mobile/Media/DCIM/...
remotePathNo/DCIM/100APPLE/...
terminateAfterNoDefault true — kill Photos after import (sqlite friendly)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool imports a file and returns a localIdentifier, and mentions the terminateAfter parameter's effect (killing Photos). However, it omits behavior when paths are invalid, mediaType mismatches, or import fails. No annotations to rely on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that packs essential information: purpose, path constraints, host limitation, and return value. It is concise without being overly brief, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with no output schema and no annotations, the description covers the core mechanism but leaves gaps: no explanation of udid, no error behavior, and no differentiation from the sibling photos_import_file. The return value is mentioned but not the structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 60% schema description coverage, the description adds minimal value beyond the schema. It reiterates path locations but does not clarify the udid parameter, the role of mediaType, or the distinction between devicePath and remotePath. The terminateAfter context is helpful but insufficient to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it imports already-on-device files from specific paths under /DCIM into Photos. The '[advanced]' and 'Host=Photos.app only' qualifiers add precision, but it does not explicitly distinguish from sibling 'photos_import_file' which might have a different scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies that file must be on device under /DCIM and that it targets Photos.app, but provides no guidance on when to use this tool versus alternatives like photos_import_file, nor any prerequisites or error handling scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photos_import_fileA

[advanced] One-shot: AFC upload + Photos ensure + PhotoKit import + optional sqlite verify. Preferred for AI. Needs FRIDA_MCP_PYTHON with pymobiledevice3 (no auto pip). Missing deps → stage=afc in ≤5s. Accepts image or small mp4 (mediaType=video). Video: avoid parallel session_open other apps or expect needsRetry + photos_list.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
verifyNoDefault true — confirm localIdentifier in Photos.sqlite
localPathYesPC file path
mediaTypeYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the multi-step sequence, dependency issues (stage=afc in ≤5s), video constraints (avoid parallel sessions, expect needsRetry), and optional verify. Lacks explicit success/failure return format, but covers key behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with front-loaded '[advanced]' and key info. The structure is somewhat run-on but packs relevant details. Could be split for readability, but every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 params, no output schema, and no annotations, the description covers dependencies, fallback, and constraints. However, it does not explain what the tool returns (e.g., localIdentifier or error), leaving a gap for an agent to infer behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (udid lacks description). The description repeats 'Accepts image or small mp4' (matching mediaType enum) and mentions 'verify' default true, but adds little beyond schema. Does not explain udid or provide format details for localPath. Baseline 3 since schema covers half.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it performs a multi-step import (AFC upload, Photos ensure, PhotoKit import, optional verify) for images or small MP4s. It distinguishes itself from siblings like 'photos_import' by labeling itself as 'advanced' and 'preferred for AI', though the jargon may not be universally clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context on when to use ('preferred for AI'), dependency requirements, fallback behavior on missing deps, and a warning against parallel session_open for video. It does not explicitly contrast with sibling tools like 'photos_import' or 'photos_ensure', but the guidance is actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

photos_listB

[advanced] Pull Photos.sqlite via AFC; list untrashed assets (not Recently Deleted). Optional mediaType=image|video and idPrefix/localIdentifier filter. Default = all untrashed. Needs FRIDA_MCP_PYTHON with pymobiledevice3 (fast-fail stage=afc if missing).

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
idPrefixNoMatch uuid or localIdentifier prefix/substring
mediaTypeNo
localIdentifierNoSame as idPrefix match

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It discloses the mechanism (AFC file access), the data scope (untrashed, not Recently Deleted), and a failure mode (fast-fail if missing library). However, it does not explicitly state read-only behavior or any side effects, and lacks details on permissions or connectivity requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Key information is front-loaded: 'Pull Photos.sqlite via AFC; list untrashed assets'. Optional filters and dependency are mentioned succinctly. Excellent conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 4 parameters and no output schema, the description does not explain what the returned list contains, its format, or any pagination/limits. The output is crucial for a list tool, and its omission leaves a significant gap. While the sibling tools are diverse, the description fails to provide a complete picture for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (2 of 4 parameters have descriptions). The description adds context for mediaType and idPrefix/localIdentifier, stating they are optional filters and specifying 'image|video' for mediaType (though already in schema enum). udid is left undocumented. The additional explanation partially compensates but does not fully cover all parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it pulls Photos.sqlite via AFC and lists untrashed assets, with optional filters. It identifies the specific resource (Photos.sqlite) and action (list), and distinguishes from sibling tools like photos_ensure, photos_import, and photos_clear which perform different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. It mentions prerequisites (FRIDA_MCP_PYTHON, pymobiledevice3) and a fast-fail condition, but does not clarify when listing is appropriate compared to other photo-related tools. Implied usage is vague.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pingB

Agent liveness probe (returns pong). Do not use wrong RPC names as probes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior fully. It states 'returns pong' but doesn't detail side effects, failure conditions, or the implications of using wrong RPC names. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, but the second sentence ('Do not use wrong RPC names as probes') is cryptic and may not earn its place. Concise but not optimally structured for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description is mostly adequate for a simple liveness check. However, it lacks details about expected response format (plain text?) and error cases. The warning hints at problematic usage but doesn't elaborate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%. Description adds no value here, but baseline is 4 as per rubric since it cannot be improved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear that it's a liveness probe returning pong; distinct from sibling tools like dual_ping or session_status. The warning about 'wrong RPC names' adds confusion but doesn't obscure purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes when to use as a liveness probe, but no guidance on when not to use or alternatives like dual_ping or probe_help. The warning is ambiguous and doesn't help select this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

press_homeA

Background current app (suspend) so SpringBoard shows. Session may remain attached to previous app.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given no annotations, the description discloses key behavioral traits: the app is suspended, not terminated, and the session may remain attached. This informs the agent about non-destructive nature and potential session persistence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, concise and front-loaded with the essential action and its effect. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool, the description fully covers the purpose, effect, and important nuance about session attachment. No output schema is needed, and the context is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters and schema coverage is 100%. Per guidelines, baseline is 3 since the description adds no further parameter value, but no additional information is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs 'background' and 'suspend', identifies the resource 'current app', and explains the result 'SpringBoard shows'. It clearly distinguishes from sibling tools like 'sb_close' or 'tap' by describing the home button action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It implies usage for returning to the home screen but offers no guidance on when not to use it or which siblings to prefer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

probe_helpA

Recommended probe loop and which tools to prefer/avoid. Call first in a new session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the tool as providing recommendations, implying a read-only behavior. However, it does not disclose what the output looks like (e.g., text, list) or any other behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that are front-loaded with the main purpose and usage. No unnecessary words. Very concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description is minimal but functional. It tells when and what, but lacks detail on return format or structure. Could be improved by mentioning the kind of output (e.g., 'returns tool recommendations').

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters (schema coverage 100%), so the baseline is 4. The description does not need to add parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'recommended probe loop' and provides guidance on tool preference/avoidance. It also notes to call first in a new session, giving a specific purpose. However, 'probe loop' is not explicitly defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call first in a new session,' which is clear when to use it. It does not mention when not to use it or provide alternatives, but given its unique role, this is acceptable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_listA

[advanced] List device processes (pid, name). query is LITERAL substring only (not regex; SpringBoard ok, a|b is wrong).

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
limitNoMax rows, default 200
queryNoCase-insensitive substring, NOT regex

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that query is a literal substring (not regex) and provides an example. This is useful behavioral context beyond the schema. It does not mention other traits like read-only nature, but that is implied by 'list'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the purpose, and provides a critical constraint immediately. Every part is necessary and no words are wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists output fields (pid, name) and explains query behavior. It lacks details on limit behavior or whether the list is complete, but the schema provides the default limit. For a simple listing tool with no output schema, it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67% (limit and query have descriptions, udid does not). The description adds significant value for the query parameter by clarifying it is a literal substring and not regex, which reduces ambiguity. It does not add info for udid or limit, but the schema already covers limit's default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists device processes with pid and name. The verb 'list' and resource 'device processes' are specific. No sibling tool performs a similar function, so it is well-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes 'advanced' and gives a query constraint but does not explicitly state when to use this tool over alternatives or when not to use it. There is no guidance on conditions that would make this tool inappropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rpc_callC

[debug] Whitelisted agent RPC. Prefer first-class tools + probe_help.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNo
nameYesRPC name e.g. windowFrame

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only labels it as a 'whitelisted agent RPC' without disclosing side effects, permissions required, or what the RPC does. For a debug tool, details about its behavior (e.g., potential system modifications) are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded with the critical guidance to prefer other tools. It efficiently conveys the essential point without fluff, though a bit more structure could clarify usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low specificity (no output schema, no annotations, generic parameters), the description fails to provide sufficient context. It does not explain what the RPC returns, how to use 'args', or what RPC names are valid beyond the example 'windowFrame'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% (name has description, args does not). The description does not add any meaning beyond the schema; it does not explain what 'args' is for or how to format it. The empty items schema for 'args' is unhelpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it is a 'whitelisted agent RPC' and advises to prefer first-class tools and probe_help, which clearly indicates it is a debug/fallback tool. This distinguishes it from sibling tools by positioning it as a last resort.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to prefer other tools ('first-class tools + probe_help'), giving a clear when-to-use guidance. However, it does not specify when exactly to use this tool or what conditions warrant its invocation, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sb_alert_dismissA

Dismiss SB alert. Default policy=deny. all=false: one layer after ~300ms settle (trust cleared; empty → cleared:true rounds:0). Stacked: all=true (loop until clear or maxRounds=5). Returns cleared/remaining/rounds/needsRetry. If needsRetry or cleared=false after settle → re-list or all:true again. Do not parallel tap+dismiss.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoDefault false. true = clear all stacked alerts (idempotent)
policyNoDefault deny
maxRoundsNoOnly with all=true; default 5

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: default policy, settle time, loop mechanics, return values (cleared/remaining/rounds/needsRetry), retry logic, and a warning against parallel tap+dismiss. This is rich and transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main action, but uses dense shorthand (e.g., '~300ms settle', 'trust cleared; empty → cleared:true rounds:0') that could be clearer. Could benefit from slight restructuring for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given high schema coverage and no output schema, the description covers parameters, behavior, return values, and caveats. Mostly complete, but the settle time behavior and 'trust cleared' concept could be elaborated for full clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant extra meaning beyond the schema: explains how 'all' controls single vs stacked mode, default values for policy and maxRounds, and settling mechanics. This adds substantial value for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Dismiss SB alert' and distinguishes between single (all=false) and stacked (all=true) modes. It uses specific verbs and resources, and the purpose is distinct from sibling tools like sb_alert_list or sb_alert_trigger.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context on when to use all=false vs all=true, and includes instructions on retry behavior and a prohibition against parallel actions. Does not compare to alternative tools, but siblings are different actions so this is acceptable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sb_alert_listA

List SpringBoard alerts. Live actionViewCount + actionViewCountRaw (raw may be higher; live can undercount stacks). hasAlert if either count path shows UI. After force: do not trust actionViewCount===1 — use sb_alert_dismiss({all:true}). After dismiss → app screen_snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description explains important behaviors: live count may undercount, raw may be higher, and hasAlert logic based on either count path. It also warns about unreliable state after force operations, which aids safe usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences and includes both primary purpose and critical behavioral warnings. It is reasonably concise with no wasted words, though slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description explains output fields (actionViewCount, actionViewCountRaw, hasAlert) and some behavior, but does not fully describe the return format or what constitutes a SpringBoard alert. Given no output schema, more detail could be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters (0 params, schema coverage 100% but empty schema). The description could not add parameter semantics beyond what the schema already conveys, thus baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists SpringBoard alerts, uses specific verbs ('list'), and distinguishes from sibling tools like sb_alert_trigger, sb_alert_tap, and sb_alert_dismiss by focusing on listing rather than triggering or dismissing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides specific guidance after force operations ('do not trust actionViewCount===1 — use sb_alert_dismiss({all:true})') and after dismiss ('take app screen_snapshot'), but lacks broad guidance on when to use this tool versus alternatives or general use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sb_alert_tapA

[advanced] Tap SpringBoard alert button by title. Then call app screen_snapshot. Do not parallel with dismiss.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesButton title to match

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that it's an advanced action and gives after-use instructions. However, it does not detail side effects, error behavior (e.g., if button not found), or whether it requires specific app state. This is adequate but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of three short sentences. Each sentence adds unique information: the action, a required follow-up, and a parallelism constraint. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter and no output schema, the description covers the core action and provides important context (post-action and parallelism rule). It does not explain error handling or what happens if the title does not match, but for a simple tap action, this is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with the schema describing 'title' as 'Button title to match'. The description adds 'by title', which is redundant. No additional semantic meaning beyond the schema is provided, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it taps a SpringBoard alert button by title. 'Tap SpringBoard alert button' is a specific verb-resource pair. It distinguishes from sibling tools like sb_alert_dismiss and sb_alert_trigger, which perform different actions on alerts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance: call screen_snapshot after tapping, and do not parallel with dismiss. However, it does not explicitly state when to use this tool versus alternatives like sb_alert_dismiss or sb_alert_list. The context is implied but not fully differentiated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sb_alert_triggerA

[advanced] Create a test system alert (SBAlertItemTestRecipe). Default force=false: skip if alert already present (no stack). force:true stacks another. Next: sb_alert_list → sb_alert_dismiss({all:true}) or sb_alert_tap.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoDefault false — do not stack if actionViews/alerts already exist

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes default behavior (skip if alert present) and force parameter (stack another), which is good, but lacks details on permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise: two sentences with front-loaded purpose, minimal wasted words. Efficiently communicates key info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers purpose, parameter behavior, and next steps. Lacks failure scenarios but is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for the single parameter, but description adds nuance (e.g., 'no stack' vs 'stacks another') beyond the schema's 'do not stack', improving agent understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it creates a test system alert (SBAlertItemTestRecipe), distinguishing it from siblings like sb_alert_list (list), sb_alert_dismiss (dismiss), and sb_alert_tap (tap). The '[advanced]' label adds context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage via sibling differentiation and explicit next steps (sb_alert_list → sb_alert_dismiss or sb_alert_tap), but lacks explicit when-not-to-use or alternative conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sb_closeA

Detach SpringBoard Frida session (app session_open stays open).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses the core behavior (detaching) and a key effect (app session stays open). It is transparent enough for a simple parameterless tool, though it could mention any prerequisites or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no extraneous words. It is perfectly sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and a simple action, the description fully covers what the tool does and the key distinction from sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the description does not need to add parameter information. The schema coverage is 100%, earning a baseline of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool detaches a SpringBoard Frida session and specifies that the app session remains open. This distinguishes it from sibling tools like session_close, which presumably closes the app session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to detach SpringBoard while keeping the app session), but it does not explicitly state when not to use it or provide alternatives with specific criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sb_ensureA

[advanced] Attach SpringBoard now without listing alerts. Use to warm dual session; then app tools + sb_* can run in parallel.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description carries full burden. Discloses that it attaches SpringBoard and skips alert listing, but does not mention side effects, permissions, or safety. The 'advanced' tag hints at caution, but more detail would improve transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundant information. Every part adds value: '[advanced]' warns of complexity, 'Attach SpringBoard now without listing alerts' defines the operation, and the rest gives usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, no output schema, and the tool's advanced nature, the description adequately covers purpose and usage. It could mention expected outcomes or whether it is blocking, but it is sufficient for a parameterless tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100%, so the description does not need to add parameter details. Baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool attaches SpringBoard without listing alerts, distinguishing it from sibling tools like sb_alert_list. It also specifies the purpose: to warm a dual session for parallel operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: to warm dual session so app tools and sb_* can run in parallel. It implies this is for advanced setup, but does not explicitly state when not to use or provide alternatives beyond context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_shotA

Pixel screenshot via lockdown ScreenshotService (pymobiledevice3) — NOT Accessibility, not Frida UI dump. Use when texts are sparse / visual layout unclear. Still prefer screen_snapshot for tap refs. Needs FRIDA_MCP_PYTHON + pymobiledevice3 (+ optional Pillow for JPEG). Returns image + meta.

ParametersJSON Schema
NameRequiredDescriptionDefault
udidNo
qualityNoJPEG quality 1-95 when Pillow available, default 70

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It mentions dependencies (pymobiledevice3, optional Pillow) and return type (image+meta), but does not disclose whether the tool is read-only or has side effects. Acceptable for a screenshot tool but could be more detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise single paragraph of ~40 words. Every sentence adds value: purpose, usage guidance, alternative, requirements, return type. No fluff, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Completes most needs: explains purpose, usage, dependencies, and return. Lacks detail on meta return and udid parameter, but overall sufficient for a simple tool with 2 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only quality has description). The tool description adds no additional meaning to parameters; udid is unexplained and quality lacks context beyond schema. Does not compensate for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a pixel screenshot via lockdown ScreenshotService, distinguishing itself from Accessibility and Frida UI dump. It also mentions preferring screen_snapshot for tap refs, differentiating from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (texts sparse/visual layout unclear) and when not to (prefer screen_snapshot for tap refs), providing clear context and an alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_snapshotA

Read screen → generation-scoped refs (g3t8). PRIMARY read tool. Defaults: onScreenOnly=true, limit=40 (token-safe). TikTok: texts only (tree blocked). search= substring by default; a|b auto-enables regex. showDiff=true compares to previous snapshot. Do not parallelize app acts (tap/swipe/type).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoTikTok forced to texts
limitNoMax nodes printed, default 40
searchNoSubstring filter; use searchRegex:true or a|b for regex alternation
showDiffNoSummarize +/− vs previous snapshot
searchRegexNoForce regex (default auto if search contains |)
onScreenOnlyNoDefault true: hide off-screen nodes from output

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden of behavioral disclosure. It discloses the tool is read-only, specifies default behavior (onScreenOnly, limit), a platform restriction (TikTok blocks tree mode), search semantics, diff functionality, and a parallelism constraint. This is exhaustive for the given complexity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: four short sentences, each serving a distinct purpose (purpose, defaults, TikTok constraint, search behavior, diff, warning). It is front-loaded with the primary action and immediately provides differentiating context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and no output schema, the description covers defaults, platform constraints, search variants, diff, and a parallelism restriction. It lacks explicit mention of error handling or return format, but the combination of schema descriptions and tool description is sufficient for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% already, so baseline is 3. The description adds value by clarifying default values (onScreenOnly=true, limit=40), the auto-enable of regex when search contains '|', and the purpose of showDiff. It does not repeat schema descriptions but augments them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads the screen and returns generation-scoped refs, positioning it as the 'PRIMARY read tool.' This distinguishes it from sibling tools like screen_window, screen_search, and screen_shot, which are alternative read tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use and when-not-to-use guidance: it covers default parameter values, TikTok constraints (forced texts mode), search behavior (substring vs regex), comparison feature (showDiff), and a critical warning not to parallelize app acts. This leaves little ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_windowA

Key window size: {width,height,x,y,cx,cy,className}. Safe on TikTok.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the output fields (width, height, x, y, cx, cy, className) and states it is 'safe on TikTok', implying no destructive side effects. This adds useful behavioral context beyond the empty schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: one sentence with key information. However, it could be slightly clearer with a verb, but it earns its place without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and no output schema, the description is somewhat complete for a simple retrieval tool. However, it lacks an action verb and does not explain what the tool actually does (e.g., 'reads the current window size'). The safety hint is helpful but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so baseline is 4. The description does not need to explain parameters but instead describes the output. It adds meaning by listing the fields that the tool returns, which is helpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description implies the tool retrieves window size but lacks an explicit verb like 'get' or 'retrieve'. The fields listed hint at the output, but the purpose is not fully stated. It distinguishes from siblings like screen_snapshot or screen_search by focusing on dimensions, but not explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided. The phrase 'Safe on TikTok' hints at a safety condition but does not clarify when to prefer this tool over alternatives like screen_snapshot or tap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_closeA

Close app session. Default also closes SpringBoard and clears Photos side channel (photosAlive). closeSpringBoard=false keeps SB; closePhotos=false keeps Photos.

ParametersJSON Schema
NameRequiredDescriptionDefault
closePhotosNoDefault true. false = leave Photos.app channel alive.
closeSpringBoardNoDefault true. false = keep SpringBoard for later (intentional, not an error).

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It explains default closing of SpringBoard and Photos side channel, and how parameters modify behavior. However, it does not disclose potential side effects like data loss or session state after closing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single, front-loaded sentence that efficiently conveys the core behavior and parameter effects without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers basic behavior and parameter effects, it omits prerequisites (e.g., session must be open), error conditions, return values, and whether the tool is destructive. Given no output schema, more context would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%—both parameters already have descriptions. The description reiterates defaults without adding new information beyond the schema, so it provides minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Close app session' with specific verb and resource, and lists default behaviors. However, it does not distinguish from sibling session tools like session_respawn or session_force_unlock, which would help an agent choose correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as session_respawn or session_force_unlock. The description implies closing a session, but lacks context about appropriate scenarios or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_force_unlockA

Emergency: reset stuck locks, detach sessions, kill in-flight/last app pid. Use when orphanFridaOpPossible or open hangs. Then ONE session_open.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It describes destructive actions (kill pids, detach sessions) but could be more specific about side effects. However, for an emergency tool, the level of detail is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. Front-loaded with purpose, then usage, then guidance. Exceptionally concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description covers purpose, usage conditions, and a follow-up action. It is complete and sufficient for an agent to understand and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters, so schema coverage is 100% trivially. Description does not need to add parameter info. Baseline 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is an emergency tool to 'reset stuck locks, detach sessions, kill in-flight/last app pid'. It specifies the resource (stuck locks/sessions/pids) and verb (force_unlock), differentiating it from sibling tools like session_open or session_close.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage conditions: 'Use when orphanFridaOpPossible or open hangs.' It also provides a follow-up action: 'Then ONE session_open.' This gives clear guidance on when to use and what to do next.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_openA

Open long-lived Frida session (spawn-only on this stack). ALWAYS uses mode=spawn: kill → spawn suspended → inject agent → resume. mode=attach is ignored/forced to spawn unless FRIDA_MCP_ALLOW_ATTACH=1 (unreliable: touch/net). TikTok: after open, wait 3–5s before screen_snapshot. Never dump_tree/find_view. spawn restarts the process (login UI state may reset). captureNet=true installs NSURLSession + TTNet hooks before resume (launch traffic). withSpringBoard=true attaches SpringBoard in parallel (dual inject; App+SB concurrent RPCs).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoIgnored: always spawn unless FRIDA_MCP_ALLOW_ATTACH=1
udidNo
bundleIdYesApp bundle id, e.g. com.ss.iphone.ugc.Ame
captureNetNoIf true, enable NSURLSession+TTNet capture before resume (spawn)
netOptionsNo
withSpringBoardNoAttach SpringBoard in parallel with app open (dual session)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behaviors: spawn lifecycle (kill→spawn suspended→inject→resume), mode override, net capture hooks, SpringBoard dual injection, process restart, and login UI reset. Also notes unreliability of attach mode.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with core purpose and every sentence adds value. Minor redundancy in repeating spawn mechanism, but overall efficient and well-structured for a complex tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key aspects: spawn behavior, network capture, SpringBoard injection, timing for TikTok, and sibling differentiation. Lacks explanation of return value (e.g., session handle), but practical completeness is high given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds significant meaning beyond schema: explains mode is ignored unless env var, captureNet installs specific hooks, withSpringBoard attaches in parallel, and netOptions details. Schema coverage is 67%, but description compensates fully for gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Open long-lived Frida session (spawn-only on this stack)', specifying the action and resource. It distinguishes from sibling tools like session_respawn and session_close by detailing the spawn mechanism and constraints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: always uses spawn mode, attach only with env var, TikTok-specific instructions (wait, avoid dump_tree/find_view), and explains spawn restarts process resetting login UI. Offers clear when-to-use and when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_respawnA

Force spawn+inject+resume for current bundle. Kills the app process. Prefer only when session is dead.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully bears the burden of disclosure. It states 'Kills the app process,' a critical destructive behavior, and describes the forceful nature of the operation. This is highly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loads the action, and contains zero filler. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description provides all necessary context: what it does, when to use it, and a key behavioral trait (kills app). No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the baseline is 4 per scoring rules. The description adds no parameter information because none exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Force spawn+inject+resume for current bundle' and immediately distinguishes it from siblings like session_open or session_close by specifying a forceful operation that kills the app process.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Prefer only when session is dead.' This tells the agent exactly when to use this tool, though it does not explicitly list alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_statusB

Session health: alive, refsValid/hasSnapshot, lastSnapshotGeneration, openInFlight, appLockBusy/waiters, recovery[].

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It lists returned fields but does not explicitly state that the tool is read-only and has no side effects. The word 'health' implies a query, but without confirmation, an agent might not be sure if it triggers any state changes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise line listing all relevant fields. It contains no unnecessary words and is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description is the only source for return format. It lists fields but lacks data types, structure description, or an example. For a health-check tool, it is somewhat complete but could be more helpful for agents to parse the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100% (trivially). The description does not need to elaborate on parameters since none exist. No extra value is needed, but the description could clarify that no inputs are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns session health with specific fields like alive, refsValid, lastSnapshotGeneration. It distinguishes from sibling tools (e.g., session_open, session_close) which modify state, so purpose is clear: read-only status check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. While it's implied for checking health before actions, the description does not mention when it is appropriate, when not to use it, or how it differs from other status-like tools (e.g., probe_help).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_otpA

Fill TikTok OTP (TMVerificationCodeInputView / TUXPinField). Pass full code string e.g. 123456.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesOTP digits
sourceNoDebug tag, default mcp

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says 'Fill' without disclosing side effects, prerequisites (e.g., being on the OTP screen), or whether it clears existing text. Minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It immediately states the core action and target, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple UI-filling tool with two parameters and no output schema, the description is adequate but lacks context about preconditions (e.g., requiring the OTP screen to be visible) and any return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds value with an example ('Pass full code string e.g. 123456') and specifies the target UI elements, going beyond the schema's 'OTP digits' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Fill TikTok OTP'), specifies the target UI elements ('TMVerificationCodeInputView / TUXPinField'), and gives an example input. It differentiates from sibling tools that handle generic text input or other actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for TikTok OTP fields but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives from the sibling list like 'type_text' for general text entry.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_text_at_pointB

[debug] setText at point — NOT 拟人. Prefer type_text / smart_type_text. Prefer first-class tools for daily probes.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
refNo
textYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It only labels the tool as debug but does not explain side effects, permissions, or reliability. The agent learns little about what happens during invocation beyond setting text at a point.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded with the debug label and alternative recommendations. However, it lacks structure and omits necessary parameter details, which slightly reduces efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, 4 parameters (0% schema coverage), and a very brief description, the tool definition is incomplete. It fails to explain what the tool returns, how coordinates work, or what 'ref' is for.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no information about the parameters (x, y, ref, text). The agent cannot infer the meaning or expected format of these fields from the text alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'setText at point' and labels it as a debug tool, clearly indicating its purpose. It also distinguishes from sibling tools by explicitly recommending type_text / smart_type_text instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises against using this tool for daily probes and provides clear alternatives: 'Prefer type_text / smart_type_text.' This helps the agent decide when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

smart_type_textA

PREFERRED typing: tap real input (ref|x,y) → wait typable FR → 拟人逐字. Rejects chrome/chips (好友/有什麼好事). TikTok AWESearchBar may canInsertText=false but still types. Prefer wide search-bar [input]; avoid hot-search chips. retryOnFail default false. resnapshot default true.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
refNoReal text field ref only
textYes
resnapshotNoDefault true
retryOnFailNoDefault false — avoid kill-session retry storms
perCharDelayMsNoDefault 90
waitKeyboardMsNoDefault 2000

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description reveals key behaviors: taps, waits for keyboard, types character by character (拟人逐字), handles TikTok AWESearchBar quirks, and defaults for retryOnFail and resnapshot. It does not disclose side effects or full error handling but covers the main behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is poorly structured, starting with jargon ('PREFERRED typing: tap real input → wait typable FR → 拟人逐字') and mixing multiple ideas without clear organization. It is not front-loaded and could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and no output schema, the description lacks information about return values, failure behavior, and full parameter details. It does not compensate for the missing output schema, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 63%. The description adds meaning for ref/x/y (specifying input location) and clarifies defaults for retryOnFail and resnapshot. However, parameters like perCharDelayMs and waitKeyboardMs are not explained beyond the schema, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a typing tool for real input fields, distinguishing it from siblings by specifying it rejects chrome/chips and prefers wide search bars. The verb 'type' and resource 'real input' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use this tool (preferred typing, tap real input) and what to avoid (chrome/chips, hot-search chips). However, it does not explicitly state when not to use it or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

swipeA

Swipe direction or path. Prefer durationMs (e.g. 280). Agent uses seconds; duration>10 is treated as ms (avoids 280→280s lock traps). Clamped ~0.15–2.5s. resnapshot default true (feed browse: set false then one snapshot).

ParametersJSON Schema
NameRequiredDescriptionDefault
x0No
x1No
y0No
y1No
durationNoSeconds if ≤10; values >10 treated as ms. Prefer durationMs.
directionNo
durationMsNoPreferred: milliseconds, e.g. 280 → ~0.28s
resnapshotNoDefault true

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses key behaviors: duration conversion logic (seconds vs ms), clamping (0.15–2.5s), and resnapshot default. Does not mention destructiveness or side effects, but sufficient for a gesture tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise; 5 sentences covering purpose, preference, mechanism, clamping, and a use case. No redundant information, front-loaded with clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters and no output schema, the description covers the critical behavioral aspects (duration, resnapshot, use case). Could mention return value or effect on screen, but sufficient for a gesture tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 38% (duration, durationMs, resnapshot have descriptions). The description adds clarity: 'Prefer durationMs (e.g. 280)' and explains the duration handling logic, which goes beyond schema. Other parameters like coordinates are not elaborated, but the main ones are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Swipe direction or path', which specifies the verb and resource. It distinguishes itself from sibling tools like tap and double_tap by implying a continuous gesture.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on preferring durationMs, handling of duration in seconds vs ms, and a specific use case for resnapshot. However, it lacks explicit comparisons to alternatives like tap or when not to use swipe.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tapA

Tap by ref (gNtM) or x,y. Default resnapshot=true returns new screen_snapshot in result.snapshot. Set resnapshot=false only when chaining many acts then one snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
refNoe.g. g2t3 from latest snapshot
resnapshotNoDefault true: auto screen_snapshot after tap

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explicitly states the default side-effect of capturing a screen_snapshot and how to suppress it. This is a key behavioral trait that an agent needs to know. However, it doesn't mention other potential side effects or error conditions, so a 4 is given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two clear sentences. The first states the core action and input methods, the second provides important usage guidance. No redundant information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tap action, the description covers the essential aspects: input methods, resnapshot behavior, and results. It lacks information about handling conflicting inputs (e.g., both ref and x,y) or error cases, but the tool is straightforward and the context is well-covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only ref and resnapshot have descriptions). The description adds meaning by explaining that tap uses either ref or x,y, and clarifies resnapshot's purpose. However, x and y parameters remain without additional explanation beyond the schema type. Baseline 3 is appropriate as the description partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs a tap using a reference (ref) or coordinates (x,y). It also explains the resnapshot behavior. While it distinguishes from sibling tools implicitly by name, it does not explicitly differentiate from similar gestures like double_tap or swipe, so a 4 is appropriate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to set resnapshot=false ('only when chaining many acts then one snapshot'), but does not offer broader usage recommendations or when to prefer this tool over alternatives like click or double_tap. The guidance is moderate but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_imB

[advanced] In-process TikTok IM network runtime. action: status | conversations | inbox | send_text | messages | open_chat | peer_conversation | phone_status. inbox refreshes normal chats and Message Requests/notification pages without UI navigation; returns username + newest content. send_text defaults dryRun:true. With dryRun:false, transport defaults to the real chat composer and succeeds only after the exact text is re-read from live message models. messages: peer nickname/content/time (best-effort). open_chat: open message VC. peer_conversation: build id from peerUid.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoMessage text for send_text
limitNoconversations/inbox/messages limit
actionYesIM action
dryRunNoDefault true — do not send unless false
peerUidNoPeer uid you can message (mutual follow). Used by peer_conversation / send_text
timeoutMsNoinbox/conversations network refresh wait; default 1800, max 5000
transportNosend_text only: network/composer re-reads exact text (default); sdk is disabled because it created blank bubbles
onlyUnreadNoinbox only: omit seen or self-sent latest messages
conversationIdNoConversation id for send_text/messages/open_chat (or use peerUid)
confirmTimeoutMsNosend_text exact-text re-read timeout; default 15000, max 30000

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description discloses key behaviors: dryRun default, transport behavior for send_text, best-effort for messages, and how peer_conversation builds IDs. Since no annotations exist, it provides essential transparency. Lacks details on potential side effects or error states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is lengthy and dense with technical jargon like 'composer re-reads exact text'. Not front-loaded; key purposes are buried. Could be more structured with bullet points or clearer separation of actions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 10 parameters and no output schema, the description omits details for some actions (e.g., what 'status' or 'phone_status' return). Partially explains inbox and messages returns but not comprehensively. Incomplete for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions. The description adds value by explaining dryRun default, transport defaults, and peerUid requirement (mutual follow). But much of the description restates schema info. Baseline 3 with marginal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly enumerates actions (status, conversations, etc.) and states it's an IM network runtime. It distinguishes from sibling tools by focusing on IM functionality. However, the purpose is somewhat buried in technical phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context for some actions (e.g., inbox refreshes without UI navigation, send_text defaults to dryRun). No explicit when-not-to-use or alternatives mentioned, but the tool is the only IM tool among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_inboxA

[advanced] Refresh TikTok Inbox plus Message Requests/notification entries without UI navigation. Returns username, content, conversationId, peerUid, and isMessageRequest.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum inbox entries, default 20
timeoutMsNoNetwork refresh wait, default 1800, max 5000
onlyUnreadNoExclude seen or self-sent latest messages

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided. The description indicates a 'refresh' action but does not clarify if it is read-only or has side effects (e.g., marking messages as read). It lacks details on authentication requirements, destructive potential, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose, key benefit (no UI navigation), and return data. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description reasonably covers return fields. However, it lacks contextual details like prerequisites (e.g., user must be logged in), when to use this vs siblings, or behavior of parameters beyond what schema provides.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description does not add parameter-specific details beyond the schema's descriptions. It mentions return fields but not parameter usage, so it meets the baseline for a fully described schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it refreshes TikTok inbox, message requests, and notification entries without UI navigation. It specifies the returned fields (username, content, conversationId, peerUid, isMessageRequest), distinguishing it from sibling tools like tiktok_reply or tiktok_im.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for reading inbox contents without UI navigation, but it does not explicitly state when to use it over alternatives like tiktok_reply or tiktok_im. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_postsC

[advanced] List current user's posts via in-process TTNet (App MetaSec signs). Returns awemeId, desc, createTime, shareUrl, stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOverride endpoint (default api.tiktokv.com/aweme/v1/aweme/post/)
countNoPage size, default 12
cursorNomax_cursor, default 0
userIdNoOverride user_id if auto-detect fails

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should fully disclose behavior. It hints at authentication ('App MetaSec signs') but lacks details on pagination behavior, error states, rate limits, or what 'advanced' implies. The description is insufficient for an agent to understand side effects or requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (27 words) and front-loaded with the action. However, jargon like 'in-process TTNet' and 'App MetaSec signs' may reduce clarity for some agents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is incomplete. It mentions return fields but does not explain pagination parameters (cursor, count), how to handle errors, or prerequisites like being logged in. Essential context is missing for a list operation with pagination.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All four parameters have schema descriptions (100% coverage), so baseline is 3. The description does not add significant semantic value beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List current user's posts'), the method ('via in-process TTNet (App MetaSec signs)'), and return fields. It is specific about resource and scope, but does not explicitly differentiate from sibling tools like tiktok_inbox.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor any instructions on prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_replyB

[advanced] Reply through TikTok's real chat composer. With dryRun:false, opens the chat, types into ChatInputTextView, taps 傳送, and succeeds only after the exact text is re-read from live message models.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesReply text
dryRunNoDefault true — set false to send a real reply
peerUidNoFallback for Message Requests without a conversationId
conversationIdNoConversation returned by tiktok_inbox
confirmTimeoutMsNoExact-text re-read timeout; default 15000, max 30000

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses the tool's operational flow: opens chat, types, taps send, and verifies by re-reading text. It mentions the dryRun flag to control destructive behavior. However, it does not explicitly state that sending a real reply is irreversible, nor does it cover potential side effects or failure modes (e.g., what happens if the chat is not open).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the tool's purpose, the second details its behavior. It is compact, front-loaded, and every word adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and an output schema, the description should cover return values, error handling, and prerequisites. It mentions success criteria (re-reading exact text) but omits what the tool returns on success or failure, required preconditions (e.g., being in conversation), and potential errors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are individually documented. The description adds contextual value for the dryRun parameter and explains the overall process, but it does not deepen understanding of other parameters like peerUid or confirmTimeoutMs beyond their schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool is for replying through TikTok's real chat composer, specifying a verb ('Reply') and a resource. It implies uniqueness by mentioning 'real chat composer' but does not explicitly distinguish it from sibling tools like tiktok_im or tiktok_inbox.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., tiktok_im, tiktok_inbox). It focuses on the internal mechanism (dryRun, chat composer) but lacks context about prerequisites or tool selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_signB

[advanced] MetaSec sign observability (NOT offline Argus recompute). action: last | enable_trace. last → recent sign_header / signHeaders entries (x-security-argus, x-Tt-Token, …). enable_trace → net_enable({signTrace:true, captureMode:ttnet}). Prefer session_open captureNet+signTrace.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoFor action=last, default 20
actionNoDefault last

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It explains that 'enable_trace' modifies net_enable settings, implying a side effect (mutation), while 'last' is read-only. However, it does not explicitly state whether 'last' is idempotent, whether 'enable_trace' is reversible, or any permission or rate-limit constraints. The description only hints at behavior without full disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short at around 50 words, but it packs in the essential information: purpose, actions, and a preference hint. However, the structure is somewhat run-on and uses jargon ('MetaSec', 'Argus', 'captureNet+signTrace') that might impede readability. A bulleted list would improve clarity without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has two very different actions and no output schema, the description should explain the return format for 'last' more precisely (e.g., the structure of sign headers entries) and specify the side effects of 'enable_trace' (e.g., whether it persists or is temporary). Currently, it only gives examples of header names and mentions net_enable parameters, leaving gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers both parameters with descriptions (limit default 20, action enum). The description adds semantic value by explaining the behavior of each action value ('last' returns recent sign headers, 'enable_trace' configures net_enable). This helps the agent understand the effect of each parameter choice beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool provides 'MetaSec sign observability' with two specific actions: retrieving recent sign headers ('last') and enabling sign trace ('enable_trace'). It also notes it is 'NOT offline Argus recompute', which distinguishes from a similar but different operation. However, the term 'MetaSec sign' may be unclear without domain knowledge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests preferring 'session_open' for captureNet+signTrace, indicating an alternative for combined functionality. It also warns against using it for 'offline Argus recompute'. However, it lacks explicit guidance on when to use this tool versus other siblings like net_enable or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

type_textA

拟人逐字 into ALREADY-FOCUSED field (TypeTextAction). Default perCharDelayMs=90 + jitter. If field not focused → use smart_type_text instead. resnapshot default true.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to type (CJK/Emoji OK)
resnapshotNoDefault true
perCharDelayMsNoDefault 90

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses default delay with jitter and resnapshot default true, but does not mention side effects, error behavior, or whether the tool is read-only or mutating. Some transparency but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose and includes key defaults and conditional guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and moderate complexity, the description covers purpose, usage, and key behavior. However, it lacks details on return values, error conditions, or completion semantics, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all three parameters, but description adds the concept of jitter for perCharDelayMs beyond schema, and clarifies defaults. This provides extra meaning beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool types text into an already-focused field with human-like delay, and distinguishes it from smart_type_text for un-focused fields. The verb 'type' is implied and supported by the context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool (field focused) and when to use an alternative (smart_type_text if field not focused), providing clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

waitA

Sleep N milliseconds. Prefer wait_until_texts after TikTok session_open instead of blind wait.

ParametersJSON Schema
NameRequiredDescriptionDefault
msYesmilliseconds

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. It says 'Sleep N milliseconds', which is straightforward, but doesn't detail blocking nature or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with a usage recommendation. No wasted words, front-loaded purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delay tool, description sufficiently explains its function and provides context for alternative usage. No output schema needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with parameter 'ms' described as 'milliseconds'. Description adds no extra meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Sleep N milliseconds', which is a specific verb and resource. It also distinguishes from sibling tool 'wait_until_texts' by giving a usage preference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Prefer wait_until_texts after TikTok session_open instead of blind wait', providing when-not-to-use and alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_until_textsA

Poll screen_snapshot until on-screen text matches pattern or preset (or timeout). TikTok: prefer preset "tiktok_feed" (EN/ZH-Hant/ZH-Hans/JA/KO) — do not hardcode one language. Custom pattern still allowed for page-specific probes.

ParametersJSON Schema
NameRequiredDescriptionDefault
presetNoBuilt-in multi-locale set, e.g. "tiktok_feed"
patternNoCustom text; "|" auto-regex. Prefer preset for TikTok land.
timeoutMsNoDefault 15000
intervalMsNoPoll interval, default 800
searchRegexNoForce regex; default auto when pattern contains |
onScreenOnlyNoDefault true

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Discloses polling behavior, default timeout (15000), interval (800), and auto-regex for '|'. No side effects mentioned but not expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero wasted words. First sentence defines purpose, second gives critical guidance. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters and no output schema, description covers polling behavior, defaults, and critical use-case (TikTok). Could mention when to use alternative tools like 'screen_search', but still complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage, but description adds context: default values (timeoutMs=15000, intervalMs=800), preset concept, and auto-regex for pattern. Enhances understanding beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states it polls screen_snapshot until text matches pattern or preset, with specific TikTok guidance. Verb 'poll' and resource 'screen_snapshot' clearly define action. Distinguishes from siblings like 'wait'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prefers preset for TikTok and warns against hardcoding language. Mentions custom pattern for page-specific probes. No exclusion of when not to use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 53 tool updatesv0.1.0
    • First observedapp_list
    • First observedclear_text
    • First observeddevice_list
    • First observeddouble_tap
    • First observeddual_ping
    • First observeddump_modal
    • First observedfirst_responder
    • First observedhuman_pause
    • First observedmedia_upload
    • First observednet_clear
    • First observednet_disable
    • First observednet_dump
    • First observednet_enable
    • First observednet_status
    • First observedphotos_clear
    • First observedphotos_ensure
    • First observedphotos_import
    • First observedphotos_import_file
    • First observedphotos_list
    • First observedping
    • First observedpress_home
    • First observedprobe_help
    • First observedprocess_list
    • First observedrpc_call
    • First observedsb_alert_dismiss
    • First observedsb_alert_list
    • First observedsb_alert_tap
    • First observedsb_alert_trigger
    • First observedsb_close
    • First observedsb_ensure
    • First observedscreen_search
    • First observedscreen_shot
    • First observedscreen_snapshot
    • First observedscreen_window
    • First observedsession_close
    • First observedsession_force_unlock
    • First observedsession_open
    • First observedsession_respawn
    • First observedsession_status
    • First observedset_otp
    • First observedset_text_at_point
    • First observedsmart_type_text
    • First observedswipe
    • First observedtap
    • First observedtiktok_im
    • First observedtiktok_inbox
    • First observedtiktok_open_search
    • First observedtiktok_posts
    • First observedtiktok_reply
    • First observedtiktok_sign
    • First observedtype_text
    • First observedwait
    • First observedwait_until_texts

TDQS

B3.2/5.0

Scored across 53 tools

Disambiguation5/5

Tools are highly specific with detailed descriptions, making each one clearly distinct. Even overlapping areas like typing (type_text vs smart_type_text) are well-differentiated.

Naming Consistency4/5

Most tools follow a consistent snake_case convention, but there are minor inconsistencies like screen_snapshot vs screen_shot and verb_noun vs noun_verb order. Prefixes for subdomains (tiktok_, sb_, photos_) aid clarity.

Tool Count3/5

With 53 tools, the set is extensive and covers a broad domain, but the count is high compared to typical MCP servers. While many are advanced or debug-specific, it still feels heavy for a single server.

Completeness4/5

The tool set covers device management, session handling, UI interaction, network capture, and TikTok-specific features, leaving few obvious gaps. Advanced tools add depth for power users.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP-compliant server that enables AI systems to interact with mobile and desktop applications through Frida's dynamic instrumentation capabilities, allowing for process management, device control, JavaScript execution, and script injection.
    429
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    A comprehensive MCP server for Frida dynamic instrumentation, enabling AI agents to manage devices, processes, scripts, memory, and ADB operations.
    39
    30
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    A Frida MCP server for authorized dynamic analysis and application security research, exposing device/session management, script injection, process and memory inspection, and platform-specific workflows.
    100
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that wraps the Frida dynamic instrumentation toolkit, allowing users to attach to processes, hook functions, enumerate modules and exports, and manage scripts through natural language.
    10
    1
    MIT