MiniApp CDP MCP
MiniApp CDP MCP
English | 한국어
위챗 미니프로그램 리버스 엔지니어링 MCP 서버입니다. AI 코딩 어시스턴트(Claude, Cursor, Antigravity 등)가 Chrome DevTools Protocol(CDP)을 통해 위챗 미니프로그램(위챗 개발자 도구 또는 PC 버전 위챗 미니프로그램 포함)의 JavaScript 코드를 직접 디버깅하고 분석할 수 있게 합니다.
주요 기능
다중 대상 디버깅:
AppService(로직 계층)와WebView(렌더링 계층) 대상 간의 원활한 전환 지원네트워크 가로채기: 미니프로그램에서 발생하는 XHR/Fetch 요청 캡처, 모니터링 및 필터링
중단점 디버깅: 코드 중단점 및 XHR 중단점 설정/제거, 난독화된 코드 내 정확한 위치 지정 지원
실행 제어: 실행 일시 중지/재개, 단계별 디버깅(over/into/out) 및 소스 코드 컨텍스트 반환
스크립트 분석: 로드된 모든 JS 스크립트 나열, 코드 검색, 소스 코드 가져오기/저장
런타임 검사: 중단점에서 표현식 평가, 호출 스택 및 스코프 변수 검사
WebSocket 분석: WebSocket 연결 및 메시지 패턴 모니터링
Related MCP server: MCP JS Debugger
시스템 요구 사항
Python 3.11 이상
uv (필수, 초고속 Python 패키지 및 환경 관리자)
실행 중인 위챗 개발자 도구(디버깅 포트 활성화 필요) 또는 PC 버전 위챗 미니프로그램(원격 디버깅 메커니즘 활성화)
사전 준비 1: 미니프로그램 디버깅 포트 활성화
이 MCP를 사용하기 전에 주입 도구를 통해 위챗 미니프로그램의 CDP 디버깅 포트를 노출해야 합니다. 운영 체제와 위챗 버전에 따라 다음 오픈 소스 도구 중 하나를 선택하여 Hook 및 포트 노출(일반적으로 62000 포트)을 완료하십시오:
WMPFDebugger-arm (macOS ARM 아키텍처용)
사전 준비 2: uv 설치
본 프로젝트는 uvx를 통해 제로 구성 "즉시 사용 가능" 환경을 구현합니다. 아직 uv를 설치하지 않았다면 시스템에 따라 다음 명령어를 실행하여 설치하십시오:
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | shWindows:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"빠른 시작 (uvx 제로 설치)
코드를 로컬로 복제할 필요 없이 uv의 기능을 직접 활용하여 AI 어시스턴트의 MCP 구성 파일에 추가할 수 있습니다:
{
"mcpServers": {
"miniapp-cdp": {
"command": "uvx",
"args": ["--from", "miniapp-cdp", "miniapp-cdp-mcp"]
}
}
}Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json을 수정하여 위 설정을 추가하십시오.
Cursor
Cursor Settings -> Features -> MCP -> Add new MCP server로 이동:
Type:
commandName:
miniapp-cdpCommand:
uvx --from miniapp-cdp miniapp-cdp-mcp
로컬 설치 (선택 사항)
로컬에서 수정하거나 개발하려는 경우:
git clone https://github.com/yourusername/miniapp-cdp-py.git
cd miniapp-cdp-py
uv sync그런 다음 MCP 구성에서 로컬 실행 방식을 사용하십시오:
{
"mcpServers": {
"miniapp-cdp": {
"command": "uv",
"args": ["run", "run_mcp_server.py"],
"cwd": "/你的路径/miniapp-cdp-py"
}
}
}도구 목록
대상 및 컨텍스트 관리
도구 | 설명 |
| 디버거에서 사용 가능한 모든 대상(AppService 스레드, WebView 스레드 등) 나열 |
| 디버깅 컨텍스트 전환을 위해 CDP 연결을 다른 대상 스레드로 전환 |
네트워크 및 WebSocket
도구 | 설명 |
| 미니프로그램 네트워크 요청 나열(페이지네이션 지원) 또는 단일 상세 정보 가져오기 |
| 네트워크 요청을 시작한 JavaScript 호출 스택 가져오기 |
| 네트워크 요청의 전체 응답 본문 가져오기 |
| WebSocket 연결 나열 또는 특정 연결의 메시지 상세 정보 가져오기 |
스크립트 분석
도구 | 설명 |
| 현재 페이지에 로드된 모든 JavaScript 스크립트 나열 |
| 스크립트 소스 코드 조각 가져오기(행 범위 또는 문자 오프셋 지원) |
| 전체 스크립트 소스 코드를 로컬 파일로 저장(전체 패키지 또는 핵심 보안 코드 추출용) |
| 모든 스크립트에서 문자열 또는 정규식 검색 |
중단점 및 실행 제어
도구 | 설명 |
| 코드 텍스트 검색을 통해 자동으로 중단점 설정(익명 함수 선언에 직접 중단점 설정 금지) |
| URL 패턴에 따라 XHR/Fetch 중단점 설정 |
| 지정된 중단점 제거 또는 |
| 모든 활성 중단점 나열 |
| 일시 중지 상태, 호출 스택 및 스코프 변수 가져오기 |
| 중단점 해제 및 코드 실행 재개 |
| 단계별 디버깅(over/into/out), 위치 및 소스 코드 컨텍스트 반환 |
검사 도구
도구 | 설명 |
| 현재 컨텍스트에서 JavaScript 표현식 실행(중단점 일시 중지 시 실행 지원) |
사용 예시
미니프로그램 리버스 엔지니어링 기본 프로세스
연결 및 대상 전환
列出所有小程序目标,并切换到 AppService (逻辑层) 线程대상 함수 및 코드 찾기
在所有脚本中搜索包含 "encrypt" 的代码,并获取相关脚本的上下文源码중단점 설정
在加密函数的具体执行语句(如 return 处)设置断点트리거 및 분석
在小程序上点击触发网络请求,断点命中后,检查参数、调用栈以及密钥的生成逻辑네트워크 요청 가로채기 및 분석
抓取最新发出的网络请求列表,并找出特定的加密请求(如带有 mina_edata 参数的请求),
随后获取该请求的发起者调用栈 (Initiator) 定位加密入口。실전 사례
프로젝트의 examples/ 디렉토리에는 본 도구를 활용하여 리버스 엔지니어링한 실전 스크립트(예: vipshop_decrypt_demo.py)가 포함되어 있습니다. 이를 통해 MCP를 사용하여 미니프로그램의 복잡한 다층 암호화 알고리즘을 분석하고 Python에서 완벽하게 복원하는 방법을 보여줍니다.
보안 주의사항
이 도구는 미니프로그램의 하위 실행 컨텍스트를 MCP 클라이언트에 노출하여 애플리케이션 메모리의 모든 데이터를 검사, 디버깅 및 수정할 수 있게 합니다. 이 도구를 불법적인 용도로 사용하지 마십시오. 개인 학습, 보안 연구 및 합법적으로 승인된 리버스 엔지니어링 분석에만 사용하십시오.
감사의 말
본 프로젝트는 cdp-use를 기반으로 구축되었습니다. cdp-use는 에이전트 시나리오에 최적화되고 추상화된 하위 수준 WebSocket 상호작용 계층을 제공하여 원시 CDP 프로토콜 통신의 복잡성을 크게 단순화했습니다.
라이선스
MIT License
Available Tools
19 toolsbreak_on_xhrA
Sets a breakpoint that triggers when an XHR/Fetch request URL contains the specified string.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool sets a breakpoint that triggers on URL matches, but it does not describe what happens when triggered (e.g., pauses execution, logs details), potential side effects, permission requirements, or error handling. This leaves significant gaps for a mutation tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose and parameter usage without any redundant information. It is front-loaded and appropriately sized, with every word earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation tool for debugging), no annotations, 1 parameter with low schema coverage, and an output schema (which reduces need to describe return values), the description is somewhat complete but lacks details on behavioral outcomes, error cases, and integration with sibling tools. It provides a basic understanding but leaves gaps for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, and the description adds meaning by specifying that the 'url' parameter is a string used to match against XHR/Fetch request URLs. However, it does not provide details on format (e.g., substring matching, case sensitivity) or examples, so it partially compensates but does not fully cover the parameter semantics beyond the basic schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Sets a breakpoint') and resource ('XHR/Fetch request URL'), and it distinguishes from siblings like 'remove_xhr_breakpoint' (which removes breakpoints) and 'set_breakpoint_on_text' (which sets breakpoints on text in scripts). It precisely defines the trigger condition ('when an XHR/Fetch request URL contains the specified string').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for debugging XHR/Fetch requests by setting breakpoints based on URL patterns, but it does not explicitly state when to use this tool versus alternatives like 'list_breakpoints' (to view breakpoints) or 'remove_xhr_breakpoint' (to remove such breakpoints). It provides context but lacks explicit guidance on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_scriptC
Evaluates a JavaScript expression in the current context. If execution is paused, it automatically evaluates in the paused call frame context.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | ||
| return_by_value | No | ||
| await_promise | No | ||
| context_id | No | ||
| frame_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the paused execution context, which is useful, but doesn't cover critical aspects like whether this is a read-only or mutating operation, potential side effects, authentication needs, rate limits, or error handling. For a tool that evaluates JavaScript, this lack of safety and behavioral details is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded, with two clear sentences that directly state the tool's function and a key behavioral nuance. Every word earns its place, with no wasted text or redundancy, making it easy for an AI agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of evaluating JavaScript (which can involve side effects, security risks, and debugging contexts), no annotations, 0% schema description coverage, and 5 parameters, the description is incomplete. While an output schema exists (which might cover return values), the description lacks crucial context about behavioral traits, parameter meanings, and usage boundaries, making it inadequate for safe and effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning none of the 5 parameters are documented in the schema. The description provides no information about parameters beyond the required 'expression' implied in the purpose. It doesn't explain what 'return_by_value', 'await_promise', 'context_id', or 'frame_index' mean or how they affect evaluation, failing to compensate for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Evaluates a JavaScript expression in the current context.' It specifies the verb ('evaluates') and resource ('JavaScript expression'), and adds important context about paused execution. However, it doesn't explicitly differentiate from sibling tools like 'search_in_sources' or 'get_script_source', which keeps it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context with 'If execution is paused, it automatically evaluates in the paused call frame context,' which hints at when this behavior applies. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., for debugging vs. general evaluation), and doesn't mention prerequisites or exclusions, leaving gaps for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paused_infoA
Gets information about the current paused state including call stack, current location, and scope variables. Use this after a breakpoint is hit to understand the execution context.
| Name | Required | Description | Default |
|---|---|---|---|
| include_scopes | No | ||
| max_scope_depth | No | ||
| frame_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It describes what information is returned but doesn't mention behavioral aspects like whether this requires debugger access, if it works only in specific debug modes, or potential performance implications. It provides basic context but lacks 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. First sentence states purpose and what's returned. Second sentence provides clear usage guidance. Every word earns its place with no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which covers return values), the description focuses appropriately on purpose and usage context. It provides enough information for an agent to understand when and why to use this tool, though parameter guidance is missing. For a debug inspection tool with output schema, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. However, the description mentions no parameters at all, while there are 3 parameters in the schema. The description doesn't explain what 'include_scopes', 'max_scope_depth', or 'frame_index' mean or how they affect the returned information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Gets information') and the specific resource ('current paused state'), listing the exact data returned (call stack, current location, scope variables). It distinguishes from siblings by focusing on debug state inspection rather than breakpoint management or execution control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: 'Use this after a breakpoint is hit to understand the execution context.' This provides clear situational guidance and distinguishes it from other debugging tools that might be used at different times or for different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_request_initiatorB
Gets the JavaScript call stack that initiated a network request. This helps trace which code triggered an API call.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on permissions, rate limits, error handling, or output format. For a tool with no annotations, this is a significant gap in transparency about its operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, consisting of two concise sentences that directly state the tool's purpose and utility. Every sentence earns its place without redundancy or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description does not need to explain return values. However, with no annotations, 0% schema coverage, and one parameter, the description is minimal. It covers the basic purpose but lacks details on usage context or behavioral traits, making it adequate but with clear gaps for a debugging tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies the need for a 'request_id' by mentioning 'initiated a network request,' but does not explicitly describe the parameter or its format. The description adds minimal value beyond the schema, resulting in a baseline score due to incomplete parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Gets') and resource ('JavaScript call stack that initiated a network request'), and explains its utility ('helps trace which code triggered an API call'). However, it does not explicitly differentiate from sibling tools like 'list_network_requests' or 'get_response_body', which are related but serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It mentions the tool's purpose but does not specify prerequisites (e.g., needing a request ID from 'list_network_requests'), exclusions, or direct comparisons to siblings like 'get_response_body' for response data or 'list_network_requests' for listing requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_response_bodyA
Get the response body for a request returned by list_network_requests. If session_id is omitted, it is inferred from the monitored request cache.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks critical behavioral details. It mentions session_id inference from 'monitored request cache' which adds some context, but doesn't disclose permissions needed, rate limits, error conditions, or what happens if the request_id is invalid. For a tool that likely interacts with network debugging data, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) with zero wasted words. The first sentence states the core purpose, and the second provides important usage detail about parameter inference. Every sentence earns its place and information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (so return values are documented elsewhere), the description's main job is to explain when and how to use this tool. It does this adequately but incompletely - it references list_network_requests appropriately but doesn't cover error cases, permissions, or the nature of the 'monitored request cache'. For a network debugging tool with no annotations, this leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description adds meaningful context for session_id (can be omitted, inferred from cache) but doesn't explain request_id's purpose or format. Since there are 2 parameters and the description only partially addresses one, it provides some but incomplete semantic value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'response body for a request returned by list_network_requests', making the purpose specific and understandable. It distinguishes from siblings by referencing a specific sibling tool (list_network_requests) as the source of requests, though it doesn't explicitly differentiate from all other tools in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool after list_network_requests to retrieve response bodies, and mentions that session_id can be omitted if inferred from cache. However, it doesn't specify when NOT to use this tool or name explicit alternatives among siblings, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_sourceB
Gets a snippet of a JavaScript script source by URL (recommended) or script ID. Supports line range (for normal files) or character offset (for minified single-line files).
| Name | Required | Description | Default |
|---|---|---|---|
| script_id | No | ||
| url | No | ||
| start_line | No | ||
| end_line | No | ||
| offset | No | ||
| length | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool 'gets a snippet' and supports different extraction methods, but doesn't disclose important behavioral traits like whether this is a read-only operation, potential rate limits, authentication requirements, error conditions, or what happens with invalid inputs. The description is insufficient for a mutation-sensitive agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in a single sentence that packs essential information: purpose, primary parameters, and usage guidance for different file types. Every word earns its place with zero redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, no annotations, but with output schema), the description provides adequate but incomplete context. It covers parameter purposes and some usage guidance but lacks behavioral transparency details. The presence of an output schema reduces the need to describe return values, but more operational context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds significant value by explaining parameter semantics. It clarifies that 'script_id' and 'url' are alternative identifiers (with URL recommended), explains that 'start_line' and 'end_line' are for normal files while 'offset' is for minified single-line files, and implies 'length' controls snippet size. This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Gets a snippet of a JavaScript script source' with two identification methods (URL or script ID). It specifies the resource (JavaScript script source) and verb (gets a snippet), but doesn't explicitly differentiate from sibling tools like 'search_in_sources' or 'list_scripts' beyond the snippet extraction aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context by recommending URL over script ID and explaining when to use line range vs. character offset. However, it doesn't explicitly state when to use this tool versus alternatives like 'search_in_sources' or 'list_scripts', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_websocket_messagesB
Lists WebSocket connections or gets messages for a specific connection. Without wsid, lists all connections. With wsid, gets messages.
| Name | Required | Description | Default |
|---|---|---|---|
| wsid | No | ||
| direction | No | ||
| show_content | No | ||
| page_size | No | ||
| page_idx | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 the dual behavior based on 'wsid' parameter, which is helpful, but fails to disclose critical traits like whether this is a read-only operation, if it requires specific permissions, rate limits, or what the output looks like. For a tool with 5 parameters and no annotation coverage, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded, using just two sentences that efficiently convey the core functionality and usage rules. Every sentence earns its place with no wasted words, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, 0% schema coverage, no annotations, but an output schema exists, the description is moderately complete. It covers the primary use cases but lacks details on parameter meanings, behavioral traits, and output interpretation. The output schema mitigates some gaps, but overall it's insufficient for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only explains the 'wsid' parameter's effect on tool behavior, ignoring 'direction', 'show_content', 'page_size', and 'page_idx'. This adds minimal value beyond the schema, failing to address the majority of parameters or their purposes, which is inadequate given the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's dual functionality: 'Lists WebSocket connections or gets messages for a specific connection.' It specifies the verb ('lists', 'gets') and resource ('WebSocket connections', 'messages'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'list_network_requests' or 'list_targets', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use each mode: 'Without wsid, lists all connections. With wsid, gets messages.' This gives explicit guidance on parameter-driven behavior. However, it doesn't mention when to use this tool over alternatives like 'list_network_requests' or provide exclusions, which limits the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_breakpointsB
Lists all active XHR and code breakpoints.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't cover aspects like whether it's read-only, if it requires specific permissions, how results are formatted, or any limitations (e.g., pagination). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, with no annotations and multiple sibling tools, it lacks context on usage scenarios and behavioral traits, leaving room for improvement in guiding the agent effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description doesn't need to add parameter details, and it correctly implies no inputs are required by not mentioning any. This meets the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'lists' and specifies the resources 'all active XHR and code breakpoints', making the purpose immediately understandable. It doesn't explicitly distinguish from siblings like 'remove_breakpoint' or 'remove_xhr_breakpoint', but the listing nature is clear from the verb choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'list_network_requests' or 'list_scripts', nor does it mention prerequisites or context for usage. It's a standalone statement without any comparative or contextual framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_network_requestsA
List network requests for the currently selected miniapp target/session since MCP started monitoring it. Results are sorted newest-first. By default returns the 20 most recent requests; use page_size/page_idx to paginate. Pass reqid to get a single request's full details. On first call it automatically connects to the endpoint, infers the target, attaches only that target, enables Network on that target session, and starts collecting XHR/Fetch requests.
| Name | Required | Description | Default |
|---|---|---|---|
| endpoint | No | devtools://devtools/bundled/inspector.html?ws=127.0.0.1:62000 | |
| reqid | No | ||
| page_size | No | ||
| page_idx | No | ||
| resource_types | No | ||
| url_filter | No | ||
| include_preserved_requests | No | ||
| wait_ms | No | ||
| clear_existing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: automatic connection and setup on first call ('automatically connects to the endpoint, infers the target, attaches only that target, enables Network on that target session, and starts collecting XHR/Fetch requests'), sorting order ('newest-first'), default pagination ('20 most recent requests'), and pagination controls. It doesn't mention rate limits, authentication needs, or error conditions, but covers essential operational behavior well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. Each sentence adds value: the first defines the tool, the second covers sorting and pagination, the third explains the 'reqid' parameter, and the fourth details the automatic setup on first call. There's no wasted text, though it could be slightly more structured (e.g., bullet points for behaviors), but it remains efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no annotations, but with an output schema), the description is mostly complete. It covers the tool's purpose, key behaviors, and some parameter semantics. The presence of an output schema means return values don't need explanation, but the description could better address all parameters and potential side effects (e.g., what 'clear_existing' does). It's sufficient for basic use but has minor gaps for advanced scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful context for several parameters: it explains 'page_size/page_idx' for pagination, 'reqid' for retrieving a single request's details, and implies filtering through 'resource_types' and 'url_filter' by mentioning 'XHR/Fetch requests' and general listing. However, it doesn't cover all 9 parameters (e.g., 'endpoint', 'include_preserved_requests', 'wait_ms', 'clear_existing' are not addressed), leaving some gaps in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List network requests for the currently selected miniapp target/session since MCP started monitoring it.' It specifies the verb ('List'), resource ('network requests'), scope ('currently selected miniapp target/session'), and temporal boundary ('since MCP started monitoring it'). It distinguishes itself from sibling tools like 'get_request_initiator' or 'get_response_body' by focusing on listing requests rather than retrieving specific details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: to list network requests for a monitored miniapp target/session. It mentions using 'reqid to get a single request's full details,' which implies an alternative use case within the same tool rather than pointing to a different sibling tool. However, it doesn't explicitly state when not to use it or name specific alternatives among siblings (e.g., 'get_request_initiator' for initiator details), leaving some guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scriptsA
Lists all JavaScript scripts loaded in the current page. Returns script ID, URL, and source map information. Use this to find scripts before setting breakpoints or searching.
| Name | Required | Description | Default |
|---|---|---|---|
| url_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format (script ID, URL, source map info) and implies a read-only operation by using 'Lists', but lacks details on permissions, rate limits, or error handling. It adds some context but is not comprehensive for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by usage guidance. Every sentence earns its place by providing essential information without redundancy, making it appropriately sized and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple list operation), no annotations, and the presence of an output schema (which handles return values), the description is mostly complete. It covers purpose and usage but lacks parameter details and some behavioral aspects like error cases, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter with 0% description coverage, so the description must compensate. It does not mention the 'url_filter' parameter at all, failing to add meaning beyond the schema. Since schema coverage is low, the baseline is lower, but the description does not address the parameter, resulting in a minimal score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Lists all JavaScript scripts loaded in the current page') and resource ('JavaScript scripts'), distinguishing it from siblings like list_breakpoints or list_network_requests. It explicitly mentions what information is returned (script ID, URL, source map), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Use this to find scripts before setting breakpoints or searching'), linking it to specific workflows. However, it does not explicitly state when not to use it or name alternative tools for similar purposes, such as get_script_source for detailed script content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_targetsB
Lists all available targets (WebView threads, AppService threads, etc.) in the connected debugger.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the action 'Lists' but does not describe key traits like whether this is a read-only operation, if it requires specific debugger states, potential rate limits, or the format of the output. For a tool in a debugger context with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key action ('Lists all available targets') and adds clarifying details without waste. Every word earns its place by specifying the resource and context, making it easy to grasp quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is adequate for a simple listing operation. However, it lacks details on behavioral aspects like debugger state requirements or output format, which could be important in a debugging context. With no annotations, the description does not fully compensate for missing behavioral context, making it minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so the schema fully documents the lack of inputs. The description adds value by specifying what is listed ('targets') and providing examples ('WebView threads, AppService threads, etc.'), which clarifies the resource semantics beyond the empty schema. Since there are no parameters, the baseline is 4, and the description enhances understanding appropriately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Lists') and resource ('all available targets'), specifying what the tool does. It distinguishes the resource by mentioning examples like 'WebView threads, AppService threads, etc.' and the context 'in the connected debugger'. However, it does not explicitly differentiate from sibling tools like 'switch_target', which might involve target selection rather than listing, so it lacks full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not mention any prerequisites, exclusions, or comparisons to sibling tools such as 'switch_target' (for changing targets) or 'list_scripts' (for listing scripts). Without such context, users may struggle to choose the right tool in the debugger environment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_or_resumeB
Toggles JavaScript execution. If paused, resumes execution. If running, pauses execution.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It explains the toggle action but doesn't mention important behavioral aspects like whether this affects all scripts globally, requires specific permissions, has side effects on debugging state, or what happens to breakpoints. The description is minimal and lacks needed context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two sentences that directly explain the toggle behavior. Every word earns its place with no wasted text, and the information is front-loaded with the core functionality stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a debugging control tool with no annotations but an output schema exists, the description is insufficient. It doesn't explain what the toggle returns, what state changes occur, or how this interacts with other debugging tools. For a tool that controls JavaScript execution, more context about scope and effects is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100% (though empty). The description appropriately doesn't discuss parameters since none exist, which is correct for a parameterless tool. No additional parameter information is needed or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: toggling JavaScript execution with specific states (paused/resumed). It uses a specific verb ('toggles') and identifies the resource ('JavaScript execution'), but doesn't distinguish from siblings like 'step' or 'break_on_xhr' that also control execution flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'step' for stepping through code or 'break_on_xhr' for pausing on network events. The description only explains what the tool does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_breakpointB
Removes a breakpoint by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| breakpoint_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool removes a breakpoint, implying a destructive mutation, but doesn't mention permissions needed, whether the removal is permanent/reversible, error conditions, or what happens after removal. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a simple tool and front-loads the essential information immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a destructive mutation tool with no annotations, 0% schema description coverage, but with an output schema (which handles return values), the description is minimally adequate. It states the core action but lacks important context about permissions, side effects, and relationship to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'by its ID' which clarifies the purpose of the single parameter, adding meaning beyond the schema's bare 'breakpoint_id' field. However, it doesn't explain ID format, source, or constraints, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Removes') and target ('a breakpoint by its ID'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'remove_xhr_breakpoint' or explain what distinguishes this general breakpoint removal from specialized variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like 'remove_xhr_breakpoint' or 'list_breakpoints' (which might be needed first to identify breakpoint IDs). The description only states what the tool does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_xhr_breakpointC
Removes an XHR/Fetch breakpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like what happens after removal (e.g., does execution resume?), whether this requires specific debugging state, error conditions, or side effects. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized and front-loaded with the core action, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values) and simple parameters (1 required, no enums/nesting), the description is minimally complete but lacks crucial context. For a mutation tool with no annotations, it should explain more about behavior, prerequisites, and parameter meaning to be fully helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but provides no parameter information. It doesn't explain what the 'url' parameter represents (e.g., pattern matching, exact URL, or breakpoint identifier), format expectations, or examples. This leaves the single required parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Removes') and target resource ('an XHR/Fetch breakpoint'), providing specific verb+resource pairing. However, it doesn't differentiate from sibling tools like 'remove_breakpoint' or 'break_on_xhr', which would require explicit comparison for a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives like 'remove_breakpoint' or 'list_breakpoints'. The description only states what it does without context about prerequisites, timing, or relationship to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_script_sourceC
Saves the full source code of a JavaScript script to a local file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| script_id | No | ||
| url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool saves to a local file, implying a write operation, but lacks details on permissions, file overwriting behavior, error handling, or rate limits. This is a significant gap for a tool that modifies the local filesystem.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core action without unnecessary words. It is front-loaded with the main purpose, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, write operation, no annotations) and the presence of an output schema (which may cover return values), the description is minimally adequate but incomplete. It states what the tool does but lacks critical details on usage, parameters, and behavioral traits needed for safe and effective invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It mentions 'JavaScript script' but doesn't explain how to specify the script (via 'script_id' or 'url') or the 'file_path' format. The description adds minimal meaning beyond the schema, failing to clarify parameter roles or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Saves') and the resource ('full source code of a JavaScript script to a local file'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_script_source' (which likely retrieves but doesn't save) or 'search_in_sources', leaving room for ambiguity in tool selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't mention prerequisites (e.g., needing a script ID or URL from other tools), exclusions, or comparisons to siblings like 'get_script_source', leaving the agent to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_sourcesB
Searches for a string or regex pattern in all loaded JavaScript sources. Returns matching lines with script ID, URL, and line number.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| case_sensitive | No | ||
| is_regex | No | ||
| max_results | No | ||
| max_line_length | No | ||
| exclude_minified | No | ||
| url_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions what gets returned (matching lines with metadata) but doesn't cover important behavioral aspects like whether this is a read-only operation, potential performance impact of searching 'all loaded JavaScript sources', whether results are paginated or limited, or any rate limits. The description provides basic output format but lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place: the first states the action and scope, the second specifies the return format. No wasted words, well-structured, and front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which presumably documents the return structure), the description doesn't need to detail return values. However, for a search tool with 7 parameters and no annotations, the description is incomplete - it doesn't address parameter usage, behavioral constraints, or provide sufficient context for effective tool selection versus siblings. It covers the basic purpose well but leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 7 parameters, the description provides no information about any parameters beyond what's implied by the tool name ('search' suggests a query parameter). It doesn't explain what 'max_results', 'exclude_minified', 'url_filter', or other parameters do, leaving significant gaps in understanding how to effectively use the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Searches for a string or regex pattern'), target resource ('in all loaded JavaScript sources'), and output format ('Returns matching lines with script ID, URL, and line number'). It distinguishes from siblings like 'list_scripts' (which lists without searching) and 'get_script_source' (which retrieves specific source content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for searching within JavaScript sources, but provides no explicit guidance on when to use this tool versus alternatives like 'list_scripts' for browsing or 'get_script_source' for retrieving specific content. It mentions 'all loaded JavaScript sources' which gives some context scope, but lacks when-not-to-use scenarios or prerequisite information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_breakpoint_on_textA
Finds a text string in all loaded scripts and sets a breakpoint at that location. CRITICAL AI WORKFLOW WARNING: Do NOT set breakpoints on function names or assignment statements (e.g., 'funcName = function'). In minified code, this will break on the one-time assignment rather than the execution. Instead, ALWAYS use get_script_source to read the function body first, then set the breakpoint on a specific statement INSIDE the function body (e.g., 'var x=', 'return').
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| case_sensitive | No | ||
| condition | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds critical behavioral context beyond the input schema: the warning about minified code behavior ('this will break on the one-time assignment rather than the execution'), specific usage constraints, and workflow dependencies. This provides essential transparency for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with two sentences: the first states the purpose, the second provides critical workflow guidance. Every sentence earns its place by delivering essential information without redundancy. The warning is appropriately front-loaded with 'CRITICAL AI WORKFLOW WARNING' to emphasize importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (debugging operation with potential pitfalls), no annotations, and 0% schema coverage, the description provides excellent contextual completeness. It explains the core behavior, critical constraints, and proper workflow integration. The presence of an output schema means the description doesn't need to explain return values, allowing it to focus on usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. The description mentions 'text string' which aligns with the 'text' parameter, but doesn't explain the 'case_sensitive' or 'condition' parameters. While it adds some semantic context for the primary parameter, it doesn't fully compensate for the coverage gap across all three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Finds a text string in all loaded scripts and sets a breakpoint at that location.' This specifies both the verb ('finds' and 'sets') and the resource ('text string in all loaded scripts'), distinguishing it from siblings like 'remove_breakpoint' or 'list_breakpoints'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives: 'Do NOT set breakpoints on function names or assignment statements... Instead, ALWAYS use get_script_source to read the function body first, then set the breakpoint on a specific statement INSIDE the function body.' It names a specific sibling tool ('get_script_source') as a prerequisite for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stepB
Controls execution when paused. action must be one of: 'over', 'into', 'out'.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the action parameter values but doesn't explain what 'over', 'into', and 'out' mean in terms of execution behavior. It doesn't describe whether this changes program state, what happens after stepping, or any side effects. The description provides minimal behavioral context beyond the parameter constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - just one sentence that states the purpose and enumerates the parameter values. There's zero wasted language, and the most critical information (the valid action values) is included. It's appropriately sized for a simple single-parameter control tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return values), no annotations, and a simple single parameter, the description is minimally complete. It covers the basic purpose and parameter constraints. However, for a debugging/execution control tool, it should ideally explain what the different step actions do and when each is appropriate, which would help the agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only 1 parameter, the description provides the essential semantic information about the 'action' parameter - it lists the three valid values ('over', 'into', 'out'). While it doesn't explain what these values mean, it does provide the enumeration that's missing from the schema. For a single parameter tool, this gives adequate semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'Controls execution when paused' which gives a vague purpose - it indicates a control function during paused execution but doesn't specify what resource or system is being controlled. It doesn't distinguish from siblings like 'pause_or_resume' or 'get_paused_info' which also relate to execution control. The purpose is understandable but lacks specificity about what execution context is being stepped through.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't mention when stepping is appropriate versus using 'pause_or_resume' for different control needs, or when to use 'get_paused_info' for status checking instead. There's no context about prerequisites (must be paused first) or exclusions for when stepping isn't applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_targetB
Switches the CDP connection to a different target thread (e.g. from WebView to AppService) to debug different parts of the miniapp.
| Name | Required | Description | Default |
|---|---|---|---|
| target_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the action and purpose without disclosing behavioral traits. It doesn't mention side effects (e.g., if this interrupts ongoing debugging, requires re-authentication, or affects other tools), error conditions, or what the switch entails operationally beyond the high-level goal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and purpose with zero wasted words. It uses parentheses for concise examples without disrupting flow, making it appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 parameter, no annotations, but has output schema), the description covers the basic purpose and context adequately. However, it lacks details on parameter usage, behavioral implications, and integration with siblings like list_targets, leaving gaps for effective agent invocation despite the output schema handling return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but adds no parameter information. It doesn't explain what 'target_id' represents (e.g., how to obtain valid IDs from list_targets), format expectations, or examples. The description's mention of 'target thread' hints at the parameter's role but lacks actionable details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('switches the CDP connection') and resource ('to a different target thread'), with examples of thread types (WebView, AppService) and purpose ('to debug different parts of the miniapp'). It distinguishes from siblings by focusing on connection switching rather than debugging actions like breakpoints or script evaluation, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('to debug different parts of the miniapp') and suggests when to use it based on debugging needs, but lacks explicit guidance on when not to use it or named alternatives. It doesn't specify prerequisites like needing an active connection or list_targets first.
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.
19 tool updates
v0.1.4- First observed
break_on_xhr - First observed
evaluate_script - First observed
get_paused_info - First observed
get_request_initiator - First observed
get_response_body - First observed
get_script_source - First observed
get_websocket_messages - First observed
list_breakpoints - First observed
list_network_requests - First observed
list_scripts - First observed
list_targets - First observed
pause_or_resume - First observed
remove_breakpoint - First observed
remove_xhr_breakpoint - First observed
save_script_source - First observed
search_in_sources - First observed
set_breakpoint_on_text - First observed
step - First observed
switch_target
TDQS
Scored across 19 tools
Most tools have distinct purposes with clear boundaries, such as break_on_xhr for XHR breakpoints versus set_breakpoint_on_text for code breakpoints. However, some overlap exists between list_breakpoints and remove_breakpoint/remove_xhr_breakpoint, as they all manage breakpoints but with different granularities, which could cause minor confusion in selection.
Tool names follow a highly consistent verb_noun or verb_noun_noun pattern throughout, such as list_network_requests, get_paused_info, and remove_xhr_breakpoint. There are no deviations in style or convention, making the set predictable and easy to navigate.
With 19 tools, the count is slightly high but reasonable for a comprehensive debugging and monitoring server for miniapps. It covers various aspects like breakpoints, network requests, and script analysis without feeling excessively bloated, though it might be borderline for some use cases.
The toolset provides complete coverage for debugging miniapps, including breakpoint management, network monitoring, script inspection, and execution control. There are no obvious gaps; tools like step, pause_or_resume, and switch_target ensure full lifecycle support for debugging workflows.
Maintenance
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
A paid remote MCP for AI agent browser DevTools MCP, built to return verdicts, receipts, usage logs,
Reasoning, code, anti-deception, memory harness MCP tools. Stdio or HTTPS api.ejentum.com/mcp
Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to debug Node.js applications using Chrome DevTools Protocol. Provides comprehensive debugging capabilities including breakpoints, stepping, variable inspection, expression evaluation, and console monitoring.676 npm348MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to debug JavaScript and TypeScript applications by connecting to Chrome DevTools Protocol-compatible debuggers, allowing them to set breakpoints, step through code, inspect variables, and evaluate expressions with full source map support.189 npm2Apache 2.0
- AlicenseAqualityAmaintenanceEnables AI coding assistants to debug and analyze JavaScript code in web pages through breakpoint debugging, function hooking, network analysis, and runtime inspection of scripts including minified code.24722 npm2,825Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Chrome DevTools Protocol-based MCP server that enables AI coding assistants to control browsers for JavaScript debugging, reverse engineering, web scraping, and API debugging.722 npm1Apache 2.0