adb-ready 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "title": "ADB Ready agent tool contract",
3
3
  "schemaVersion": 1,
4
- "packageVersion": "0.5.0",
4
+ "packageVersion": "0.6.0",
5
5
  "protocolVersion": "2025-11-25",
6
6
  "transport": "stdio",
7
7
  "tools": [
@@ -63,6 +63,17 @@
63
63
  "idempotentHint": true,
64
64
  "openWorldHint": false
65
65
  },
66
+ "_meta": {
67
+ "dev.adbready/tool": {
68
+ "category": "ui",
69
+ "profiles": ["ui", "full"],
70
+ "safety": "read-only",
71
+ "sensitiveData": false,
72
+ "destructive": false,
73
+ "idempotent": true,
74
+ "targetBound": true
75
+ }
76
+ },
66
77
  "outputSchema": {
67
78
  "$schema": "https://json-schema.org/draft/2020-12/schema",
68
79
  "type": "object",
@@ -146,6 +157,17 @@
146
157
  "idempotentHint": true,
147
158
  "openWorldHint": false
148
159
  },
160
+ "_meta": {
161
+ "dev.adbready/tool": {
162
+ "category": "ui",
163
+ "profiles": ["ui", "full"],
164
+ "safety": "read-only",
165
+ "sensitiveData": false,
166
+ "destructive": false,
167
+ "idempotent": true,
168
+ "targetBound": true
169
+ }
170
+ },
149
171
  "outputSchema": {
150
172
  "$schema": "https://json-schema.org/draft/2020-12/schema",
151
173
  "type": "object",
@@ -211,7 +233,7 @@
211
233
  },
212
234
  {
213
235
  "name": "capture_screenshot",
214
- "description": "Capture a verified PNG inside the project and return its image pixels to the client without overwriting an existing file.",
236
+ "description": "Capture a verified PNG inside the project and return its pixels. Agent results default to a 1024×1024, 4 MiB context-safe budget; use crop or explicit limits to focus evidence, or fullResolution only when the client can accept it.",
215
237
  "inputSchema": {
216
238
  "type": "object",
217
239
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -224,6 +246,45 @@
224
246
  "out": {
225
247
  "type": "string",
226
248
  "minLength": 1
249
+ },
250
+ "crop": {
251
+ "type": "object",
252
+ "properties": {
253
+ "x": {
254
+ "type": "integer",
255
+ "minimum": 0,
256
+ "maximum": 16383
257
+ },
258
+ "y": {
259
+ "type": "integer",
260
+ "minimum": 0,
261
+ "maximum": 16383
262
+ },
263
+ "width": {
264
+ "type": "integer",
265
+ "minimum": 1,
266
+ "maximum": 16384
267
+ },
268
+ "height": {
269
+ "type": "integer",
270
+ "minimum": 1,
271
+ "maximum": 16384
272
+ }
273
+ },
274
+ "required": ["x", "y", "width", "height"]
275
+ },
276
+ "maxWidth": {
277
+ "type": "integer",
278
+ "minimum": 1,
279
+ "maximum": 16384
280
+ },
281
+ "maxHeight": {
282
+ "type": "integer",
283
+ "minimum": 1,
284
+ "maximum": 16384
285
+ },
286
+ "fullResolution": {
287
+ "type": "boolean"
227
288
  }
228
289
  }
229
290
  },
@@ -233,6 +294,17 @@
233
294
  "idempotentHint": false,
234
295
  "openWorldHint": false
235
296
  },
297
+ "_meta": {
298
+ "dev.adbready/tool": {
299
+ "category": "ui",
300
+ "profiles": ["ui", "debug", "full"],
301
+ "safety": "mutating",
302
+ "sensitiveData": true,
303
+ "destructive": false,
304
+ "idempotent": false,
305
+ "targetBound": true
306
+ }
307
+ },
236
308
  "outputSchema": {
237
309
  "$schema": "https://json-schema.org/draft/2020-12/schema",
238
310
  "type": "object",
@@ -358,6 +430,17 @@
358
430
  "idempotentHint": false,
359
431
  "openWorldHint": false
360
432
  },
433
+ "_meta": {
434
+ "dev.adbready/tool": {
435
+ "category": "ui",
436
+ "profiles": ["ui", "full"],
437
+ "safety": "mutating",
438
+ "sensitiveData": false,
439
+ "destructive": false,
440
+ "idempotent": false,
441
+ "targetBound": true
442
+ }
443
+ },
361
444
  "outputSchema": {
362
445
  "$schema": "https://json-schema.org/draft/2020-12/schema",
363
446
  "type": "object",
@@ -423,7 +506,7 @@
423
506
  },
424
507
  {
425
508
  "name": "compare_ui",
426
- "description": "Compare the current UI with a complete digest returned by an earlier inspection or action.",
509
+ "description": "Return a compact semantic diff from a recent inspect_ui snapshot on this target.",
427
510
  "inputSchema": {
428
511
  "type": "object",
429
512
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -446,6 +529,17 @@
446
529
  "idempotentHint": true,
447
530
  "openWorldHint": false
448
531
  },
532
+ "_meta": {
533
+ "dev.adbready/tool": {
534
+ "category": "ui",
535
+ "profiles": ["ui", "full"],
536
+ "safety": "read-only",
537
+ "sensitiveData": false,
538
+ "destructive": false,
539
+ "idempotent": true,
540
+ "targetBound": true
541
+ }
542
+ },
449
543
  "outputSchema": {
450
544
  "$schema": "https://json-schema.org/draft/2020-12/schema",
451
545
  "type": "object",
@@ -533,6 +627,114 @@
533
627
  "idempotentHint": true,
534
628
  "openWorldHint": false
535
629
  },
630
+ "_meta": {
631
+ "dev.adbready/tool": {
632
+ "category": "debug",
633
+ "profiles": ["debug", "full"],
634
+ "safety": "read-only",
635
+ "sensitiveData": true,
636
+ "destructive": false,
637
+ "idempotent": true,
638
+ "targetBound": false
639
+ }
640
+ },
641
+ "outputSchema": {
642
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
643
+ "type": "object",
644
+ "properties": {
645
+ "schemaVersion": {
646
+ "type": "number",
647
+ "const": 1
648
+ },
649
+ "command": {
650
+ "type": "string"
651
+ },
652
+ "commandId": {
653
+ "type": "string"
654
+ },
655
+ "ok": {
656
+ "type": "boolean"
657
+ },
658
+ "startedAt": {
659
+ "type": "string"
660
+ },
661
+ "finishedAt": {
662
+ "type": "string"
663
+ },
664
+ "durationMs": {
665
+ "type": "number",
666
+ "minimum": 0
667
+ },
668
+ "data": {
669
+ "anyOf": [
670
+ {},
671
+ {
672
+ "type": "null"
673
+ }
674
+ ]
675
+ },
676
+ "problems": {
677
+ "type": "array",
678
+ "items": {
679
+ "type": "object",
680
+ "properties": {
681
+ "code": {
682
+ "type": "string"
683
+ }
684
+ },
685
+ "required": ["code"],
686
+ "additionalProperties": {}
687
+ }
688
+ }
689
+ },
690
+ "required": [
691
+ "schemaVersion",
692
+ "command",
693
+ "commandId",
694
+ "ok",
695
+ "startedAt",
696
+ "finishedAt",
697
+ "durationMs",
698
+ "data",
699
+ "problems"
700
+ ],
701
+ "additionalProperties": {}
702
+ }
703
+ },
704
+ {
705
+ "name": "dismiss_keyboard",
706
+ "description": "Dismiss a software keyboard only after two Android visibility signals agree, then verify that both report hidden.",
707
+ "inputSchema": {
708
+ "type": "object",
709
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
710
+ "properties": {
711
+ "targetHandle": {
712
+ "type": "string",
713
+ "format": "uuid",
714
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
715
+ },
716
+ "dryRun": {
717
+ "type": "boolean"
718
+ }
719
+ }
720
+ },
721
+ "annotations": {
722
+ "readOnlyHint": false,
723
+ "destructiveHint": false,
724
+ "idempotentHint": true,
725
+ "openWorldHint": false
726
+ },
727
+ "_meta": {
728
+ "dev.adbready/tool": {
729
+ "category": "ui",
730
+ "profiles": ["ui", "full"],
731
+ "safety": "mutating",
732
+ "sensitiveData": false,
733
+ "destructive": false,
734
+ "idempotent": true,
735
+ "targetBound": true
736
+ }
737
+ },
536
738
  "outputSchema": {
537
739
  "$schema": "https://json-schema.org/draft/2020-12/schema",
538
740
  "type": "object",
@@ -610,6 +812,17 @@
610
812
  "idempotentHint": true,
611
813
  "openWorldHint": false
612
814
  },
815
+ "_meta": {
816
+ "dev.adbready/tool": {
817
+ "category": "foundation",
818
+ "profiles": ["session", "ui", "debug", "full"],
819
+ "safety": "read-only",
820
+ "sensitiveData": false,
821
+ "destructive": false,
822
+ "idempotent": true,
823
+ "targetBound": false
824
+ }
825
+ },
613
826
  "outputSchema": {
614
827
  "$schema": "https://json-schema.org/draft/2020-12/schema",
615
828
  "type": "object",
@@ -696,6 +909,17 @@
696
909
  "idempotentHint": true,
697
910
  "openWorldHint": false
698
911
  },
912
+ "_meta": {
913
+ "dev.adbready/tool": {
914
+ "category": "foundation",
915
+ "profiles": ["session", "ui", "debug", "full"],
916
+ "safety": "mutating",
917
+ "sensitiveData": false,
918
+ "destructive": false,
919
+ "idempotent": true,
920
+ "targetBound": false
921
+ }
922
+ },
699
923
  "outputSchema": {
700
924
  "$schema": "https://json-schema.org/draft/2020-12/schema",
701
925
  "type": "object",
@@ -761,7 +985,7 @@
761
985
  },
762
986
  {
763
987
  "name": "fill_ui",
764
- "description": "Focus one semantic editable field, replace its value with conservative shell-safe text, and verify the observable value.",
988
+ "description": "Focus one semantic editable field, replace it with bounded ASCII or capability-detected Unicode text, and verify the observable value; secretEnv keeps sensitive text out of MCP arguments and retained results.",
765
989
  "inputSchema": {
766
990
  "type": "object",
767
991
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -811,24 +1035,457 @@
811
1035
  },
812
1036
  "text": {
813
1037
  "type": "string",
814
- "minLength": 1,
815
- "maxLength": 256
816
- },
817
- "submit": {
818
- "type": "boolean"
819
- },
820
- "dryRun": {
821
- "type": "boolean"
1038
+ "minLength": 1,
1039
+ "maxLength": 4096
1040
+ },
1041
+ "secretEnv": {
1042
+ "type": "string",
1043
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,127}$"
1044
+ },
1045
+ "inputMode": {
1046
+ "type": "string",
1047
+ "enum": ["ascii", "auto", "unicode"]
1048
+ },
1049
+ "typingDelayMs": {
1050
+ "type": "integer",
1051
+ "minimum": 0,
1052
+ "maximum": 2000
1053
+ },
1054
+ "submit": {
1055
+ "type": "boolean"
1056
+ },
1057
+ "dryRun": {
1058
+ "type": "boolean"
1059
+ }
1060
+ },
1061
+ "required": ["selector"]
1062
+ },
1063
+ "annotations": {
1064
+ "readOnlyHint": false,
1065
+ "destructiveHint": false,
1066
+ "idempotentHint": false,
1067
+ "openWorldHint": false
1068
+ },
1069
+ "_meta": {
1070
+ "dev.adbready/tool": {
1071
+ "category": "ui",
1072
+ "profiles": ["ui", "full"],
1073
+ "safety": "mutating",
1074
+ "sensitiveData": false,
1075
+ "destructive": false,
1076
+ "idempotent": false,
1077
+ "targetBound": true
1078
+ }
1079
+ },
1080
+ "outputSchema": {
1081
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1082
+ "type": "object",
1083
+ "properties": {
1084
+ "schemaVersion": {
1085
+ "type": "number",
1086
+ "const": 1
1087
+ },
1088
+ "command": {
1089
+ "type": "string"
1090
+ },
1091
+ "commandId": {
1092
+ "type": "string"
1093
+ },
1094
+ "ok": {
1095
+ "type": "boolean"
1096
+ },
1097
+ "startedAt": {
1098
+ "type": "string"
1099
+ },
1100
+ "finishedAt": {
1101
+ "type": "string"
1102
+ },
1103
+ "durationMs": {
1104
+ "type": "number",
1105
+ "minimum": 0
1106
+ },
1107
+ "data": {
1108
+ "anyOf": [
1109
+ {},
1110
+ {
1111
+ "type": "null"
1112
+ }
1113
+ ]
1114
+ },
1115
+ "problems": {
1116
+ "type": "array",
1117
+ "items": {
1118
+ "type": "object",
1119
+ "properties": {
1120
+ "code": {
1121
+ "type": "string"
1122
+ }
1123
+ },
1124
+ "required": ["code"],
1125
+ "additionalProperties": {}
1126
+ }
1127
+ }
1128
+ },
1129
+ "required": [
1130
+ "schemaVersion",
1131
+ "command",
1132
+ "commandId",
1133
+ "ok",
1134
+ "startedAt",
1135
+ "finishedAt",
1136
+ "durationMs",
1137
+ "data",
1138
+ "problems"
1139
+ ],
1140
+ "additionalProperties": {}
1141
+ }
1142
+ },
1143
+ {
1144
+ "name": "find_ui",
1145
+ "description": "Find bounded UI nodes by semantic id, text, description, class, or package selectors without changing device state.",
1146
+ "inputSchema": {
1147
+ "type": "object",
1148
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1149
+ "properties": {
1150
+ "targetHandle": {
1151
+ "type": "string",
1152
+ "format": "uuid",
1153
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
1154
+ },
1155
+ "selector": {
1156
+ "anyOf": [
1157
+ {
1158
+ "type": "string",
1159
+ "pattern": "^(?:class|desc|id|package|text)=.{1,256}$"
1160
+ },
1161
+ {
1162
+ "type": "object",
1163
+ "properties": {
1164
+ "field": {
1165
+ "type": "string",
1166
+ "enum": ["class", "desc", "id", "package", "text"]
1167
+ },
1168
+ "value": {
1169
+ "type": "string",
1170
+ "minLength": 1,
1171
+ "maxLength": 256
1172
+ },
1173
+ "match": {
1174
+ "type": "string",
1175
+ "enum": ["contains", "exact", "starts-with"]
1176
+ },
1177
+ "enabled": {
1178
+ "type": "boolean"
1179
+ },
1180
+ "actionable": {
1181
+ "type": "boolean"
1182
+ }
1183
+ },
1184
+ "required": ["field", "value"]
1185
+ }
1186
+ ]
1187
+ },
1188
+ "limit": {
1189
+ "type": "integer",
1190
+ "minimum": 1,
1191
+ "maximum": 100
1192
+ }
1193
+ },
1194
+ "required": ["selector"]
1195
+ },
1196
+ "annotations": {
1197
+ "readOnlyHint": true,
1198
+ "destructiveHint": false,
1199
+ "idempotentHint": true,
1200
+ "openWorldHint": false
1201
+ },
1202
+ "_meta": {
1203
+ "dev.adbready/tool": {
1204
+ "category": "ui",
1205
+ "profiles": ["ui", "full"],
1206
+ "safety": "read-only",
1207
+ "sensitiveData": false,
1208
+ "destructive": false,
1209
+ "idempotent": true,
1210
+ "targetBound": true
1211
+ }
1212
+ },
1213
+ "outputSchema": {
1214
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1215
+ "type": "object",
1216
+ "properties": {
1217
+ "schemaVersion": {
1218
+ "type": "number",
1219
+ "const": 1
1220
+ },
1221
+ "command": {
1222
+ "type": "string"
1223
+ },
1224
+ "commandId": {
1225
+ "type": "string"
1226
+ },
1227
+ "ok": {
1228
+ "type": "boolean"
1229
+ },
1230
+ "startedAt": {
1231
+ "type": "string"
1232
+ },
1233
+ "finishedAt": {
1234
+ "type": "string"
1235
+ },
1236
+ "durationMs": {
1237
+ "type": "number",
1238
+ "minimum": 0
1239
+ },
1240
+ "data": {
1241
+ "anyOf": [
1242
+ {},
1243
+ {
1244
+ "type": "null"
1245
+ }
1246
+ ]
1247
+ },
1248
+ "problems": {
1249
+ "type": "array",
1250
+ "items": {
1251
+ "type": "object",
1252
+ "properties": {
1253
+ "code": {
1254
+ "type": "string"
1255
+ }
1256
+ },
1257
+ "required": ["code"],
1258
+ "additionalProperties": {}
1259
+ }
1260
+ }
1261
+ },
1262
+ "required": [
1263
+ "schemaVersion",
1264
+ "command",
1265
+ "commandId",
1266
+ "ok",
1267
+ "startedAt",
1268
+ "finishedAt",
1269
+ "durationMs",
1270
+ "data",
1271
+ "problems"
1272
+ ],
1273
+ "additionalProperties": {}
1274
+ }
1275
+ },
1276
+ {
1277
+ "name": "get_capabilities",
1278
+ "description": "Describe the active MCP profile, discoverable tool profiles, and negotiated long-running task compatibility.",
1279
+ "inputSchema": {
1280
+ "type": "object",
1281
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1282
+ "properties": {}
1283
+ },
1284
+ "annotations": {
1285
+ "readOnlyHint": true,
1286
+ "destructiveHint": false,
1287
+ "idempotentHint": true,
1288
+ "openWorldHint": false
1289
+ },
1290
+ "_meta": {
1291
+ "dev.adbready/tool": {
1292
+ "category": "foundation",
1293
+ "profiles": ["session", "ui", "debug", "full"],
1294
+ "safety": "read-only",
1295
+ "sensitiveData": false,
1296
+ "destructive": false,
1297
+ "idempotent": true,
1298
+ "targetBound": false
1299
+ }
1300
+ },
1301
+ "outputSchema": {
1302
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1303
+ "type": "object",
1304
+ "properties": {
1305
+ "schemaVersion": {
1306
+ "type": "number",
1307
+ "const": 1
1308
+ },
1309
+ "command": {
1310
+ "type": "string"
1311
+ },
1312
+ "commandId": {
1313
+ "type": "string"
1314
+ },
1315
+ "ok": {
1316
+ "type": "boolean"
1317
+ },
1318
+ "startedAt": {
1319
+ "type": "string"
1320
+ },
1321
+ "finishedAt": {
1322
+ "type": "string"
1323
+ },
1324
+ "durationMs": {
1325
+ "type": "number",
1326
+ "minimum": 0
1327
+ },
1328
+ "data": {
1329
+ "anyOf": [
1330
+ {},
1331
+ {
1332
+ "type": "null"
1333
+ }
1334
+ ]
1335
+ },
1336
+ "problems": {
1337
+ "type": "array",
1338
+ "items": {
1339
+ "type": "object",
1340
+ "properties": {
1341
+ "code": {
1342
+ "type": "string"
1343
+ }
1344
+ },
1345
+ "required": ["code"],
1346
+ "additionalProperties": {}
1347
+ }
1348
+ }
1349
+ },
1350
+ "required": [
1351
+ "schemaVersion",
1352
+ "command",
1353
+ "commandId",
1354
+ "ok",
1355
+ "startedAt",
1356
+ "finishedAt",
1357
+ "durationMs",
1358
+ "data",
1359
+ "problems"
1360
+ ],
1361
+ "additionalProperties": {}
1362
+ }
1363
+ },
1364
+ {
1365
+ "name": "get_dev_session",
1366
+ "description": "Read the durable status of a project-scoped development-session handle after reconnects.",
1367
+ "inputSchema": {
1368
+ "type": "object",
1369
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1370
+ "properties": {
1371
+ "taskHandle": {
1372
+ "type": "string",
1373
+ "format": "uuid",
1374
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
1375
+ }
1376
+ },
1377
+ "required": ["taskHandle"]
1378
+ },
1379
+ "annotations": {
1380
+ "readOnlyHint": true,
1381
+ "destructiveHint": false,
1382
+ "idempotentHint": true,
1383
+ "openWorldHint": false
1384
+ },
1385
+ "_meta": {
1386
+ "dev.adbready/tool": {
1387
+ "category": "session",
1388
+ "profiles": ["session", "full"],
1389
+ "safety": "read-only",
1390
+ "sensitiveData": false,
1391
+ "destructive": false,
1392
+ "idempotent": true,
1393
+ "targetBound": false
1394
+ }
1395
+ },
1396
+ "outputSchema": {
1397
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1398
+ "type": "object",
1399
+ "properties": {
1400
+ "schemaVersion": {
1401
+ "type": "number",
1402
+ "const": 1
1403
+ },
1404
+ "command": {
1405
+ "type": "string"
1406
+ },
1407
+ "commandId": {
1408
+ "type": "string"
1409
+ },
1410
+ "ok": {
1411
+ "type": "boolean"
1412
+ },
1413
+ "startedAt": {
1414
+ "type": "string"
1415
+ },
1416
+ "finishedAt": {
1417
+ "type": "string"
1418
+ },
1419
+ "durationMs": {
1420
+ "type": "number",
1421
+ "minimum": 0
1422
+ },
1423
+ "data": {
1424
+ "anyOf": [
1425
+ {},
1426
+ {
1427
+ "type": "null"
1428
+ }
1429
+ ]
1430
+ },
1431
+ "problems": {
1432
+ "type": "array",
1433
+ "items": {
1434
+ "type": "object",
1435
+ "properties": {
1436
+ "code": {
1437
+ "type": "string"
1438
+ }
1439
+ },
1440
+ "required": ["code"],
1441
+ "additionalProperties": {}
1442
+ }
1443
+ }
1444
+ },
1445
+ "required": [
1446
+ "schemaVersion",
1447
+ "command",
1448
+ "commandId",
1449
+ "ok",
1450
+ "startedAt",
1451
+ "finishedAt",
1452
+ "durationMs",
1453
+ "data",
1454
+ "problems"
1455
+ ],
1456
+ "additionalProperties": {}
1457
+ }
1458
+ },
1459
+ {
1460
+ "name": "get_session_problems",
1461
+ "description": "Read structured problems from one saved local development session.",
1462
+ "inputSchema": {
1463
+ "type": "object",
1464
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1465
+ "properties": {
1466
+ "sessionId": {
1467
+ "type": "string",
1468
+ "minLength": 1
822
1469
  }
823
- },
824
- "required": ["selector", "text"]
1470
+ }
825
1471
  },
826
1472
  "annotations": {
827
- "readOnlyHint": false,
1473
+ "readOnlyHint": true,
828
1474
  "destructiveHint": false,
829
- "idempotentHint": false,
1475
+ "idempotentHint": true,
830
1476
  "openWorldHint": false
831
1477
  },
1478
+ "_meta": {
1479
+ "dev.adbready/tool": {
1480
+ "category": "debug",
1481
+ "profiles": ["debug", "full"],
1482
+ "safety": "read-only",
1483
+ "sensitiveData": true,
1484
+ "destructive": false,
1485
+ "idempotent": true,
1486
+ "targetBound": false
1487
+ }
1488
+ },
832
1489
  "outputSchema": {
833
1490
  "$schema": "https://json-schema.org/draft/2020-12/schema",
834
1491
  "type": "object",
@@ -893,8 +1550,8 @@
893
1550
  }
894
1551
  },
895
1552
  {
896
- "name": "find_ui",
897
- "description": "Find bounded UI nodes by semantic id, text, description, class, or package selectors without changing device state.",
1553
+ "name": "get_ui",
1554
+ "description": "Read one unambiguous UI node with its current semantic, state, and bounds properties.",
898
1555
  "inputSchema": {
899
1556
  "type": "object",
900
1557
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -937,10 +1594,10 @@
937
1594
  }
938
1595
  ]
939
1596
  },
940
- "limit": {
1597
+ "occurrence": {
941
1598
  "type": "integer",
942
1599
  "minimum": 1,
943
- "maximum": 100
1600
+ "maximum": 10000
944
1601
  }
945
1602
  },
946
1603
  "required": ["selector"]
@@ -951,6 +1608,17 @@
951
1608
  "idempotentHint": true,
952
1609
  "openWorldHint": false
953
1610
  },
1611
+ "_meta": {
1612
+ "dev.adbready/tool": {
1613
+ "category": "ui",
1614
+ "profiles": ["ui", "full"],
1615
+ "safety": "read-only",
1616
+ "sensitiveData": false,
1617
+ "destructive": false,
1618
+ "idempotent": true,
1619
+ "targetBound": true
1620
+ }
1621
+ },
954
1622
  "outputSchema": {
955
1623
  "$schema": "https://json-schema.org/draft/2020-12/schema",
956
1624
  "type": "object",
@@ -1015,19 +1683,22 @@
1015
1683
  }
1016
1684
  },
1017
1685
  {
1018
- "name": "get_dev_session",
1019
- "description": "Read the durable status of a project-scoped development-session handle after reconnects.",
1686
+ "name": "inspect_app",
1687
+ "description": "Return bounded sensitive app, foreground, and classified-log evidence without a screenshot.",
1020
1688
  "inputSchema": {
1021
1689
  "type": "object",
1022
1690
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1023
1691
  "properties": {
1024
- "taskHandle": {
1692
+ "targetHandle": {
1025
1693
  "type": "string",
1026
1694
  "format": "uuid",
1027
1695
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
1696
+ },
1697
+ "applicationId": {
1698
+ "type": "string",
1699
+ "minLength": 3
1028
1700
  }
1029
- },
1030
- "required": ["taskHandle"]
1701
+ }
1031
1702
  },
1032
1703
  "annotations": {
1033
1704
  "readOnlyHint": true,
@@ -1035,6 +1706,17 @@
1035
1706
  "idempotentHint": true,
1036
1707
  "openWorldHint": false
1037
1708
  },
1709
+ "_meta": {
1710
+ "dev.adbready/tool": {
1711
+ "category": "debug",
1712
+ "profiles": ["debug", "full"],
1713
+ "safety": "read-only",
1714
+ "sensitiveData": true,
1715
+ "destructive": false,
1716
+ "idempotent": true,
1717
+ "targetBound": true
1718
+ }
1719
+ },
1038
1720
  "outputSchema": {
1039
1721
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1040
1722
  "type": "object",
@@ -1099,15 +1781,30 @@
1099
1781
  }
1100
1782
  },
1101
1783
  {
1102
- "name": "get_session_problems",
1103
- "description": "Read structured problems from one saved local development session.",
1784
+ "name": "inspect_failures",
1785
+ "description": "Correlate bounded package-scoped Java, native, React Native, and ANR evidence from supported Android sources without mutating the target.",
1104
1786
  "inputSchema": {
1105
1787
  "type": "object",
1106
1788
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1107
1789
  "properties": {
1108
- "sessionId": {
1790
+ "targetHandle": {
1109
1791
  "type": "string",
1110
- "minLength": 1
1792
+ "format": "uuid",
1793
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
1794
+ },
1795
+ "applicationId": {
1796
+ "type": "string",
1797
+ "minLength": 3
1798
+ },
1799
+ "sinceMs": {
1800
+ "type": "integer",
1801
+ "minimum": 1000,
1802
+ "maximum": 604800000
1803
+ },
1804
+ "limit": {
1805
+ "type": "integer",
1806
+ "minimum": 1,
1807
+ "maximum": 100
1111
1808
  }
1112
1809
  }
1113
1810
  },
@@ -1117,6 +1814,17 @@
1117
1814
  "idempotentHint": true,
1118
1815
  "openWorldHint": false
1119
1816
  },
1817
+ "_meta": {
1818
+ "dev.adbready/tool": {
1819
+ "category": "debug",
1820
+ "profiles": ["debug", "full"],
1821
+ "safety": "read-only",
1822
+ "sensitiveData": true,
1823
+ "destructive": false,
1824
+ "idempotent": true,
1825
+ "targetBound": true
1826
+ }
1827
+ },
1120
1828
  "outputSchema": {
1121
1829
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1122
1830
  "type": "object",
@@ -1181,8 +1889,8 @@
1181
1889
  }
1182
1890
  },
1183
1891
  {
1184
- "name": "get_ui",
1185
- "description": "Read one unambiguous UI node with its current semantic, state, and bounds properties.",
1892
+ "name": "inspect_keyboard",
1893
+ "description": "Read software-keyboard visibility only when Android InputMethodManager and WindowInsets agree.",
1186
1894
  "inputSchema": {
1187
1895
  "type": "object",
1188
1896
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -1191,47 +1899,8 @@
1191
1899
  "type": "string",
1192
1900
  "format": "uuid",
1193
1901
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
1194
- },
1195
- "selector": {
1196
- "anyOf": [
1197
- {
1198
- "type": "string",
1199
- "pattern": "^(?:class|desc|id|package|text)=.{1,256}$"
1200
- },
1201
- {
1202
- "type": "object",
1203
- "properties": {
1204
- "field": {
1205
- "type": "string",
1206
- "enum": ["class", "desc", "id", "package", "text"]
1207
- },
1208
- "value": {
1209
- "type": "string",
1210
- "minLength": 1,
1211
- "maxLength": 256
1212
- },
1213
- "match": {
1214
- "type": "string",
1215
- "enum": ["contains", "exact", "starts-with"]
1216
- },
1217
- "enabled": {
1218
- "type": "boolean"
1219
- },
1220
- "actionable": {
1221
- "type": "boolean"
1222
- }
1223
- },
1224
- "required": ["field", "value"]
1225
- }
1226
- ]
1227
- },
1228
- "occurrence": {
1229
- "type": "integer",
1230
- "minimum": 1,
1231
- "maximum": 10000
1232
1902
  }
1233
- },
1234
- "required": ["selector"]
1903
+ }
1235
1904
  },
1236
1905
  "annotations": {
1237
1906
  "readOnlyHint": true,
@@ -1239,6 +1908,17 @@
1239
1908
  "idempotentHint": true,
1240
1909
  "openWorldHint": false
1241
1910
  },
1911
+ "_meta": {
1912
+ "dev.adbready/tool": {
1913
+ "category": "ui",
1914
+ "profiles": ["ui", "full"],
1915
+ "safety": "read-only",
1916
+ "sensitiveData": false,
1917
+ "destructive": false,
1918
+ "idempotent": true,
1919
+ "targetBound": true
1920
+ }
1921
+ },
1242
1922
  "outputSchema": {
1243
1923
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1244
1924
  "type": "object",
@@ -1303,8 +1983,8 @@
1303
1983
  }
1304
1984
  },
1305
1985
  {
1306
- "name": "inspect_app",
1307
- "description": "Return bounded sensitive app, foreground, and classified-log evidence without a screenshot.",
1986
+ "name": "inspect_permission_dialog",
1987
+ "description": "Inspect one standard Android runtime-permission dialog and return only its exact available decisions.",
1308
1988
  "inputSchema": {
1309
1989
  "type": "object",
1310
1990
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -1313,10 +1993,6 @@
1313
1993
  "type": "string",
1314
1994
  "format": "uuid",
1315
1995
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
1316
- },
1317
- "applicationId": {
1318
- "type": "string",
1319
- "minLength": 3
1320
1996
  }
1321
1997
  }
1322
1998
  },
@@ -1326,6 +2002,17 @@
1326
2002
  "idempotentHint": true,
1327
2003
  "openWorldHint": false
1328
2004
  },
2005
+ "_meta": {
2006
+ "dev.adbready/tool": {
2007
+ "category": "ui",
2008
+ "profiles": ["ui", "full"],
2009
+ "safety": "read-only",
2010
+ "sensitiveData": false,
2011
+ "destructive": false,
2012
+ "idempotent": true,
2013
+ "targetBound": true
2014
+ }
2015
+ },
1329
2016
  "outputSchema": {
1330
2017
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1331
2018
  "type": "object",
@@ -1401,6 +2088,10 @@
1401
2088
  "format": "uuid",
1402
2089
  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
1403
2090
  },
2091
+ "acquisition": {
2092
+ "type": "string",
2093
+ "enum": ["balanced", "fast", "strict"]
2094
+ },
1404
2095
  "interactiveOnly": {
1405
2096
  "type": "boolean"
1406
2097
  },
@@ -1417,6 +2108,17 @@
1417
2108
  "idempotentHint": true,
1418
2109
  "openWorldHint": false
1419
2110
  },
2111
+ "_meta": {
2112
+ "dev.adbready/tool": {
2113
+ "category": "ui",
2114
+ "profiles": ["ui", "debug", "full"],
2115
+ "safety": "read-only",
2116
+ "sensitiveData": true,
2117
+ "destructive": false,
2118
+ "idempotent": true,
2119
+ "targetBound": true
2120
+ }
2121
+ },
1420
2122
  "outputSchema": {
1421
2123
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1422
2124
  "type": "object",
@@ -1523,6 +2225,17 @@
1523
2225
  "idempotentHint": false,
1524
2226
  "openWorldHint": false
1525
2227
  },
2228
+ "_meta": {
2229
+ "dev.adbready/tool": {
2230
+ "category": "foundation",
2231
+ "profiles": ["session", "ui", "debug", "full"],
2232
+ "safety": "mutating",
2233
+ "sensitiveData": false,
2234
+ "destructive": false,
2235
+ "idempotent": false,
2236
+ "targetBound": true
2237
+ }
2238
+ },
1526
2239
  "outputSchema": {
1527
2240
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1528
2241
  "type": "object",
@@ -1614,6 +2327,17 @@
1614
2327
  "idempotentHint": true,
1615
2328
  "openWorldHint": false
1616
2329
  },
2330
+ "_meta": {
2331
+ "dev.adbready/tool": {
2332
+ "category": "foundation",
2333
+ "profiles": ["session", "ui", "debug", "full"],
2334
+ "safety": "mutating",
2335
+ "sensitiveData": false,
2336
+ "destructive": false,
2337
+ "idempotent": true,
2338
+ "targetBound": true
2339
+ }
2340
+ },
1617
2341
  "outputSchema": {
1618
2342
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1619
2343
  "type": "object",
@@ -1716,6 +2440,17 @@
1716
2440
  "idempotentHint": true,
1717
2441
  "openWorldHint": false
1718
2442
  },
2443
+ "_meta": {
2444
+ "dev.adbready/tool": {
2445
+ "category": "debug",
2446
+ "profiles": ["debug", "full"],
2447
+ "safety": "read-only",
2448
+ "sensitiveData": true,
2449
+ "destructive": false,
2450
+ "idempotent": true,
2451
+ "targetBound": false
2452
+ }
2453
+ },
1719
2454
  "outputSchema": {
1720
2455
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1721
2456
  "type": "object",
@@ -1793,6 +2528,17 @@
1793
2528
  "idempotentHint": true,
1794
2529
  "openWorldHint": false
1795
2530
  },
2531
+ "_meta": {
2532
+ "dev.adbready/tool": {
2533
+ "category": "foundation",
2534
+ "profiles": ["session", "ui", "debug", "full"],
2535
+ "safety": "read-only",
2536
+ "sensitiveData": false,
2537
+ "destructive": false,
2538
+ "idempotent": true,
2539
+ "targetBound": false
2540
+ }
2541
+ },
1796
2542
  "outputSchema": {
1797
2543
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1798
2544
  "type": "object",
@@ -1954,6 +2700,17 @@
1954
2700
  "idempotentHint": false,
1955
2701
  "openWorldHint": false
1956
2702
  },
2703
+ "_meta": {
2704
+ "dev.adbready/tool": {
2705
+ "category": "ui",
2706
+ "profiles": ["ui", "full"],
2707
+ "safety": "mutating",
2708
+ "sensitiveData": false,
2709
+ "destructive": false,
2710
+ "idempotent": false,
2711
+ "targetBound": true
2712
+ }
2713
+ },
1957
2714
  "outputSchema": {
1958
2715
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1959
2716
  "type": "object",
@@ -2046,6 +2803,17 @@
2046
2803
  "idempotentHint": false,
2047
2804
  "openWorldHint": false
2048
2805
  },
2806
+ "_meta": {
2807
+ "dev.adbready/tool": {
2808
+ "category": "foundation",
2809
+ "profiles": ["session", "ui", "debug", "full"],
2810
+ "safety": "mutating",
2811
+ "sensitiveData": false,
2812
+ "destructive": false,
2813
+ "idempotent": false,
2814
+ "targetBound": true
2815
+ }
2816
+ },
2049
2817
  "outputSchema": {
2050
2818
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2051
2819
  "type": "object",
@@ -2137,6 +2905,17 @@
2137
2905
  "idempotentHint": false,
2138
2906
  "openWorldHint": false
2139
2907
  },
2908
+ "_meta": {
2909
+ "dev.adbready/tool": {
2910
+ "category": "ui",
2911
+ "profiles": ["ui", "full"],
2912
+ "safety": "mutating",
2913
+ "sensitiveData": false,
2914
+ "destructive": false,
2915
+ "idempotent": false,
2916
+ "targetBound": true
2917
+ }
2918
+ },
2140
2919
  "outputSchema": {
2141
2920
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2142
2921
  "type": "object",
@@ -2219,6 +2998,126 @@
2219
2998
  "idempotentHint": true,
2220
2999
  "openWorldHint": false
2221
3000
  },
3001
+ "_meta": {
3002
+ "dev.adbready/tool": {
3003
+ "category": "foundation",
3004
+ "profiles": ["session", "ui", "debug", "full"],
3005
+ "safety": "read-only",
3006
+ "sensitiveData": false,
3007
+ "destructive": false,
3008
+ "idempotent": true,
3009
+ "targetBound": false
3010
+ }
3011
+ },
3012
+ "outputSchema": {
3013
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3014
+ "type": "object",
3015
+ "properties": {
3016
+ "schemaVersion": {
3017
+ "type": "number",
3018
+ "const": 1
3019
+ },
3020
+ "command": {
3021
+ "type": "string"
3022
+ },
3023
+ "commandId": {
3024
+ "type": "string"
3025
+ },
3026
+ "ok": {
3027
+ "type": "boolean"
3028
+ },
3029
+ "startedAt": {
3030
+ "type": "string"
3031
+ },
3032
+ "finishedAt": {
3033
+ "type": "string"
3034
+ },
3035
+ "durationMs": {
3036
+ "type": "number",
3037
+ "minimum": 0
3038
+ },
3039
+ "data": {
3040
+ "anyOf": [
3041
+ {},
3042
+ {
3043
+ "type": "null"
3044
+ }
3045
+ ]
3046
+ },
3047
+ "problems": {
3048
+ "type": "array",
3049
+ "items": {
3050
+ "type": "object",
3051
+ "properties": {
3052
+ "code": {
3053
+ "type": "string"
3054
+ }
3055
+ },
3056
+ "required": ["code"],
3057
+ "additionalProperties": {}
3058
+ }
3059
+ }
3060
+ },
3061
+ "required": [
3062
+ "schemaVersion",
3063
+ "command",
3064
+ "commandId",
3065
+ "ok",
3066
+ "startedAt",
3067
+ "finishedAt",
3068
+ "durationMs",
3069
+ "data",
3070
+ "problems"
3071
+ ],
3072
+ "additionalProperties": {}
3073
+ }
3074
+ },
3075
+ {
3076
+ "name": "respond_to_permission_dialog",
3077
+ "description": "Choose one exact action exposed by a standard Android runtime-permission dialog, then verify a fresh changed dialog state.",
3078
+ "inputSchema": {
3079
+ "type": "object",
3080
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3081
+ "properties": {
3082
+ "targetHandle": {
3083
+ "type": "string",
3084
+ "format": "uuid",
3085
+ "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
3086
+ },
3087
+ "decision": {
3088
+ "type": "string",
3089
+ "enum": [
3090
+ "allow",
3091
+ "allow-always",
3092
+ "allow-once",
3093
+ "allow-while-using",
3094
+ "deny",
3095
+ "deny-and-dont-ask-again"
3096
+ ]
3097
+ },
3098
+ "dryRun": {
3099
+ "type": "boolean"
3100
+ }
3101
+ },
3102
+ "required": ["decision"]
3103
+ },
3104
+ "annotations": {
3105
+ "readOnlyHint": false,
3106
+ "destructiveHint": false,
3107
+ "idempotentHint": false,
3108
+ "openWorldHint": false
3109
+ },
3110
+ "_meta": {
3111
+ "dev.adbready/tool": {
3112
+ "category": "ui",
3113
+ "profiles": ["ui", "full"],
3114
+ "safety": "mutating",
3115
+ "sensitiveData": false,
3116
+ "destructive": false,
3117
+ "idempotent": false,
3118
+ "targetBound": true
3119
+ }
3120
+ },
2222
3121
  "outputSchema": {
2223
3122
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2224
3123
  "type": "object",
@@ -2310,6 +3209,17 @@
2310
3209
  "idempotentHint": true,
2311
3210
  "openWorldHint": false
2312
3211
  },
3212
+ "_meta": {
3213
+ "dev.adbready/tool": {
3214
+ "category": "foundation",
3215
+ "profiles": ["session", "ui", "debug", "full"],
3216
+ "safety": "mutating",
3217
+ "sensitiveData": false,
3218
+ "destructive": false,
3219
+ "idempotent": true,
3220
+ "targetBound": true
3221
+ }
3222
+ },
2313
3223
  "outputSchema": {
2314
3224
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2315
3225
  "type": "object",
@@ -2439,6 +3349,17 @@
2439
3349
  "idempotentHint": false,
2440
3350
  "openWorldHint": false
2441
3351
  },
3352
+ "_meta": {
3353
+ "dev.adbready/tool": {
3354
+ "category": "ui",
3355
+ "profiles": ["ui", "full"],
3356
+ "safety": "mutating",
3357
+ "sensitiveData": false,
3358
+ "destructive": false,
3359
+ "idempotent": false,
3360
+ "targetBound": true
3361
+ }
3362
+ },
2442
3363
  "outputSchema": {
2443
3364
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2444
3365
  "type": "object",
@@ -2522,6 +3443,17 @@
2522
3443
  "idempotentHint": false,
2523
3444
  "openWorldHint": false
2524
3445
  },
3446
+ "_meta": {
3447
+ "dev.adbready/tool": {
3448
+ "category": "session",
3449
+ "profiles": ["session", "full"],
3450
+ "safety": "mutating",
3451
+ "sensitiveData": false,
3452
+ "destructive": false,
3453
+ "idempotent": false,
3454
+ "targetBound": true
3455
+ }
3456
+ },
2525
3457
  "outputSchema": {
2526
3458
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2527
3459
  "type": "object",
@@ -2606,6 +3538,17 @@
2606
3538
  "idempotentHint": true,
2607
3539
  "openWorldHint": false
2608
3540
  },
3541
+ "_meta": {
3542
+ "dev.adbready/tool": {
3543
+ "category": "session",
3544
+ "profiles": ["session", "full"],
3545
+ "safety": "mutating",
3546
+ "sensitiveData": false,
3547
+ "destructive": false,
3548
+ "idempotent": true,
3549
+ "targetBound": false
3550
+ }
3551
+ },
2609
3552
  "outputSchema": {
2610
3553
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2611
3554
  "type": "object",
@@ -2716,6 +3659,17 @@
2716
3659
  "idempotentHint": false,
2717
3660
  "openWorldHint": false
2718
3661
  },
3662
+ "_meta": {
3663
+ "dev.adbready/tool": {
3664
+ "category": "ui",
3665
+ "profiles": ["ui", "full"],
3666
+ "safety": "mutating",
3667
+ "sensitiveData": false,
3668
+ "destructive": false,
3669
+ "idempotent": false,
3670
+ "targetBound": true
3671
+ }
3672
+ },
2719
3673
  "outputSchema": {
2720
3674
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2721
3675
  "type": "object",
@@ -2877,6 +3831,17 @@
2877
3831
  "idempotentHint": false,
2878
3832
  "openWorldHint": false
2879
3833
  },
3834
+ "_meta": {
3835
+ "dev.adbready/tool": {
3836
+ "category": "ui",
3837
+ "profiles": ["ui", "full"],
3838
+ "safety": "mutating",
3839
+ "sensitiveData": false,
3840
+ "destructive": false,
3841
+ "idempotent": false,
3842
+ "targetBound": true
3843
+ }
3844
+ },
2880
3845
  "outputSchema": {
2881
3846
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2882
3847
  "type": "object",
@@ -2942,7 +3907,7 @@
2942
3907
  },
2943
3908
  {
2944
3909
  "name": "type_text_ui",
2945
- "description": "Type conservative shell-safe text into the focused Android field and optionally press enter.",
3910
+ "description": "Type bounded ASCII or capability-detected Unicode text into the focused Android field; use secretEnv to keep a sensitive value out of MCP arguments and retained results.",
2946
3911
  "inputSchema": {
2947
3912
  "type": "object",
2948
3913
  "$schema": "https://json-schema.org/draft/2020-12/schema",
@@ -2955,7 +3920,20 @@
2955
3920
  "text": {
2956
3921
  "type": "string",
2957
3922
  "minLength": 1,
2958
- "maxLength": 256
3923
+ "maxLength": 4096
3924
+ },
3925
+ "secretEnv": {
3926
+ "type": "string",
3927
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,127}$"
3928
+ },
3929
+ "inputMode": {
3930
+ "type": "string",
3931
+ "enum": ["ascii", "auto", "unicode"]
3932
+ },
3933
+ "typingDelayMs": {
3934
+ "type": "integer",
3935
+ "minimum": 0,
3936
+ "maximum": 2000
2959
3937
  },
2960
3938
  "submit": {
2961
3939
  "type": "boolean"
@@ -2963,8 +3941,7 @@
2963
3941
  "dryRun": {
2964
3942
  "type": "boolean"
2965
3943
  }
2966
- },
2967
- "required": ["text"]
3944
+ }
2968
3945
  },
2969
3946
  "annotations": {
2970
3947
  "readOnlyHint": false,
@@ -2972,6 +3949,17 @@
2972
3949
  "idempotentHint": false,
2973
3950
  "openWorldHint": false
2974
3951
  },
3952
+ "_meta": {
3953
+ "dev.adbready/tool": {
3954
+ "category": "ui",
3955
+ "profiles": ["ui", "full"],
3956
+ "safety": "mutating",
3957
+ "sensitiveData": false,
3958
+ "destructive": false,
3959
+ "idempotent": false,
3960
+ "targetBound": true
3961
+ }
3962
+ },
2975
3963
  "outputSchema": {
2976
3964
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2977
3965
  "type": "object",
@@ -3098,6 +4086,17 @@
3098
4086
  "idempotentHint": true,
3099
4087
  "openWorldHint": false
3100
4088
  },
4089
+ "_meta": {
4090
+ "dev.adbready/tool": {
4091
+ "category": "ui",
4092
+ "profiles": ["ui", "full"],
4093
+ "safety": "read-only",
4094
+ "sensitiveData": false,
4095
+ "destructive": false,
4096
+ "idempotent": true,
4097
+ "targetBound": true
4098
+ }
4099
+ },
3101
4100
  "outputSchema": {
3102
4101
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3103
4102
  "type": "object",