{
 "version": "v23-blog-2026-09-22",
 "origin": "https://apklint.com",
 "name": "APKLint",
 "generatedAt": "2026-09-22",
 "spec": "https://developer.chrome.com/docs/ai/webmcp",
 "note": "Static per-page WebMCP tool registry. Each entry has a unique id; name is the actual runtime tool name registered on the page. Error pages, alias duplicates, and h5games runtime pages are excluded. Editorial extension: blog routes never become direct analyzers because they contain a search field. Public read/search actions have read-only annotations. Tool count counts action/page registrations, not unique analysis pages.",
 "toolCount": 1292,
 "tools": [
  {
   "id": "aab_analyzer_get_page_context",
   "name": "get_page_context",
   "pageSlug": "aab-analyzer",
   "url": "https://apklint.com/aab-analyzer/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "aab_analyzer_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "aab-analyzer",
   "url": "https://apklint.com/aab-analyzer/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "aab_analyzer_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "aab-analyzer",
   "url": "https://apklint.com/aab-analyzer/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "get_page_context",
   "title": "Get page context",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   },
   "id": "about_get_page_context",
   "pageSlug": "about",
   "url": "https://apklint.com/about",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": false
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "about_list_sections",
   "pageSlug": "about",
   "url": "https://apklint.com/about",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "id": "accessibility_scanner_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "accessibility-scanner-android",
   "url": "https://apklint.com/accessibility-scanner-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "accessibility_scanner_android_list_sections",
   "name": "list_sections",
   "pageSlug": "accessibility-scanner-android",
   "url": "https://apklint.com/accessibility-scanner-android/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "ad_sdk_tracker_detector_get_page_context",
   "name": "get_page_context",
   "pageSlug": "ad-sdk-tracker-detector",
   "url": "https://apklint.com/ad-sdk-tracker-detector/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "ad_sdk_tracker_detector_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "ad-sdk-tracker-detector",
   "url": "https://apklint.com/ad-sdk-tracker-detector/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "ad_sdk_tracker_detector_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "ad-sdk-tracker-detector",
   "url": "https://apklint.com/ad-sdk-tracker-detector/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "admob_advertising_id_get_page_context",
   "name": "get_page_context",
   "pageSlug": "admob-advertising-id",
   "url": "https://apklint.com/admob-advertising-id/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "admob_advertising_id_tool",
   "name": "admob_advertising_id_tool",
   "pageSlug": "admob-advertising-id",
   "url": "https://apklint.com/admob-advertising-id/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Admob advertising id tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "admob_advertising_id_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "admob-advertising-id",
   "url": "https://apklint.com/admob-advertising-id/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "admob_advertising_id_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "admob-advertising-id",
   "url": "https://apklint.com/admob-advertising-id/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_app_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-app-checker",
   "url": "https://apklint.com/android-app-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_app_checker_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "android-app-checker",
   "url": "https://apklint.com/android-app-checker/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_app_checker_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "android-app-checker",
   "url": "https://apklint.com/android-app-checker/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_app_performance_analyzer_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-app-performance-analyzer",
   "url": "https://apklint.com/android-app-performance-analyzer/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_app_performance_analyzer_list_sections",
   "name": "list_sections",
   "pageSlug": "android-app-performance-analyzer",
   "url": "https://apklint.com/android-app-performance-analyzer/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_app_scanner_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-app-scanner",
   "url": "https://apklint.com/android-app-scanner/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_app_scanner_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "android-app-scanner",
   "url": "https://apklint.com/android-app-scanner/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_app_scanner_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "android-app-scanner",
   "url": "https://apklint.com/android-app-scanner/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_cleartext_traffic_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-cleartext-traffic-checker",
   "url": "https://apklint.com/android-cleartext-traffic-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_cleartext_traffic_checker_tool",
   "name": "android_cleartext_traffic_checker_tool",
   "pageSlug": "android-cleartext-traffic-checker",
   "url": "https://apklint.com/android-cleartext-traffic-checker/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Android cleartext traffic checker tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_cleartext_traffic_checker_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "android-cleartext-traffic-checker",
   "url": "https://apklint.com/android-cleartext-traffic-checker/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_cleartext_traffic_checker_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "android-cleartext-traffic-checker",
   "url": "https://apklint.com/android-cleartext-traffic-checker/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_code_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-code-checker",
   "url": "https://apklint.com/android-code-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_code_checker_tool",
   "name": "android_code_checker_tool",
   "pageSlug": "android-code-checker",
   "url": "https://apklint.com/android-code-checker/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Android code checker tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_code_checker_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "android-code-checker",
   "url": "https://apklint.com/android-code-checker/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_code_checker_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "android-code-checker",
   "url": "https://apklint.com/android-code-checker/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_crash_dump_analysis_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-crash-dump-analysis",
   "url": "https://apklint.com/android-crash-dump-analysis/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_crash_dump_analysis_tool",
   "name": "android_crash_dump_analysis_tool",
   "pageSlug": "android-crash-dump-analysis",
   "url": "https://apklint.com/android-crash-dump-analysis/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Android crash dump analysis tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_crash_dump_analysis_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "android-crash-dump-analysis",
   "url": "https://apklint.com/android-crash-dump-analysis/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_crash_dump_analysis_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "android-crash-dump-analysis",
   "url": "https://apklint.com/android-crash-dump-analysis/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_exported_activity_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-exported-activity",
   "url": "https://apklint.com/android-exported-activity/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_exported_activity_tool",
   "name": "android_exported_activity_tool",
   "pageSlug": "android-exported-activity",
   "url": "https://apklint.com/android-exported-activity/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Android exported activity tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_exported_activity_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "android-exported-activity",
   "url": "https://apklint.com/android-exported-activity/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_exported_activity_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "android-exported-activity",
   "url": "https://apklint.com/android-exported-activity/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_game_privacy_policy_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-game-privacy-policy",
   "url": "https://apklint.com/android-game-privacy-policy/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_game_privacy_policy_list_sections",
   "name": "list_sections",
   "pageSlug": "android-game-privacy-policy",
   "url": "https://apklint.com/android-game-privacy-policy/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_lint_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-lint",
   "url": "https://apklint.com/android-lint/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_lint_tool",
   "name": "android_lint_tool",
   "pageSlug": "android-lint",
   "url": "https://apklint.com/android-lint/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Android lint tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_lint_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "android-lint",
   "url": "https://apklint.com/android-lint/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_lint_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "android-lint",
   "url": "https://apklint.com/android-lint/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_network_security_config_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-network-security-config",
   "url": "https://apklint.com/android-network-security-config/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_network_security_config_tool",
   "name": "android_network_security_config_tool",
   "pageSlug": "android-network-security-config",
   "url": "https://apklint.com/android-network-security-config/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Android network security config tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_network_security_config_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "android-network-security-config",
   "url": "https://apklint.com/android-network-security-config/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_network_security_config_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "android-network-security-config",
   "url": "https://apklint.com/android-network-security-config/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_privacy_api_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-privacy-api-checker",
   "url": "https://apklint.com/android-privacy-api-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_privacy_api_checker_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "android-privacy-api-checker",
   "url": "https://apklint.com/android-privacy-api-checker/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_privacy_api_checker_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "android-privacy-api-checker",
   "url": "https://apklint.com/android-privacy-api-checker/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_release_checklist_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-release-checklist",
   "url": "https://apklint.com/android-release-checklist/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_release_checklist_list_sections",
   "name": "list_sections",
   "pageSlug": "android-release-checklist",
   "url": "https://apklint.com/android-release-checklist/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_security_report_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-security-report",
   "url": "https://apklint.com/android-security-report/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_security_report_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "android-security-report",
   "url": "https://apklint.com/android-security-report/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_security_report_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "android-security-report",
   "url": "https://apklint.com/android-security-report/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_security_scanner_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-security-scanner",
   "url": "https://apklint.com/android-security-scanner/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_security_scanner_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "android-security-scanner",
   "url": "https://apklint.com/android-security-scanner/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_security_scanner_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "android-security-scanner",
   "url": "https://apklint.com/android-security-scanner/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_signing_certificate_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-signing-certificate",
   "url": "https://apklint.com/android-signing-certificate/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_signing_certificate_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "android-signing-certificate",
   "url": "https://apklint.com/android-signing-certificate/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_signing_certificate_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "android-signing-certificate",
   "url": "https://apklint.com/android-signing-certificate/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_static_code_analysis_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-static-code-analysis",
   "url": "https://apklint.com/android-static-code-analysis/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_static_code_analysis_tool",
   "name": "android_static_code_analysis_tool",
   "pageSlug": "android-static-code-analysis",
   "url": "https://apklint.com/android-static-code-analysis/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Android static code analysis tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_static_code_analysis_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "android-static-code-analysis",
   "url": "https://apklint.com/android-static-code-analysis/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_static_code_analysis_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "android-static-code-analysis",
   "url": "https://apklint.com/android-static-code-analysis/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "android_vitals_get_page_context",
   "name": "get_page_context",
   "pageSlug": "android-vitals",
   "url": "https://apklint.com/android-vitals/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "android_vitals_list_sections",
   "name": "list_sections",
   "pageSlug": "android-vitals",
   "url": "https://apklint.com/android-vitals/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_analyzer_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-analyzer",
   "url": "https://apklint.com/apk-analyzer/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_analyzer_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-analyzer",
   "url": "https://apklint.com/apk-analyzer/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_analyzer_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-analyzer",
   "url": "https://apklint.com/apk-analyzer/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-checker",
   "url": "https://apklint.com/apk-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_checker_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-checker",
   "url": "https://apklint.com/apk-checker/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_checker_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-checker",
   "url": "https://apklint.com/apk-checker/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_compress_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-compress",
   "url": "https://apklint.com/apk-compress/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_compress_list_sections",
   "name": "list_sections",
   "pageSlug": "apk-compress",
   "url": "https://apklint.com/apk-compress/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_decompiler_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-decompiler",
   "url": "https://apklint.com/apk-decompiler/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_decompiler_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-decompiler",
   "url": "https://apklint.com/apk-decompiler/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_decompiler_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-decompiler",
   "url": "https://apklint.com/apk-decompiler/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_malware_scanner_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-malware-scanner",
   "url": "https://apklint.com/apk-malware-scanner/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_malware_scanner_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-malware-scanner",
   "url": "https://apklint.com/apk-malware-scanner/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_malware_scanner_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-malware-scanner",
   "url": "https://apklint.com/apk-malware-scanner/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_scanner_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-scanner",
   "url": "https://apklint.com/apk-scanner/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_scanner_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-scanner",
   "url": "https://apklint.com/apk-scanner/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_scanner_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-scanner",
   "url": "https://apklint.com/apk-scanner/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_signature_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-signature-checker",
   "url": "https://apklint.com/apk-signature-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_signature_checker_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-signature-checker",
   "url": "https://apklint.com/apk-signature-checker/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_signature_checker_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-signature-checker",
   "url": "https://apklint.com/apk-signature-checker/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_size_analyzer_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-size-analyzer",
   "url": "https://apklint.com/apk-size-analyzer/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_size_analyzer_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-size-analyzer",
   "url": "https://apklint.com/apk-size-analyzer/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_size_analyzer_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-size-analyzer",
   "url": "https://apklint.com/apk-size-analyzer/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_virus_scanner_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-virus-scanner",
   "url": "https://apklint.com/apk-virus-scanner/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_virus_scanner_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-virus-scanner",
   "url": "https://apklint.com/apk-virus-scanner/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_virus_scanner_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-virus-scanner",
   "url": "https://apklint.com/apk-virus-scanner/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_vulnerability_scanner_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apk-vulnerability-scanner",
   "url": "https://apklint.com/apk-vulnerability-scanner/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apk_vulnerability_scanner_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apk-vulnerability-scanner",
   "url": "https://apklint.com/apk-vulnerability-scanner/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apk_vulnerability_scanner_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apk-vulnerability-scanner",
   "url": "https://apklint.com/apk-vulnerability-scanner/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apktool_get_page_context",
   "name": "get_page_context",
   "pageSlug": "apktool",
   "url": "https://apklint.com/apktool/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "apktool_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "apktool",
   "url": "https://apklint.com/apktool/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "apktool_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "apktool",
   "url": "https://apklint.com/apktool/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_inspector_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "app-inspector-apk",
   "url": "https://apklint.com/app-inspector-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_inspector_apk_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "app-inspector-apk",
   "url": "https://apklint.com/app-inspector-apk/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "app_inspector_apk_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "app-inspector-apk",
   "url": "https://apklint.com/app-inspector-apk/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_launch_checklist_get_page_context",
   "name": "get_page_context",
   "pageSlug": "app-launch-checklist",
   "url": "https://apklint.com/app-launch-checklist/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_launch_checklist_list_sections",
   "name": "list_sections",
   "pageSlug": "app-launch-checklist",
   "url": "https://apklint.com/app-launch-checklist/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_ranking_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "app-ranking-checker",
   "url": "https://apklint.com/app-ranking-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_ranking_checker_tool",
   "name": "app_ranking_checker_tool",
   "pageSlug": "app-ranking-checker",
   "url": "https://apklint.com/app-ranking-checker/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     },
     "query": {
      "type": "string"
     }
    },
    "additionalProperties": false
   },
   "title": "App ranking checker tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "app_ranking_checker_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "app-ranking-checker",
   "url": "https://apklint.com/app-ranking-checker/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_ranking_checker_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "app-ranking-checker",
   "url": "https://apklint.com/app-ranking-checker/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "app_security_testing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "app-security-testing",
   "url": "https://apklint.com/app-security-testing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_security_testing_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "app-security-testing",
   "url": "https://apklint.com/app-security-testing/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "app_security_testing_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "app-security-testing",
   "url": "https://apklint.com/app-security-testing/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_store_optimization_tool_get_page_context",
   "name": "get_page_context",
   "pageSlug": "app-store-optimization-tool",
   "url": "https://apklint.com/app-store-optimization-tool/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_store_optimization_tool_tool",
   "name": "app_store_optimization_tool_tool",
   "pageSlug": "app-store-optimization-tool",
   "url": "https://apklint.com/app-store-optimization-tool/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     },
     "query": {
      "type": "string"
     }
    },
    "additionalProperties": false
   },
   "title": "App store optimization tool tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "app_store_optimization_tool_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "app-store-optimization-tool",
   "url": "https://apklint.com/app-store-optimization-tool/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "app_store_optimization_tool_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "app-store-optimization-tool",
   "url": "https://apklint.com/app-store-optimization-tool/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "bug_finder_app_for_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "bug-finder-app-for-android",
   "url": "https://apklint.com/bug-finder-app-for-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "bug_finder_app_for_android_tool",
   "name": "bug_finder_app_for_android_tool",
   "pageSlug": "bug-finder-app-for-android",
   "url": "https://apklint.com/bug-finder-app-for-android/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Bug finder app for android tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "bug_finder_app_for_android_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "bug-finder-app-for-android",
   "url": "https://apklint.com/bug-finder-app-for-android/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "bug_finder_app_for_android_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "bug-finder-app-for-android",
   "url": "https://apklint.com/bug-finder-app-for-android/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "name": "get_page_context",
   "title": "Get page context",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   },
   "id": "contact_get_page_context",
   "pageSlug": "contact",
   "url": "https://apklint.com/contact",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": false
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "contact_list_sections",
   "pageSlug": "contact",
   "url": "https://apklint.com/contact",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "get_page_context",
   "title": "Get page context",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   },
   "id": "cookies_get_page_context",
   "pageSlug": "cookies",
   "url": "https://apklint.com/cookies",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": false
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "cookies_list_sections",
   "pageSlug": "cookies",
   "url": "https://apklint.com/cookies",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "id": "dangerous_permission_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "dangerous-permission-android",
   "url": "https://apklint.com/dangerous-permission-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "dangerous_permission_android_tool",
   "name": "dangerous_permission_android_tool",
   "pageSlug": "dangerous-permission-android",
   "url": "https://apklint.com/dangerous-permission-android/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Dangerous permission android tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "dangerous_permission_android_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "dangerous-permission-android",
   "url": "https://apklint.com/dangerous-permission-android/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "dangerous_permission_android_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "dangerous-permission-android",
   "url": "https://apklint.com/dangerous-permission-android/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "data_safety_play_console_get_page_context",
   "name": "get_page_context",
   "pageSlug": "data-safety-play-console",
   "url": "https://apklint.com/data-safety-play-console/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "data_safety_play_console_tool",
   "name": "data_safety_play_console_tool",
   "pageSlug": "data-safety-play-console",
   "url": "https://apklint.com/data-safety-play-console/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Data safety play console tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "data_safety_play_console_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "data-safety-play-console",
   "url": "https://apklint.com/data-safety-play-console/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "data_safety_play_console_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "data-safety-play-console",
   "url": "https://apklint.com/data-safety-play-console/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "debuggable_apps_get_page_context",
   "name": "get_page_context",
   "pageSlug": "debuggable-apps",
   "url": "https://apklint.com/debuggable-apps/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "debuggable_apps_tool",
   "name": "debuggable_apps_tool",
   "pageSlug": "debuggable-apps",
   "url": "https://apklint.com/debuggable-apps/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Debuggable apps tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "debuggable_apps_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "debuggable-apps",
   "url": "https://apklint.com/debuggable-apps/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "debuggable_apps_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "debuggable-apps",
   "url": "https://apklint.com/debuggable-apps/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "decompile_flutter_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "decompile-flutter-apk",
   "url": "https://apklint.com/decompile-flutter-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "decompile_flutter_apk_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "decompile-flutter-apk",
   "url": "https://apklint.com/decompile-flutter-apk/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "decompile_flutter_apk_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "decompile-flutter-apk",
   "url": "https://apklint.com/decompile-flutter-apk/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "decompile_react_native_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "decompile-react-native-apk",
   "url": "https://apklint.com/decompile-react-native-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "decompile_react_native_apk_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "decompile-react-native-apk",
   "url": "https://apklint.com/decompile-react-native-apk/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "decompile_react_native_apk_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "decompile-react-native-apk",
   "url": "https://apklint.com/decompile-react-native-apk/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "decompile_unity_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "decompile-unity-apk",
   "url": "https://apklint.com/decompile-unity-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "decompile_unity_apk_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "decompile-unity-apk",
   "url": "https://apklint.com/decompile-unity-apk/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "decompile_unity_apk_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "decompile-unity-apk",
   "url": "https://apklint.com/decompile-unity-apk/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "dex_smali_analyzer_get_page_context",
   "name": "get_page_context",
   "pageSlug": "dex-smali-analyzer",
   "url": "https://apklint.com/dex-smali-analyzer/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "dex_smali_analyzer_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "dex-smali-analyzer",
   "url": "https://apklint.com/dex-smali-analyzer/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "dex_smali_analyzer_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "dex-smali-analyzer",
   "url": "https://apklint.com/dex-smali-analyzer/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "get_page_context",
   "title": "Get page context",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   },
   "id": "disclaimer_get_page_context",
   "pageSlug": "disclaimer",
   "url": "https://apklint.com/disclaimer",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": false
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "disclaimer_list_sections",
   "pageSlug": "disclaimer",
   "url": "https://apklint.com/disclaimer",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "id": "firebase_app_check_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "firebase-app-check-android",
   "url": "https://apklint.com/firebase-app-check-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "firebase_app_check_android_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "firebase-app-check-android",
   "url": "https://apklint.com/firebase-app-check-android/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "firebase_app_check_android_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "firebase-app-check-android",
   "url": "https://apklint.com/firebase-app-check-android/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_app_rejected_get_page_context",
   "name": "get_page_context",
   "pageSlug": "google-play-app-rejected",
   "url": "https://apklint.com/google-play-app-rejected/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_app_rejected_list_sections",
   "name": "list_sections",
   "pageSlug": "google-play-app-rejected",
   "url": "https://apklint.com/google-play-app-rejected/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_developer_policies_get_page_context",
   "name": "get_page_context",
   "pageSlug": "google-play-developer-policies",
   "url": "https://apklint.com/google-play-developer-policies/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_developer_policies_list_sections",
   "name": "list_sections",
   "pageSlug": "google-play-developer-policies",
   "url": "https://apklint.com/google-play-developer-policies/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_families_policy_get_page_context",
   "name": "get_page_context",
   "pageSlug": "google-play-families-policy",
   "url": "https://apklint.com/google-play-families-policy/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_families_policy_list_sections",
   "name": "list_sections",
   "pageSlug": "google-play-families-policy",
   "url": "https://apklint.com/google-play-families-policy/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_sdk_index_get_page_context",
   "name": "get_page_context",
   "pageSlug": "google-play-sdk-index",
   "url": "https://apklint.com/google-play-sdk-index/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_sdk_index_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "google-play-sdk-index",
   "url": "https://apklint.com/google-play-sdk-index/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "google_play_sdk_index_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "google-play-sdk-index",
   "url": "https://apklint.com/google-play-sdk-index/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_target_sdk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "google-play-target-sdk",
   "url": "https://apklint.com/google-play-target-sdk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_target_sdk_tool",
   "name": "google_play_target_sdk_tool",
   "pageSlug": "google-play-target-sdk",
   "url": "https://apklint.com/google-play-target-sdk/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Google play target sdk tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "google_play_target_sdk_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "google-play-target-sdk",
   "url": "https://apklint.com/google-play-target-sdk/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "google_play_target_sdk_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "google-play-target-sdk",
   "url": "https://apklint.com/google-play-target-sdk/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "gradle_dependency_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "gradle-dependency-checker",
   "url": "https://apklint.com/gradle-dependency-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "gradle_dependency_checker_tool",
   "name": "gradle_dependency_checker_tool",
   "pageSlug": "gradle-dependency-checker",
   "url": "https://apklint.com/gradle-dependency-checker/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Gradle dependency checker tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "gradle_dependency_checker_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "gradle-dependency-checker",
   "url": "https://apklint.com/gradle-dependency-checker/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "gradle_dependency_checker_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "gradle-dependency-checker",
   "url": "https://apklint.com/gradle-dependency-checker/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "gradle_lint_get_page_context",
   "name": "get_page_context",
   "pageSlug": "gradle-lint",
   "url": "https://apklint.com/gradle-lint/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "gradle_lint_tool",
   "name": "gradle_lint_tool",
   "pageSlug": "gradle-lint",
   "url": "https://apklint.com/gradle-lint/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Gradle lint tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "gradle_lint_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "gradle-lint",
   "url": "https://apklint.com/gradle-lint/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "gradle_lint_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "gradle-lint",
   "url": "https://apklint.com/gradle-lint/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "gradle_vulnerability_scan_get_page_context",
   "name": "get_page_context",
   "pageSlug": "gradle-vulnerability-scan",
   "url": "https://apklint.com/gradle-vulnerability-scan/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "gradle_vulnerability_scan_tool",
   "name": "gradle_vulnerability_scan_tool",
   "pageSlug": "gradle-vulnerability-scan",
   "url": "https://apklint.com/gradle-vulnerability-scan/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Gradle vulnerability scan tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "gradle_vulnerability_scan_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "gradle-vulnerability-scan",
   "url": "https://apklint.com/gradle-vulnerability-scan/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "gradle_vulnerability_scan_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "gradle-vulnerability-scan",
   "url": "https://apklint.com/gradle-vulnerability-scan/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "root_get_page_context",
   "name": "get_page_context",
   "pageSlug": "home",
   "url": "https://apklint.com/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "root_search_apklint_tools",
   "name": "search_apklint_tools",
   "pageSlug": "home",
   "url": "https://apklint.com/",
   "description": "Search this site's APKLint tools using the visible search box; matching APKLint tools then appear on the page. Runs in your browser; nothing is sent to a server.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "search",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "description": "Keyword to search for."
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "title": "Search apklint tools",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "root_list_apklint_tools",
   "name": "list_apklint_tools",
   "pageSlug": "home",
   "url": "https://apklint.com/",
   "description": "List the APKLint tools shown on this page (name and URL) so you can pick one to open. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List apklint tools",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "root_open_apklint_tool",
   "name": "open_apklint_tool",
   "pageSlug": "home",
   "url": "https://apklint.com/",
   "description": "Open a APKLint tool listed on this page by its visible name. Navigates to that page.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "navigation",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "Visible name of the APKLint tool to open."
     }
    },
    "required": [
     "name"
    ],
    "additionalProperties": false
   },
   "title": "Open apklint tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "kotlin_lint_get_page_context",
   "name": "get_page_context",
   "pageSlug": "kotlin-lint",
   "url": "https://apklint.com/kotlin-lint/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "kotlin_lint_tool",
   "name": "kotlin_lint_tool",
   "pageSlug": "kotlin-lint",
   "url": "https://apklint.com/kotlin-lint/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Kotlin lint tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "kotlin_lint_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "kotlin-lint",
   "url": "https://apklint.com/kotlin-lint/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "kotlin_lint_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "kotlin-lint",
   "url": "https://apklint.com/kotlin-lint/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "manifest_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "manifest-checker",
   "url": "https://apklint.com/manifest-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "manifest_checker_tool",
   "name": "manifest_checker_tool",
   "pageSlug": "manifest-checker",
   "url": "https://apklint.com/manifest-checker/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Manifest checker tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "manifest_checker_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "manifest-checker",
   "url": "https://apklint.com/manifest-checker/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "manifest_checker_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "manifest-checker",
   "url": "https://apklint.com/manifest-checker/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "min_sdk_compatibility_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "min-sdk-compatibility-checker",
   "url": "https://apklint.com/min-sdk-compatibility-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "min_sdk_compatibility_checker_tool",
   "name": "min_sdk_compatibility_checker_tool",
   "pageSlug": "min-sdk-compatibility-checker",
   "url": "https://apklint.com/min-sdk-compatibility-checker/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     }
    },
    "additionalProperties": false
   },
   "title": "Min sdk compatibility checker tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "min_sdk_compatibility_checker_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "min-sdk-compatibility-checker",
   "url": "https://apklint.com/min-sdk-compatibility-checker/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "min_sdk_compatibility_checker_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "min-sdk-compatibility-checker",
   "url": "https://apklint.com/min-sdk-compatibility-checker/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "owasp_mobile_get_page_context",
   "name": "get_page_context",
   "pageSlug": "owasp-mobile",
   "url": "https://apklint.com/owasp-mobile/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "owasp_mobile_list_sections",
   "name": "list_sections",
   "pageSlug": "owasp-mobile",
   "url": "https://apklint.com/owasp-mobile/",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "navigation",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "List sections",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "play_store_keyword_research_get_page_context",
   "name": "get_page_context",
   "pageSlug": "play-store-keyword-research",
   "url": "https://apklint.com/play-store-keyword-research/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "play_store_keyword_research_tool",
   "name": "play_store_keyword_research_tool",
   "pageSlug": "play-store-keyword-research",
   "url": "https://apklint.com/play-store-keyword-research/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     },
     "query": {
      "type": "string"
     }
    },
    "additionalProperties": false
   },
   "title": "Play store keyword research tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "play_store_keyword_research_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "play-store-keyword-research",
   "url": "https://apklint.com/play-store-keyword-research/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "play_store_keyword_research_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "play-store-keyword-research",
   "url": "https://apklint.com/play-store-keyword-research/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "privacy_policy_generator_free_get_page_context",
   "name": "get_page_context",
   "pageSlug": "privacy-policy-generator-free",
   "url": "https://apklint.com/privacy-policy-generator-free/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "privacy_policy_generator_free_tool",
   "name": "privacy_policy_generator_free_tool",
   "pageSlug": "privacy-policy-generator-free",
   "url": "https://apklint.com/privacy-policy-generator-free/",
   "description": "Run this page’s declared APKLint operation. Input is sent to APKLint’s backend; returns the complete owned result and exact rawText.",
   "safetyLevel": "direct",
   "readOnlyHint": false,
   "untrustedContentHint": true,
   "category": "action",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {
     "input": {
      "type": "string",
      "description": "Optional text for the primary input."
     },
     "appName": {
      "type": "string"
     },
     "email": {
      "type": "string"
     },
     "data": {
      "type": "string"
     },
     "children": {
      "type": "string"
     },
     "ads": {
      "type": "string"
     },
     "analytics": {
      "type": "string"
     }
    },
    "additionalProperties": false
   },
   "title": "Privacy policy generator free tool",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": true,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "privacy_policy_generator_free_get_visible_result",
   "name": "get_visible_result",
   "pageSlug": "privacy-policy-generator-free",
   "url": "https://apklint.com/privacy-policy-generator-free/",
   "description": "Return the complete canonical result of the current completed operation, including exact rawText. Does not execute an operation or read file bytes.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get visible result",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "privacy_policy_generator_free_focus_primary_input",
   "name": "focus_primary_input",
   "pageSlug": "privacy-policy-generator-free",
   "url": "https://apklint.com/privacy-policy-generator-free/",
   "description": "Move keyboard focus to this tool's primary input or control. Does not submit, upload, calculate, or change any data.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "input",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus primary input",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "name": "get_page_context",
   "title": "Get page context",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   },
   "id": "privacy_get_page_context",
   "pageSlug": "privacy",
   "url": "https://apklint.com/privacy",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": false
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "privacy_list_sections",
   "pageSlug": "privacy",
   "url": "https://apklint.com/privacy",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "id": "proguard_r8_obfuscation_checker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "proguard-r8-obfuscation-checker",
   "url": "https://apklint.com/proguard-r8-obfuscation-checker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "id": "proguard_r8_obfuscation_checker_focus_file_upload",
   "name": "focus_file_upload",
   "pageSlug": "proguard-r8-obfuscation-checker",
   "url": "https://apklint.com/proguard-r8-obfuscation-checker/",
   "description": "This action only focuses the file chooser and does not itself read or upload a file. If the user starts analysis, the selected file is uploaded to APKLint's analysis backend and handled according to the site's stated retention policy.",
   "safetyLevel": "file_selection_required",
   "readOnlyHint": false,
   "untrustedContentHint": false,
   "category": "file",
   "requiresUserGesture": true,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Focus file upload",
   "annotations": {
    "readOnlyHint": false,
    "untrustedContentHint": false,
    "readOnly": false,
    "destructive": false
   }
  },
  {
   "id": "proguard_r8_obfuscation_checker_get_tool_status",
   "name": "get_tool_status",
   "pageSlug": "proguard-r8-obfuscation-checker",
   "url": "https://apklint.com/proguard-r8-obfuscation-checker/",
   "description": "Report whether a file has been selected and whether a visible result/status is shown. Never reads file contents.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get tool status",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "get_page_context",
   "title": "Get page context",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   },
   "id": "terms_get_page_context",
   "pageSlug": "terms",
   "url": "https://apklint.com/terms",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": false
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "terms_list_sections",
   "pageSlug": "terms",
   "url": "https://apklint.com/terms",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "id": "blog_apk_file_structure_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-file-structure",
   "url": "https://apklint.com/blog/apk-file-structure/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_file_structure_list_sections",
   "pageSlug": "blog/apk-file-structure",
   "url": "https://apklint.com/blog/apk-file-structure/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_file_structure_search_blog",
   "pageSlug": "blog/apk-file-structure",
   "url": "https://apklint.com/blog/apk-file-structure/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_file_structure_read_article",
   "pageSlug": "blog/apk-file-structure",
   "url": "https://apklint.com/blog/apk-file-structure/"
  },
  {
   "id": "blog_android_studio_analyze_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-studio-analyze-apk",
   "url": "https://apklint.com/blog/android-studio-analyze-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_studio_analyze_apk_list_sections",
   "pageSlug": "blog/android-studio-analyze-apk",
   "url": "https://apklint.com/blog/android-studio-analyze-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_studio_analyze_apk_search_blog",
   "pageSlug": "blog/android-studio-analyze-apk",
   "url": "https://apklint.com/blog/android-studio-analyze-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_studio_analyze_apk_read_article",
   "pageSlug": "blog/android-studio-analyze-apk",
   "url": "https://apklint.com/blog/android-studio-analyze-apk/"
  },
  {
   "id": "blog_check_apk_file_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/check-apk-file",
   "url": "https://apklint.com/blog/check-apk-file/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_check_apk_file_list_sections",
   "pageSlug": "blog/check-apk-file",
   "url": "https://apklint.com/blog/check-apk-file/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_check_apk_file_search_blog",
   "pageSlug": "blog/check-apk-file",
   "url": "https://apklint.com/blog/check-apk-file/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_check_apk_file_read_article",
   "pageSlug": "blog/check-apk-file",
   "url": "https://apklint.com/blog/check-apk-file/"
  },
  {
   "id": "blog_apk_info_package_version_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-info-package-version",
   "url": "https://apklint.com/blog/apk-info-package-version/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_info_package_version_list_sections",
   "pageSlug": "blog/apk-info-package-version",
   "url": "https://apklint.com/blog/apk-info-package-version/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_info_package_version_search_blog",
   "pageSlug": "blog/apk-info-package-version",
   "url": "https://apklint.com/blog/apk-info-package-version/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_info_package_version_read_article",
   "pageSlug": "blog/apk-info-package-version",
   "url": "https://apklint.com/blog/apk-info-package-version/"
  },
  {
   "id": "blog_apk_download_installed_size_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-download-installed-size",
   "url": "https://apklint.com/blog/apk-download-installed-size/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_download_installed_size_list_sections",
   "pageSlug": "blog/apk-download-installed-size",
   "url": "https://apklint.com/blog/apk-download-installed-size/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_download_installed_size_search_blog",
   "pageSlug": "blog/apk-download-installed-size",
   "url": "https://apklint.com/blog/apk-download-installed-size/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_download_installed_size_read_article",
   "pageSlug": "blog/apk-download-installed-size",
   "url": "https://apklint.com/blog/apk-download-installed-size/"
  },
  {
   "id": "blog_reduce_apk_size_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/reduce-apk-size",
   "url": "https://apklint.com/blog/reduce-apk-size/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_reduce_apk_size_list_sections",
   "pageSlug": "blog/reduce-apk-size",
   "url": "https://apklint.com/blog/reduce-apk-size/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_reduce_apk_size_search_blog",
   "pageSlug": "blog/reduce-apk-size",
   "url": "https://apklint.com/blog/reduce-apk-size/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_reduce_apk_size_read_article",
   "pageSlug": "blog/reduce-apk-size",
   "url": "https://apklint.com/blog/reduce-apk-size/"
  },
  {
   "id": "blog_apk_size_reducer_limits_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-size-reducer-limits",
   "url": "https://apklint.com/blog/apk-size-reducer-limits/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_size_reducer_limits_list_sections",
   "pageSlug": "blog/apk-size-reducer-limits",
   "url": "https://apklint.com/blog/apk-size-reducer-limits/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_size_reducer_limits_search_blog",
   "pageSlug": "blog/apk-size-reducer-limits",
   "url": "https://apklint.com/blog/apk-size-reducer-limits/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_size_reducer_limits_read_article",
   "pageSlug": "blog/apk-size-reducer-limits",
   "url": "https://apklint.com/blog/apk-size-reducer-limits/"
  },
  {
   "id": "blog_apk_to_source_code_limits_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-to-source-code-limits",
   "url": "https://apklint.com/blog/apk-to-source-code-limits/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_to_source_code_limits_list_sections",
   "pageSlug": "blog/apk-to-source-code-limits",
   "url": "https://apklint.com/blog/apk-to-source-code-limits/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_to_source_code_limits_search_blog",
   "pageSlug": "blog/apk-to-source-code-limits",
   "url": "https://apklint.com/blog/apk-to-source-code-limits/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_to_source_code_limits_read_article",
   "pageSlug": "blog/apk-to-source-code-limits",
   "url": "https://apklint.com/blog/apk-to-source-code-limits/"
  },
  {
   "id": "blog_decode_apk_resources_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/decode-apk-resources",
   "url": "https://apklint.com/blog/decode-apk-resources/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_decode_apk_resources_list_sections",
   "pageSlug": "blog/decode-apk-resources",
   "url": "https://apklint.com/blog/decode-apk-resources/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decode_apk_resources_search_blog",
   "pageSlug": "blog/decode-apk-resources",
   "url": "https://apklint.com/blog/decode-apk-resources/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decode_apk_resources_read_article",
   "pageSlug": "blog/decode-apk-resources",
   "url": "https://apklint.com/blog/decode-apk-resources/"
  },
  {
   "id": "blog_extract_images_from_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/extract-images-from-apk",
   "url": "https://apklint.com/blog/extract-images-from-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_extract_images_from_apk_list_sections",
   "pageSlug": "blog/extract-images-from-apk",
   "url": "https://apklint.com/blog/extract-images-from-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_images_from_apk_search_blog",
   "pageSlug": "blog/extract-images-from-apk",
   "url": "https://apklint.com/blog/extract-images-from-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_images_from_apk_read_article",
   "pageSlug": "blog/extract-images-from-apk",
   "url": "https://apklint.com/blog/extract-images-from-apk/"
  },
  {
   "id": "blog_extract_files_from_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/extract-files-from-apk",
   "url": "https://apklint.com/blog/extract-files-from-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_extract_files_from_apk_list_sections",
   "pageSlug": "blog/extract-files-from-apk",
   "url": "https://apklint.com/blog/extract-files-from-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_files_from_apk_search_blog",
   "pageSlug": "blog/extract-files-from-apk",
   "url": "https://apklint.com/blog/extract-files-from-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_files_from_apk_read_article",
   "pageSlug": "blog/extract-files-from-apk",
   "url": "https://apklint.com/blog/extract-files-from-apk/"
  },
  {
   "id": "blog_extract_installed_apk_adb_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/extract-installed-apk-adb",
   "url": "https://apklint.com/blog/extract-installed-apk-adb/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_extract_installed_apk_adb_list_sections",
   "pageSlug": "blog/extract-installed-apk-adb",
   "url": "https://apklint.com/blog/extract-installed-apk-adb/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_installed_apk_adb_search_blog",
   "pageSlug": "blog/extract-installed-apk-adb",
   "url": "https://apklint.com/blog/extract-installed-apk-adb/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_installed_apk_adb_read_article",
   "pageSlug": "blog/extract-installed-apk-adb",
   "url": "https://apklint.com/blog/extract-installed-apk-adb/"
  },
  {
   "id": "blog_choose_apk_extractor_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/choose-apk-extractor",
   "url": "https://apklint.com/blog/choose-apk-extractor/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_choose_apk_extractor_list_sections",
   "pageSlug": "blog/choose-apk-extractor",
   "url": "https://apklint.com/blog/choose-apk-extractor/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_choose_apk_extractor_search_blog",
   "pageSlug": "blog/choose-apk-extractor",
   "url": "https://apklint.com/blog/choose-apk-extractor/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_choose_apk_extractor_read_article",
   "pageSlug": "blog/choose-apk-extractor",
   "url": "https://apklint.com/blog/choose-apk-extractor/"
  },
  {
   "id": "blog_extract_xapk_to_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/extract-xapk-to-apk",
   "url": "https://apklint.com/blog/extract-xapk-to-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_extract_xapk_to_apk_list_sections",
   "pageSlug": "blog/extract-xapk-to-apk",
   "url": "https://apklint.com/blog/extract-xapk-to-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_xapk_to_apk_search_blog",
   "pageSlug": "blog/extract-xapk-to-apk",
   "url": "https://apklint.com/blog/extract-xapk-to-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_xapk_to_apk_read_article",
   "pageSlug": "blog/extract-xapk-to-apk",
   "url": "https://apklint.com/blog/extract-xapk-to-apk/"
  },
  {
   "id": "blog_extract_apk_from_aab_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/extract-apk-from-aab",
   "url": "https://apklint.com/blog/extract-apk-from-aab/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_extract_apk_from_aab_list_sections",
   "pageSlug": "blog/extract-apk-from-aab",
   "url": "https://apklint.com/blog/extract-apk-from-aab/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_apk_from_aab_search_blog",
   "pageSlug": "blog/extract-apk-from-aab",
   "url": "https://apklint.com/blog/extract-apk-from-aab/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_extract_apk_from_aab_read_article",
   "pageSlug": "blog/extract-apk-from-aab",
   "url": "https://apklint.com/blog/extract-apk-from-aab/"
  },
  {
   "id": "blog_aab_vs_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/aab-vs-apk",
   "url": "https://apklint.com/blog/aab-vs-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_aab_vs_apk_list_sections",
   "pageSlug": "blog/aab-vs-apk",
   "url": "https://apklint.com/blog/aab-vs-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_aab_vs_apk_search_blog",
   "pageSlug": "blog/aab-vs-apk",
   "url": "https://apklint.com/blog/aab-vs-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_aab_vs_apk_read_article",
   "pageSlug": "blog/aab-vs-apk",
   "url": "https://apklint.com/blog/aab-vs-apk/"
  },
  {
   "id": "blog_android_app_bundle_structure_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-app-bundle-structure",
   "url": "https://apklint.com/blog/android-app-bundle-structure/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_app_bundle_structure_list_sections",
   "pageSlug": "blog/android-app-bundle-structure",
   "url": "https://apklint.com/blog/android-app-bundle-structure/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_bundle_structure_search_blog",
   "pageSlug": "blog/android-app-bundle-structure",
   "url": "https://apklint.com/blog/android-app-bundle-structure/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_bundle_structure_read_article",
   "pageSlug": "blog/android-app-bundle-structure",
   "url": "https://apklint.com/blog/android-app-bundle-structure/"
  },
  {
   "id": "blog_install_split_apks_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/install-split-apks",
   "url": "https://apklint.com/blog/install-split-apks/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_install_split_apks_list_sections",
   "pageSlug": "blog/install-split-apks",
   "url": "https://apklint.com/blog/install-split-apks/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_install_split_apks_search_blog",
   "pageSlug": "blog/install-split-apks",
   "url": "https://apklint.com/blog/install-split-apks/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_install_split_apks_read_article",
   "pageSlug": "blog/install-split-apks",
   "url": "https://apklint.com/blog/install-split-apks/"
  },
  {
   "id": "blog_bundletool_device_spec_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/bundletool-device-spec",
   "url": "https://apklint.com/blog/bundletool-device-spec/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_bundletool_device_spec_list_sections",
   "pageSlug": "blog/bundletool-device-spec",
   "url": "https://apklint.com/blog/bundletool-device-spec/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_bundletool_device_spec_search_blog",
   "pageSlug": "blog/bundletool-device-spec",
   "url": "https://apklint.com/blog/bundletool-device-spec/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_bundletool_device_spec_read_article",
   "pageSlug": "blog/bundletool-device-spec",
   "url": "https://apklint.com/blog/bundletool-device-spec/"
  },
  {
   "id": "blog_apk_abi_architecture_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-abi-architecture",
   "url": "https://apklint.com/blog/apk-abi-architecture/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_abi_architecture_list_sections",
   "pageSlug": "blog/apk-abi-architecture",
   "url": "https://apklint.com/blog/apk-abi-architecture/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_abi_architecture_search_blog",
   "pageSlug": "blog/apk-abi-architecture",
   "url": "https://apklint.com/blog/apk-abi-architecture/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_abi_architecture_read_article",
   "pageSlug": "blog/apk-abi-architecture",
   "url": "https://apklint.com/blog/apk-abi-architecture/"
  },
  {
   "id": "blog_android_16kb_page_size_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-16kb-page-size",
   "url": "https://apklint.com/blog/android-16kb-page-size/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_16kb_page_size_list_sections",
   "pageSlug": "blog/android-16kb-page-size",
   "url": "https://apklint.com/blog/android-16kb-page-size/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_16kb_page_size_search_blog",
   "pageSlug": "blog/android-16kb-page-size",
   "url": "https://apklint.com/blog/android-16kb-page-size/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_16kb_page_size_read_article",
   "pageSlug": "blog/android-16kb-page-size",
   "url": "https://apklint.com/blog/android-16kb-page-size/"
  },
  {
   "id": "blog_android_dex_file_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-dex-file",
   "url": "https://apklint.com/blog/android-dex-file/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_dex_file_list_sections",
   "pageSlug": "blog/android-dex-file",
   "url": "https://apklint.com/blog/android-dex-file/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_dex_file_search_blog",
   "pageSlug": "blog/android-dex-file",
   "url": "https://apklint.com/blog/android-dex-file/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_dex_file_read_article",
   "pageSlug": "blog/android-dex-file",
   "url": "https://apklint.com/blog/android-dex-file/"
  },
  {
   "id": "blog_smali_code_tutorial_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/smali-code-tutorial",
   "url": "https://apklint.com/blog/smali-code-tutorial/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_smali_code_tutorial_list_sections",
   "pageSlug": "blog/smali-code-tutorial",
   "url": "https://apklint.com/blog/smali-code-tutorial/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_smali_code_tutorial_search_blog",
   "pageSlug": "blog/smali-code-tutorial",
   "url": "https://apklint.com/blog/smali-code-tutorial/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_smali_code_tutorial_read_article",
   "pageSlug": "blog/smali-code-tutorial",
   "url": "https://apklint.com/blog/smali-code-tutorial/"
  },
  {
   "id": "blog_jadx_for_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/jadx-for-android",
   "url": "https://apklint.com/blog/jadx-for-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_jadx_for_android_list_sections",
   "pageSlug": "blog/jadx-for-android",
   "url": "https://apklint.com/blog/jadx-for-android/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_jadx_for_android_search_blog",
   "pageSlug": "blog/jadx-for-android",
   "url": "https://apklint.com/blog/jadx-for-android/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_jadx_for_android_read_article",
   "pageSlug": "blog/jadx-for-android",
   "url": "https://apklint.com/blog/jadx-for-android/"
  },
  {
   "id": "blog_decompile_recompile_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/decompile-recompile-apk",
   "url": "https://apklint.com/blog/decompile-recompile-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_decompile_recompile_apk_list_sections",
   "pageSlug": "blog/decompile-recompile-apk",
   "url": "https://apklint.com/blog/decompile-recompile-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decompile_recompile_apk_search_blog",
   "pageSlug": "blog/decompile-recompile-apk",
   "url": "https://apklint.com/blog/decompile-recompile-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decompile_recompile_apk_read_article",
   "pageSlug": "blog/decompile-recompile-apk",
   "url": "https://apklint.com/blog/decompile-recompile-apk/"
  },
  {
   "id": "blog_android_multidex_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-multidex",
   "url": "https://apklint.com/blog/android-multidex/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_multidex_list_sections",
   "pageSlug": "blog/android-multidex",
   "url": "https://apklint.com/blog/android-multidex/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_multidex_search_blog",
   "pageSlug": "blog/android-multidex",
   "url": "https://apklint.com/blog/android-multidex/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_multidex_read_article",
   "pageSlug": "blog/android-multidex",
   "url": "https://apklint.com/blog/android-multidex/"
  },
  {
   "id": "blog_multidexapplication_setup_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/multidexapplication-setup",
   "url": "https://apklint.com/blog/multidexapplication-setup/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_multidexapplication_setup_list_sections",
   "pageSlug": "blog/multidexapplication-setup",
   "url": "https://apklint.com/blog/multidexapplication-setup/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_multidexapplication_setup_search_blog",
   "pageSlug": "blog/multidexapplication-setup",
   "url": "https://apklint.com/blog/multidexapplication-setup/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_multidexapplication_setup_read_article",
   "pageSlug": "blog/multidexapplication-setup",
   "url": "https://apklint.com/blog/multidexapplication-setup/"
  },
  {
   "id": "blog_android_version_code_name_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-version-code-name",
   "url": "https://apklint.com/blog/android-version-code-name/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_version_code_name_list_sections",
   "pageSlug": "blog/android-version-code-name",
   "url": "https://apklint.com/blog/android-version-code-name/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_version_code_name_search_blog",
   "pageSlug": "blog/android-version-code-name",
   "url": "https://apklint.com/blog/android-version-code-name/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_version_code_name_read_article",
   "pageSlug": "blog/android-version-code-name",
   "url": "https://apklint.com/blog/android-version-code-name/"
  },
  {
   "id": "blog_wrong_app_bundle_signing_key_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/wrong-app-bundle-signing-key",
   "url": "https://apklint.com/blog/wrong-app-bundle-signing-key/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_wrong_app_bundle_signing_key_list_sections",
   "pageSlug": "blog/wrong-app-bundle-signing-key",
   "url": "https://apklint.com/blog/wrong-app-bundle-signing-key/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_wrong_app_bundle_signing_key_search_blog",
   "pageSlug": "blog/wrong-app-bundle-signing-key",
   "url": "https://apklint.com/blog/wrong-app-bundle-signing-key/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_wrong_app_bundle_signing_key_read_article",
   "pageSlug": "blog/wrong-app-bundle-signing-key",
   "url": "https://apklint.com/blog/wrong-app-bundle-signing-key/"
  },
  {
   "id": "blog_generate_signed_apk_android_studio_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/generate-signed-apk-android-studio",
   "url": "https://apklint.com/blog/generate-signed-apk-android-studio/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_generate_signed_apk_android_studio_list_sections",
   "pageSlug": "blog/generate-signed-apk-android-studio",
   "url": "https://apklint.com/blog/generate-signed-apk-android-studio/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_generate_signed_apk_android_studio_search_blog",
   "pageSlug": "blog/generate-signed-apk-android-studio",
   "url": "https://apklint.com/blog/generate-signed-apk-android-studio/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_generate_signed_apk_android_studio_read_article",
   "pageSlug": "blog/generate-signed-apk-android-studio",
   "url": "https://apklint.com/blog/generate-signed-apk-android-studio/"
  },
  {
   "id": "blog_android_debug_keystore_password_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-debug-keystore-password",
   "url": "https://apklint.com/blog/android-debug-keystore-password/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_debug_keystore_password_list_sections",
   "pageSlug": "blog/android-debug-keystore-password",
   "url": "https://apklint.com/blog/android-debug-keystore-password/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_debug_keystore_password_search_blog",
   "pageSlug": "blog/android-debug-keystore-password",
   "url": "https://apklint.com/blog/android-debug-keystore-password/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_debug_keystore_password_read_article",
   "pageSlug": "blog/android-debug-keystore-password",
   "url": "https://apklint.com/blog/android-debug-keystore-password/"
  },
  {
   "id": "blog_find_android_keystore_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/find-android-keystore",
   "url": "https://apklint.com/blog/find-android-keystore/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_find_android_keystore_list_sections",
   "pageSlug": "blog/find-android-keystore",
   "url": "https://apklint.com/blog/find-android-keystore/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_find_android_keystore_search_blog",
   "pageSlug": "blog/find-android-keystore",
   "url": "https://apklint.com/blog/find-android-keystore/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_find_android_keystore_read_article",
   "pageSlug": "blog/find-android-keystore",
   "url": "https://apklint.com/blog/find-android-keystore/"
  },
  {
   "id": "blog_create_android_signing_keystore_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/create-android-signing-keystore",
   "url": "https://apklint.com/blog/create-android-signing-keystore/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_create_android_signing_keystore_list_sections",
   "pageSlug": "blog/create-android-signing-keystore",
   "url": "https://apklint.com/blog/create-android-signing-keystore/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_create_android_signing_keystore_search_blog",
   "pageSlug": "blog/create-android-signing-keystore",
   "url": "https://apklint.com/blog/create-android-signing-keystore/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_create_android_signing_keystore_read_article",
   "pageSlug": "blog/create-android-signing-keystore",
   "url": "https://apklint.com/blog/create-android-signing-keystore/"
  },
  {
   "id": "blog_android_keystore_passwords_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-keystore-passwords",
   "url": "https://apklint.com/blog/android-keystore-passwords/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_keystore_passwords_list_sections",
   "pageSlug": "blog/android-keystore-passwords",
   "url": "https://apklint.com/blog/android-keystore-passwords/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_keystore_passwords_search_blog",
   "pageSlug": "blog/android-keystore-passwords",
   "url": "https://apklint.com/blog/android-keystore-passwords/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_keystore_passwords_read_article",
   "pageSlug": "blog/android-keystore-passwords",
   "url": "https://apklint.com/blog/android-keystore-passwords/"
  },
  {
   "id": "blog_play_app_signing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-app-signing",
   "url": "https://apklint.com/blog/play-app-signing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_app_signing_list_sections",
   "pageSlug": "blog/play-app-signing",
   "url": "https://apklint.com/blog/play-app-signing/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_app_signing_search_blog",
   "pageSlug": "blog/play-app-signing",
   "url": "https://apklint.com/blog/play-app-signing/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_app_signing_read_article",
   "pageSlug": "blog/play-app-signing",
   "url": "https://apklint.com/blog/play-app-signing/"
  },
  {
   "id": "blog_verify_apk_signature_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/verify-apk-signature",
   "url": "https://apklint.com/blog/verify-apk-signature/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_verify_apk_signature_list_sections",
   "pageSlug": "blog/verify-apk-signature",
   "url": "https://apklint.com/blog/verify-apk-signature/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_verify_apk_signature_search_blog",
   "pageSlug": "blog/verify-apk-signature",
   "url": "https://apklint.com/blog/verify-apk-signature/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_verify_apk_signature_read_article",
   "pageSlug": "blog/verify-apk-signature",
   "url": "https://apklint.com/blog/verify-apk-signature/"
  },
  {
   "id": "blog_certificate_fingerprints_sha1_sha256_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/certificate-fingerprints-sha1-sha256",
   "url": "https://apklint.com/blog/certificate-fingerprints-sha1-sha256/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_certificate_fingerprints_sha1_sha256_list_sections",
   "pageSlug": "blog/certificate-fingerprints-sha1-sha256",
   "url": "https://apklint.com/blog/certificate-fingerprints-sha1-sha256/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_certificate_fingerprints_sha1_sha256_search_blog",
   "pageSlug": "blog/certificate-fingerprints-sha1-sha256",
   "url": "https://apklint.com/blog/certificate-fingerprints-sha1-sha256/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_certificate_fingerprints_sha1_sha256_read_article",
   "pageSlug": "blog/certificate-fingerprints-sha1-sha256",
   "url": "https://apklint.com/blog/certificate-fingerprints-sha1-sha256/"
  },
  {
   "id": "blog_apk_signature_schemes_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-signature-schemes",
   "url": "https://apklint.com/blog/apk-signature-schemes/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_signature_schemes_list_sections",
   "pageSlug": "blog/apk-signature-schemes",
   "url": "https://apklint.com/blog/apk-signature-schemes/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_signature_schemes_search_blog",
   "pageSlug": "blog/apk-signature-schemes",
   "url": "https://apklint.com/blog/apk-signature-schemes/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_signature_schemes_read_article",
   "pageSlug": "blog/apk-signature-schemes",
   "url": "https://apklint.com/blog/apk-signature-schemes/"
  },
  {
   "id": "blog_reset_play_upload_key_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/reset-play-upload-key",
   "url": "https://apklint.com/blog/reset-play-upload-key/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_reset_play_upload_key_list_sections",
   "pageSlug": "blog/reset-play-upload-key",
   "url": "https://apklint.com/blog/reset-play-upload-key/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_reset_play_upload_key_search_blog",
   "pageSlug": "blog/reset-play-upload-key",
   "url": "https://apklint.com/blog/reset-play-upload-key/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_reset_play_upload_key_read_article",
   "pageSlug": "blog/reset-play-upload-key",
   "url": "https://apklint.com/blog/reset-play-upload-key/"
  },
  {
   "id": "blog_android_signing_key_rotation_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-signing-key-rotation",
   "url": "https://apklint.com/blog/android-signing-key-rotation/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_signing_key_rotation_list_sections",
   "pageSlug": "blog/android-signing-key-rotation",
   "url": "https://apklint.com/blog/android-signing-key-rotation/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_signing_key_rotation_search_blog",
   "pageSlug": "blog/android-signing-key-rotation",
   "url": "https://apklint.com/blog/android-signing-key-rotation/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_signing_key_rotation_read_article",
   "pageSlug": "blog/android-signing-key-rotation",
   "url": "https://apklint.com/blog/android-signing-key-rotation/"
  },
  {
   "id": "blog_signing_config_ci_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/signing-config-ci",
   "url": "https://apklint.com/blog/signing-config-ci/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_signing_config_ci_list_sections",
   "pageSlug": "blog/signing-config-ci",
   "url": "https://apklint.com/blog/signing-config-ci/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_signing_config_ci_search_blog",
   "pageSlug": "blog/signing-config-ci",
   "url": "https://apklint.com/blog/signing-config-ci/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_signing_config_ci_read_article",
   "pageSlug": "blog/signing-config-ci",
   "url": "https://apklint.com/blog/signing-config-ci/"
  },
  {
   "id": "blog_android_keystore_api_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-keystore-api",
   "url": "https://apklint.com/blog/android-keystore-api/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_keystore_api_list_sections",
   "pageSlug": "blog/android-keystore-api",
   "url": "https://apklint.com/blog/android-keystore-api/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_keystore_api_search_blog",
   "pageSlug": "blog/android-keystore-api",
   "url": "https://apklint.com/blog/android-keystore-api/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_keystore_api_read_article",
   "pageSlug": "blog/android-keystore-api",
   "url": "https://apklint.com/blog/android-keystore-api/"
  },
  {
   "id": "blog_store_secrets_android_keystore_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/store-secrets-android-keystore",
   "url": "https://apklint.com/blog/store-secrets-android-keystore/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_store_secrets_android_keystore_list_sections",
   "pageSlug": "blog/store-secrets-android-keystore",
   "url": "https://apklint.com/blog/store-secrets-android-keystore/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_store_secrets_android_keystore_search_blog",
   "pageSlug": "blog/store-secrets-android-keystore",
   "url": "https://apklint.com/blog/store-secrets-android-keystore/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_store_secrets_android_keystore_read_article",
   "pageSlug": "blog/store-secrets-android-keystore",
   "url": "https://apklint.com/blog/store-secrets-android-keystore/"
  },
  {
   "id": "blog_hardware_backed_keystore_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/hardware-backed-keystore",
   "url": "https://apklint.com/blog/hardware-backed-keystore/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_hardware_backed_keystore_list_sections",
   "pageSlug": "blog/hardware-backed-keystore",
   "url": "https://apklint.com/blog/hardware-backed-keystore/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_hardware_backed_keystore_search_blog",
   "pageSlug": "blog/hardware-backed-keystore",
   "url": "https://apklint.com/blog/hardware-backed-keystore/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_hardware_backed_keystore_read_article",
   "pageSlug": "blog/hardware-backed-keystore",
   "url": "https://apklint.com/blog/hardware-backed-keystore/"
  },
  {
   "id": "blog_react_native_signing_keystore_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-signing-keystore",
   "url": "https://apklint.com/blog/react-native-signing-keystore/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_signing_keystore_list_sections",
   "pageSlug": "blog/react-native-signing-keystore",
   "url": "https://apklint.com/blog/react-native-signing-keystore/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_signing_keystore_search_blog",
   "pageSlug": "blog/react-native-signing-keystore",
   "url": "https://apklint.com/blog/react-native-signing-keystore/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_signing_keystore_read_article",
   "pageSlug": "blog/react-native-signing-keystore",
   "url": "https://apklint.com/blog/react-native-signing-keystore/"
  },
  {
   "id": "blog_install_failed_update_incompatible_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/install-failed-update-incompatible",
   "url": "https://apklint.com/blog/install-failed-update-incompatible/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_install_failed_update_incompatible_list_sections",
   "pageSlug": "blog/install-failed-update-incompatible",
   "url": "https://apklint.com/blog/install-failed-update-incompatible/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_install_failed_update_incompatible_search_blog",
   "pageSlug": "blog/install-failed-update-incompatible",
   "url": "https://apklint.com/blog/install-failed-update-incompatible/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_install_failed_update_incompatible_read_article",
   "pageSlug": "blog/install-failed-update-incompatible",
   "url": "https://apklint.com/blog/install-failed-update-incompatible/"
  },
  {
   "id": "blog_zipalign_before_signing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/zipalign-before-signing",
   "url": "https://apklint.com/blog/zipalign-before-signing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_zipalign_before_signing_list_sections",
   "pageSlug": "blog/zipalign-before-signing",
   "url": "https://apklint.com/blog/zipalign-before-signing/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_zipalign_before_signing_search_blog",
   "pageSlug": "blog/zipalign-before-signing",
   "url": "https://apklint.com/blog/zipalign-before-signing/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_zipalign_before_signing_read_article",
   "pageSlug": "blog/zipalign-before-signing",
   "url": "https://apklint.com/blog/zipalign-before-signing/"
  },
  {
   "id": "blog_android_package_application_id_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-package-application-id",
   "url": "https://apklint.com/blog/android-package-application-id/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_package_application_id_list_sections",
   "pageSlug": "blog/android-package-application-id",
   "url": "https://apklint.com/blog/android-package-application-id/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_package_application_id_search_blog",
   "pageSlug": "blog/android-package-application-id",
   "url": "https://apklint.com/blog/android-package-application-id/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_package_application_id_read_article",
   "pageSlug": "blog/android-package-application-id",
   "url": "https://apklint.com/blog/android-package-application-id/"
  },
  {
   "id": "blog_android_certificate_pinning_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-certificate-pinning",
   "url": "https://apklint.com/blog/android-certificate-pinning/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_certificate_pinning_list_sections",
   "pageSlug": "blog/android-certificate-pinning",
   "url": "https://apklint.com/blog/android-certificate-pinning/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_certificate_pinning_search_blog",
   "pageSlug": "blog/android-certificate-pinning",
   "url": "https://apklint.com/blog/android-certificate-pinning/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_certificate_pinning_read_article",
   "pageSlug": "blog/android-certificate-pinning",
   "url": "https://apklint.com/blog/android-certificate-pinning/"
  },
  {
   "id": "blog_usescleartexttraffic_true_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/usescleartexttraffic-true",
   "url": "https://apklint.com/blog/usescleartexttraffic-true/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_usescleartexttraffic_true_list_sections",
   "pageSlug": "blog/usescleartexttraffic-true",
   "url": "https://apklint.com/blog/usescleartexttraffic-true/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_usescleartexttraffic_true_search_blog",
   "pageSlug": "blog/usescleartexttraffic-true",
   "url": "https://apklint.com/blog/usescleartexttraffic-true/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_usescleartexttraffic_true_read_article",
   "pageSlug": "blog/usescleartexttraffic-true",
   "url": "https://apklint.com/blog/usescleartexttraffic-true/"
  },
  {
   "id": "blog_network_security_config_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/network-security-config",
   "url": "https://apklint.com/blog/network-security-config/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_network_security_config_list_sections",
   "pageSlug": "blog/network-security-config",
   "url": "https://apklint.com/blog/network-security-config/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_network_security_config_search_blog",
   "pageSlug": "blog/network-security-config",
   "url": "https://apklint.com/blog/network-security-config/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_network_security_config_read_article",
   "pageSlug": "blog/network-security-config",
   "url": "https://apklint.com/blog/network-security-config/"
  },
  {
   "id": "blog_check_apk_for_malware_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/check-apk-for-malware",
   "url": "https://apklint.com/blog/check-apk-for-malware/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_check_apk_for_malware_list_sections",
   "pageSlug": "blog/check-apk-for-malware",
   "url": "https://apklint.com/blog/check-apk-for-malware/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_check_apk_for_malware_search_blog",
   "pageSlug": "blog/check-apk-for-malware",
   "url": "https://apklint.com/blog/check-apk-for-malware/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_check_apk_for_malware_read_article",
   "pageSlug": "blog/check-apk-for-malware",
   "url": "https://apklint.com/blog/check-apk-for-malware/"
  },
  {
   "id": "blog_virustotal_apk_check_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/virustotal-apk-check",
   "url": "https://apklint.com/blog/virustotal-apk-check/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_virustotal_apk_check_list_sections",
   "pageSlug": "blog/virustotal-apk-check",
   "url": "https://apklint.com/blog/virustotal-apk-check/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_virustotal_apk_check_search_blog",
   "pageSlug": "blog/virustotal-apk-check",
   "url": "https://apklint.com/blog/virustotal-apk-check/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_virustotal_apk_check_read_article",
   "pageSlug": "blog/virustotal-apk-check",
   "url": "https://apklint.com/blog/virustotal-apk-check/"
  },
  {
   "id": "blog_apk_malware_analysis_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-malware-analysis",
   "url": "https://apklint.com/blog/apk-malware-analysis/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_malware_analysis_list_sections",
   "pageSlug": "blog/apk-malware-analysis",
   "url": "https://apklint.com/blog/apk-malware-analysis/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_malware_analysis_search_blog",
   "pageSlug": "blog/apk-malware-analysis",
   "url": "https://apklint.com/blog/apk-malware-analysis/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_malware_analysis_read_article",
   "pageSlug": "blog/apk-malware-analysis",
   "url": "https://apklint.com/blog/apk-malware-analysis/"
  },
  {
   "id": "blog_android_static_analysis_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-static-analysis",
   "url": "https://apklint.com/blog/android-static-analysis/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_static_analysis_list_sections",
   "pageSlug": "blog/android-static-analysis",
   "url": "https://apklint.com/blog/android-static-analysis/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_static_analysis_search_blog",
   "pageSlug": "blog/android-static-analysis",
   "url": "https://apklint.com/blog/android-static-analysis/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_static_analysis_read_article",
   "pageSlug": "blog/android-static-analysis",
   "url": "https://apklint.com/blog/android-static-analysis/"
  },
  {
   "id": "blog_mobile_security_testing_services_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/mobile-security-testing-services",
   "url": "https://apklint.com/blog/mobile-security-testing-services/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_mobile_security_testing_services_list_sections",
   "pageSlug": "blog/mobile-security-testing-services",
   "url": "https://apklint.com/blog/mobile-security-testing-services/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_security_testing_services_search_blog",
   "pageSlug": "blog/mobile-security-testing-services",
   "url": "https://apklint.com/blog/mobile-security-testing-services/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_security_testing_services_read_article",
   "pageSlug": "blog/mobile-security-testing-services",
   "url": "https://apklint.com/blog/mobile-security-testing-services/"
  },
  {
   "id": "blog_android_penetration_testing_scope_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-penetration-testing-scope",
   "url": "https://apklint.com/blog/android-penetration-testing-scope/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_penetration_testing_scope_list_sections",
   "pageSlug": "blog/android-penetration-testing-scope",
   "url": "https://apklint.com/blog/android-penetration-testing-scope/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_penetration_testing_scope_search_blog",
   "pageSlug": "blog/android-penetration-testing-scope",
   "url": "https://apklint.com/blog/android-penetration-testing-scope/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_penetration_testing_scope_read_article",
   "pageSlug": "blog/android-penetration-testing-scope",
   "url": "https://apklint.com/blog/android-penetration-testing-scope/"
  },
  {
   "id": "blog_mobile_security_checklist_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/mobile-security-checklist",
   "url": "https://apklint.com/blog/mobile-security-checklist/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_mobile_security_checklist_list_sections",
   "pageSlug": "blog/mobile-security-checklist",
   "url": "https://apklint.com/blog/mobile-security-checklist/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_security_checklist_search_blog",
   "pageSlug": "blog/mobile-security-checklist",
   "url": "https://apklint.com/blog/mobile-security-checklist/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_security_checklist_read_article",
   "pageSlug": "blog/mobile-security-checklist",
   "url": "https://apklint.com/blog/mobile-security-checklist/"
  },
  {
   "id": "blog_owasp_mastg_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/owasp-mastg-android",
   "url": "https://apklint.com/blog/owasp-mastg-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_owasp_mastg_android_list_sections",
   "pageSlug": "blog/owasp-mastg-android",
   "url": "https://apklint.com/blog/owasp-mastg-android/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_mastg_android_search_blog",
   "pageSlug": "blog/owasp-mastg-android",
   "url": "https://apklint.com/blog/owasp-mastg-android/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_mastg_android_read_article",
   "pageSlug": "blog/owasp-mastg-android",
   "url": "https://apklint.com/blog/owasp-mastg-android/"
  },
  {
   "id": "blog_owasp_mobile_top_10_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/owasp-mobile-top-10",
   "url": "https://apklint.com/blog/owasp-mobile-top-10/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_owasp_mobile_top_10_list_sections",
   "pageSlug": "blog/owasp-mobile-top-10",
   "url": "https://apklint.com/blog/owasp-mobile-top-10/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_mobile_top_10_search_blog",
   "pageSlug": "blog/owasp-mobile-top-10",
   "url": "https://apklint.com/blog/owasp-mobile-top-10/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_mobile_top_10_read_article",
   "pageSlug": "blog/owasp-mobile-top-10",
   "url": "https://apklint.com/blog/owasp-mobile-top-10/"
  },
  {
   "id": "blog_owasp_mobile_top_10_2016_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/owasp-mobile-top-10-2016",
   "url": "https://apklint.com/blog/owasp-mobile-top-10-2016/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_owasp_mobile_top_10_2016_list_sections",
   "pageSlug": "blog/owasp-mobile-top-10-2016",
   "url": "https://apklint.com/blog/owasp-mobile-top-10-2016/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_mobile_top_10_2016_search_blog",
   "pageSlug": "blog/owasp-mobile-top-10-2016",
   "url": "https://apklint.com/blog/owasp-mobile-top-10-2016/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_mobile_top_10_2016_read_article",
   "pageSlug": "blog/owasp-mobile-top-10-2016",
   "url": "https://apklint.com/blog/owasp-mobile-top-10-2016/"
  },
  {
   "id": "blog_owasp_masvs_vs_mastg_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/owasp-masvs-vs-mastg",
   "url": "https://apklint.com/blog/owasp-masvs-vs-mastg/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_owasp_masvs_vs_mastg_list_sections",
   "pageSlug": "blog/owasp-masvs-vs-mastg",
   "url": "https://apklint.com/blog/owasp-masvs-vs-mastg/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_masvs_vs_mastg_search_blog",
   "pageSlug": "blog/owasp-masvs-vs-mastg",
   "url": "https://apklint.com/blog/owasp-masvs-vs-mastg/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_masvs_vs_mastg_read_article",
   "pageSlug": "blog/owasp-masvs-vs-mastg",
   "url": "https://apklint.com/blog/owasp-masvs-vs-mastg/"
  },
  {
   "id": "blog_android_apk_security_review_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-apk-security-review",
   "url": "https://apklint.com/blog/android-apk-security-review/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_apk_security_review_list_sections",
   "pageSlug": "blog/android-apk-security-review",
   "url": "https://apklint.com/blog/android-apk-security-review/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_apk_security_review_search_blog",
   "pageSlug": "blog/android-apk-security-review",
   "url": "https://apklint.com/blog/android-apk-security-review/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_apk_security_review_read_article",
   "pageSlug": "blog/android-apk-security-review",
   "url": "https://apklint.com/blog/android-apk-security-review/"
  },
  {
   "id": "blog_reverse_engineer_owned_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/reverse-engineer-owned-apk",
   "url": "https://apklint.com/blog/reverse-engineer-owned-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_reverse_engineer_owned_apk_list_sections",
   "pageSlug": "blog/reverse-engineer-owned-apk",
   "url": "https://apklint.com/blog/reverse-engineer-owned-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_reverse_engineer_owned_apk_search_blog",
   "pageSlug": "blog/reverse-engineer-owned-apk",
   "url": "https://apklint.com/blog/reverse-engineer-owned-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_reverse_engineer_owned_apk_read_article",
   "pageSlug": "blog/reverse-engineer-owned-apk",
   "url": "https://apklint.com/blog/reverse-engineer-owned-apk/"
  },
  {
   "id": "blog_mobile_reverse_engineering_limits_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/mobile-reverse-engineering-limits",
   "url": "https://apklint.com/blog/mobile-reverse-engineering-limits/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_mobile_reverse_engineering_limits_list_sections",
   "pageSlug": "blog/mobile-reverse-engineering-limits",
   "url": "https://apklint.com/blog/mobile-reverse-engineering-limits/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_reverse_engineering_limits_search_blog",
   "pageSlug": "blog/mobile-reverse-engineering-limits",
   "url": "https://apklint.com/blog/mobile-reverse-engineering-limits/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_reverse_engineering_limits_read_article",
   "pageSlug": "blog/mobile-reverse-engineering-limits",
   "url": "https://apklint.com/blog/mobile-reverse-engineering-limits/"
  },
  {
   "id": "blog_decrypt_apk_file_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/decrypt-apk-file",
   "url": "https://apklint.com/blog/decrypt-apk-file/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_decrypt_apk_file_list_sections",
   "pageSlug": "blog/decrypt-apk-file",
   "url": "https://apklint.com/blog/decrypt-apk-file/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decrypt_apk_file_search_blog",
   "pageSlug": "blog/decrypt-apk-file",
   "url": "https://apklint.com/blog/decrypt-apk-file/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decrypt_apk_file_read_article",
   "pageSlug": "blog/decrypt-apk-file",
   "url": "https://apklint.com/blog/decrypt-apk-file/"
  },
  {
   "id": "blog_hardcoded_api_keys_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/hardcoded-api-keys",
   "url": "https://apklint.com/blog/hardcoded-api-keys/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_hardcoded_api_keys_list_sections",
   "pageSlug": "blog/hardcoded-api-keys",
   "url": "https://apklint.com/blog/hardcoded-api-keys/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_hardcoded_api_keys_search_blog",
   "pageSlug": "blog/hardcoded-api-keys",
   "url": "https://apklint.com/blog/hardcoded-api-keys/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_hardcoded_api_keys_read_article",
   "pageSlug": "blog/hardcoded-api-keys",
   "url": "https://apklint.com/blog/hardcoded-api-keys/"
  },
  {
   "id": "blog_android_exported_component_security_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-exported-component-security",
   "url": "https://apklint.com/blog/android-exported-component-security/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_exported_component_security_list_sections",
   "pageSlug": "blog/android-exported-component-security",
   "url": "https://apklint.com/blog/android-exported-component-security/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_exported_component_security_search_blog",
   "pageSlug": "blog/android-exported-component-security",
   "url": "https://apklint.com/blog/android-exported-component-security/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_exported_component_security_read_article",
   "pageSlug": "blog/android-exported-component-security",
   "url": "https://apklint.com/blog/android-exported-component-security/"
  },
  {
   "id": "blog_android_webview_security_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-webview-security",
   "url": "https://apklint.com/blog/android-webview-security/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_webview_security_list_sections",
   "pageSlug": "blog/android-webview-security",
   "url": "https://apklint.com/blog/android-webview-security/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_webview_security_search_blog",
   "pageSlug": "blog/android-webview-security",
   "url": "https://apklint.com/blog/android-webview-security/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_webview_security_read_article",
   "pageSlug": "blog/android-webview-security",
   "url": "https://apklint.com/blog/android-webview-security/"
  },
  {
   "id": "blog_android_backup_sensitive_data_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-backup-sensitive-data",
   "url": "https://apklint.com/blog/android-backup-sensitive-data/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_backup_sensitive_data_list_sections",
   "pageSlug": "blog/android-backup-sensitive-data",
   "url": "https://apklint.com/blog/android-backup-sensitive-data/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_backup_sensitive_data_search_blog",
   "pageSlug": "blog/android-backup-sensitive-data",
   "url": "https://apklint.com/blog/android-backup-sensitive-data/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_backup_sensitive_data_read_article",
   "pageSlug": "blog/android-backup-sensitive-data",
   "url": "https://apklint.com/blog/android-backup-sensitive-data/"
  },
  {
   "id": "blog_android_sdk_tracker_audit_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-sdk-tracker-audit",
   "url": "https://apklint.com/blog/android-sdk-tracker-audit/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_sdk_tracker_audit_list_sections",
   "pageSlug": "blog/android-sdk-tracker-audit",
   "url": "https://apklint.com/blog/android-sdk-tracker-audit/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_sdk_tracker_audit_search_blog",
   "pageSlug": "blog/android-sdk-tracker-audit",
   "url": "https://apklint.com/blog/android-sdk-tracker-audit/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_sdk_tracker_audit_read_article",
   "pageSlug": "blog/android-sdk-tracker-audit",
   "url": "https://apklint.com/blog/android-sdk-tracker-audit/"
  },
  {
   "id": "blog_android_dangerous_permissions_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-dangerous-permissions",
   "url": "https://apklint.com/blog/android-dangerous-permissions/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_dangerous_permissions_list_sections",
   "pageSlug": "blog/android-dangerous-permissions",
   "url": "https://apklint.com/blog/android-dangerous-permissions/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_dangerous_permissions_search_blog",
   "pageSlug": "blog/android-dangerous-permissions",
   "url": "https://apklint.com/blog/android-dangerous-permissions/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_dangerous_permissions_read_article",
   "pageSlug": "blog/android-dangerous-permissions",
   "url": "https://apklint.com/blog/android-dangerous-permissions/"
  },
  {
   "id": "blog_android_internet_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-internet-permission",
   "url": "https://apklint.com/blog/android-internet-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_internet_permission_list_sections",
   "pageSlug": "blog/android-internet-permission",
   "url": "https://apklint.com/blog/android-internet-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_internet_permission_search_blog",
   "pageSlug": "blog/android-internet-permission",
   "url": "https://apklint.com/blog/android-internet-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_internet_permission_read_article",
   "pageSlug": "blog/android-internet-permission",
   "url": "https://apklint.com/blog/android-internet-permission/"
  },
  {
   "id": "blog_uses_permission_vs_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/uses-permission-vs-permission",
   "url": "https://apklint.com/blog/uses-permission-vs-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_uses_permission_vs_permission_list_sections",
   "pageSlug": "blog/uses-permission-vs-permission",
   "url": "https://apklint.com/blog/uses-permission-vs-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_uses_permission_vs_permission_search_blog",
   "pageSlug": "blog/uses-permission-vs-permission",
   "url": "https://apklint.com/blog/uses-permission-vs-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_uses_permission_vs_permission_read_article",
   "pageSlug": "blog/uses-permission-vs-permission",
   "url": "https://apklint.com/blog/uses-permission-vs-permission/"
  },
  {
   "id": "blog_runtime_permission_example_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/runtime-permission-example",
   "url": "https://apklint.com/blog/runtime-permission-example/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_runtime_permission_example_list_sections",
   "pageSlug": "blog/runtime-permission-example",
   "url": "https://apklint.com/blog/runtime-permission-example/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_runtime_permission_example_search_blog",
   "pageSlug": "blog/runtime-permission-example",
   "url": "https://apklint.com/blog/runtime-permission-example/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_runtime_permission_example_read_article",
   "pageSlug": "blog/runtime-permission-example",
   "url": "https://apklint.com/blog/runtime-permission-example/"
  },
  {
   "id": "blog_check_android_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/check-android-permission",
   "url": "https://apklint.com/blog/check-android-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_check_android_permission_list_sections",
   "pageSlug": "blog/check-android-permission",
   "url": "https://apklint.com/blog/check-android-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_check_android_permission_search_blog",
   "pageSlug": "blog/check-android-permission",
   "url": "https://apklint.com/blog/check-android-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_check_android_permission_read_article",
   "pageSlug": "blog/check-android-permission",
   "url": "https://apklint.com/blog/check-android-permission/"
  },
  {
   "id": "blog_inspect_app_permissions_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/inspect-app-permissions",
   "url": "https://apklint.com/blog/inspect-app-permissions/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_inspect_app_permissions_list_sections",
   "pageSlug": "blog/inspect-app-permissions",
   "url": "https://apklint.com/blog/inspect-app-permissions/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_inspect_app_permissions_search_blog",
   "pageSlug": "blog/inspect-app-permissions",
   "url": "https://apklint.com/blog/inspect-app-permissions/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_inspect_app_permissions_read_article",
   "pageSlug": "blog/inspect-app-permissions",
   "url": "https://apklint.com/blog/inspect-app-permissions/"
  },
  {
   "id": "blog_mobile_app_permissions_audit_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/mobile-app-permissions-audit",
   "url": "https://apklint.com/blog/mobile-app-permissions-audit/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_mobile_app_permissions_audit_list_sections",
   "pageSlug": "blog/mobile-app-permissions-audit",
   "url": "https://apklint.com/blog/mobile-app-permissions-audit/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_app_permissions_audit_search_blog",
   "pageSlug": "blog/mobile-app-permissions-audit",
   "url": "https://apklint.com/blog/mobile-app-permissions-audit/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_app_permissions_audit_read_article",
   "pageSlug": "blog/mobile-app-permissions-audit",
   "url": "https://apklint.com/blog/mobile-app-permissions-audit/"
  },
  {
   "id": "blog_android_overlay_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-overlay-permission",
   "url": "https://apklint.com/blog/android-overlay-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_overlay_permission_list_sections",
   "pageSlug": "blog/android-overlay-permission",
   "url": "https://apklint.com/blog/android-overlay-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_overlay_permission_search_blog",
   "pageSlug": "blog/android-overlay-permission",
   "url": "https://apklint.com/blog/android-overlay-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_overlay_permission_read_article",
   "pageSlug": "blog/android-overlay-permission",
   "url": "https://apklint.com/blog/android-overlay-permission/"
  },
  {
   "id": "blog_read_phone_state_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/read-phone-state-permission",
   "url": "https://apklint.com/blog/read-phone-state-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_read_phone_state_permission_list_sections",
   "pageSlug": "blog/read-phone-state-permission",
   "url": "https://apklint.com/blog/read-phone-state-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_read_phone_state_permission_search_blog",
   "pageSlug": "blog/read-phone-state-permission",
   "url": "https://apklint.com/blog/read-phone-state-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_read_phone_state_permission_read_article",
   "pageSlug": "blog/read-phone-state-permission",
   "url": "https://apklint.com/blog/read-phone-state-permission/"
  },
  {
   "id": "blog_android_phone_permissions_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-phone-permissions",
   "url": "https://apklint.com/blog/android-phone-permissions/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_phone_permissions_list_sections",
   "pageSlug": "blog/android-phone-permissions",
   "url": "https://apklint.com/blog/android-phone-permissions/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_phone_permissions_search_blog",
   "pageSlug": "blog/android-phone-permissions",
   "url": "https://apklint.com/blog/android-phone-permissions/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_phone_permissions_read_article",
   "pageSlug": "blog/android-phone-permissions",
   "url": "https://apklint.com/blog/android-phone-permissions/"
  },
  {
   "id": "blog_full_screen_intent_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/full-screen-intent-permission",
   "url": "https://apklint.com/blog/full-screen-intent-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_full_screen_intent_permission_list_sections",
   "pageSlug": "blog/full-screen-intent-permission",
   "url": "https://apklint.com/blog/full-screen-intent-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_full_screen_intent_permission_search_blog",
   "pageSlug": "blog/full-screen-intent-permission",
   "url": "https://apklint.com/blog/full-screen-intent-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_full_screen_intent_permission_read_article",
   "pageSlug": "blog/full-screen-intent-permission",
   "url": "https://apklint.com/blog/full-screen-intent-permission/"
  },
  {
   "id": "blog_android_background_work_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-background-work-permission",
   "url": "https://apklint.com/blog/android-background-work-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_background_work_permission_list_sections",
   "pageSlug": "blog/android-background-work-permission",
   "url": "https://apklint.com/blog/android-background-work-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_background_work_permission_search_blog",
   "pageSlug": "blog/android-background-work-permission",
   "url": "https://apklint.com/blog/android-background-work-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_background_work_permission_read_article",
   "pageSlug": "blog/android-background-work-permission",
   "url": "https://apklint.com/blog/android-background-work-permission/"
  },
  {
   "id": "blog_android_autostart_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-autostart-permission",
   "url": "https://apklint.com/blog/android-autostart-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_autostart_permission_list_sections",
   "pageSlug": "blog/android-autostart-permission",
   "url": "https://apklint.com/blog/android-autostart-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_autostart_permission_search_blog",
   "pageSlug": "blog/android-autostart-permission",
   "url": "https://apklint.com/blog/android-autostart-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_autostart_permission_read_article",
   "pageSlug": "blog/android-autostart-permission",
   "url": "https://apklint.com/blog/android-autostart-permission/"
  },
  {
   "id": "blog_write_secure_settings_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/write-secure-settings-permission",
   "url": "https://apklint.com/blog/write-secure-settings-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_write_secure_settings_permission_list_sections",
   "pageSlug": "blog/write-secure-settings-permission",
   "url": "https://apklint.com/blog/write-secure-settings-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_write_secure_settings_permission_search_blog",
   "pageSlug": "blog/write-secure-settings-permission",
   "url": "https://apklint.com/blog/write-secure-settings-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_write_secure_settings_permission_read_article",
   "pageSlug": "blog/write-secure-settings-permission",
   "url": "https://apklint.com/blog/write-secure-settings-permission/"
  },
  {
   "id": "blog_android_file_permissions_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-file-permissions",
   "url": "https://apklint.com/blog/android-file-permissions/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_file_permissions_list_sections",
   "pageSlug": "blog/android-file-permissions",
   "url": "https://apklint.com/blog/android-file-permissions/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_file_permissions_search_blog",
   "pageSlug": "blog/android-file-permissions",
   "url": "https://apklint.com/blog/android-file-permissions/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_file_permissions_read_article",
   "pageSlug": "blog/android-file-permissions",
   "url": "https://apklint.com/blog/android-file-permissions/"
  },
  {
   "id": "blog_android_external_storage_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-external-storage-permission",
   "url": "https://apklint.com/blog/android-external-storage-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_external_storage_permission_list_sections",
   "pageSlug": "blog/android-external-storage-permission",
   "url": "https://apklint.com/blog/android-external-storage-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_external_storage_permission_search_blog",
   "pageSlug": "blog/android-external-storage-permission",
   "url": "https://apklint.com/blog/android-external-storage-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_external_storage_permission_read_article",
   "pageSlug": "blog/android-external-storage-permission",
   "url": "https://apklint.com/blog/android-external-storage-permission/"
  },
  {
   "id": "blog_android_files_media_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-files-media-permission",
   "url": "https://apklint.com/blog/android-files-media-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_files_media_permission_list_sections",
   "pageSlug": "blog/android-files-media-permission",
   "url": "https://apklint.com/blog/android-files-media-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_files_media_permission_search_blog",
   "pageSlug": "blog/android-files-media-permission",
   "url": "https://apklint.com/blog/android-files-media-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_files_media_permission_read_article",
   "pageSlug": "blog/android-files-media-permission",
   "url": "https://apklint.com/blog/android-files-media-permission/"
  },
  {
   "id": "blog_android_accessibility_service_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-accessibility-service-permission",
   "url": "https://apklint.com/blog/android-accessibility-service-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_accessibility_service_permission_list_sections",
   "pageSlug": "blog/android-accessibility-service-permission",
   "url": "https://apklint.com/blog/android-accessibility-service-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_accessibility_service_permission_search_blog",
   "pageSlug": "blog/android-accessibility-service-permission",
   "url": "https://apklint.com/blog/android-accessibility-service-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_accessibility_service_permission_read_article",
   "pageSlug": "blog/android-accessibility-service-permission",
   "url": "https://apklint.com/blog/android-accessibility-service-permission/"
  },
  {
   "id": "blog_restricted_android_permissions_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/restricted-android-permissions",
   "url": "https://apklint.com/blog/restricted-android-permissions/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_restricted_android_permissions_list_sections",
   "pageSlug": "blog/restricted-android-permissions",
   "url": "https://apklint.com/blog/restricted-android-permissions/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_restricted_android_permissions_search_blog",
   "pageSlug": "blog/restricted-android-permissions",
   "url": "https://apklint.com/blog/restricted-android-permissions/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_restricted_android_permissions_read_article",
   "pageSlug": "blog/restricted-android-permissions",
   "url": "https://apklint.com/blog/restricted-android-permissions/"
  },
  {
   "id": "blog_physical_activity_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/physical-activity-permission",
   "url": "https://apklint.com/blog/physical-activity-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_physical_activity_permission_list_sections",
   "pageSlug": "blog/physical-activity-permission",
   "url": "https://apklint.com/blog/physical-activity-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_physical_activity_permission_search_blog",
   "pageSlug": "blog/physical-activity-permission",
   "url": "https://apklint.com/blog/physical-activity-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_physical_activity_permission_read_article",
   "pageSlug": "blog/physical-activity-permission",
   "url": "https://apklint.com/blog/physical-activity-permission/"
  },
  {
   "id": "blog_notification_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/notification-permission",
   "url": "https://apklint.com/blog/notification-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_notification_permission_list_sections",
   "pageSlug": "blog/notification-permission",
   "url": "https://apklint.com/blog/notification-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_notification_permission_search_blog",
   "pageSlug": "blog/notification-permission",
   "url": "https://apklint.com/blog/notification-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_notification_permission_read_article",
   "pageSlug": "blog/notification-permission",
   "url": "https://apklint.com/blog/notification-permission/"
  },
  {
   "id": "blog_android_photo_picker_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-photo-picker",
   "url": "https://apklint.com/blog/android-photo-picker/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_photo_picker_list_sections",
   "pageSlug": "blog/android-photo-picker",
   "url": "https://apklint.com/blog/android-photo-picker/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_photo_picker_search_blog",
   "pageSlug": "blog/android-photo-picker",
   "url": "https://apklint.com/blog/android-photo-picker/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_photo_picker_read_article",
   "pageSlug": "blog/android-photo-picker",
   "url": "https://apklint.com/blog/android-photo-picker/"
  },
  {
   "id": "blog_android_all_files_access_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-all-files-access",
   "url": "https://apklint.com/blog/android-all-files-access/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_all_files_access_list_sections",
   "pageSlug": "blog/android-all-files-access",
   "url": "https://apklint.com/blog/android-all-files-access/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_all_files_access_search_blog",
   "pageSlug": "blog/android-all-files-access",
   "url": "https://apklint.com/blog/android-all-files-access/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_all_files_access_read_article",
   "pageSlug": "blog/android-all-files-access",
   "url": "https://apklint.com/blog/android-all-files-access/"
  },
  {
   "id": "blog_background_location_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/background-location-permission",
   "url": "https://apklint.com/blog/background-location-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_background_location_permission_list_sections",
   "pageSlug": "blog/background-location-permission",
   "url": "https://apklint.com/blog/background-location-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_background_location_permission_search_blog",
   "pageSlug": "blog/background-location-permission",
   "url": "https://apklint.com/blog/background-location-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_background_location_permission_read_article",
   "pageSlug": "blog/background-location-permission",
   "url": "https://apklint.com/blog/background-location-permission/"
  },
  {
   "id": "blog_precise_approximate_location_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/precise-approximate-location",
   "url": "https://apklint.com/blog/precise-approximate-location/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_precise_approximate_location_list_sections",
   "pageSlug": "blog/precise-approximate-location",
   "url": "https://apklint.com/blog/precise-approximate-location/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_precise_approximate_location_search_blog",
   "pageSlug": "blog/precise-approximate-location",
   "url": "https://apklint.com/blog/precise-approximate-location/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_precise_approximate_location_read_article",
   "pageSlug": "blog/precise-approximate-location",
   "url": "https://apklint.com/blog/precise-approximate-location/"
  },
  {
   "id": "blog_bluetooth_nearby_permissions_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/bluetooth-nearby-permissions",
   "url": "https://apklint.com/blog/bluetooth-nearby-permissions/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_bluetooth_nearby_permissions_list_sections",
   "pageSlug": "blog/bluetooth-nearby-permissions",
   "url": "https://apklint.com/blog/bluetooth-nearby-permissions/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_bluetooth_nearby_permissions_search_blog",
   "pageSlug": "blog/bluetooth-nearby-permissions",
   "url": "https://apklint.com/blog/bluetooth-nearby-permissions/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_bluetooth_nearby_permissions_read_article",
   "pageSlug": "blog/bluetooth-nearby-permissions",
   "url": "https://apklint.com/blog/bluetooth-nearby-permissions/"
  },
  {
   "id": "blog_android_camera_microphone_permissions_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-camera-microphone-permissions",
   "url": "https://apklint.com/blog/android-camera-microphone-permissions/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_camera_microphone_permissions_list_sections",
   "pageSlug": "blog/android-camera-microphone-permissions",
   "url": "https://apklint.com/blog/android-camera-microphone-permissions/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_camera_microphone_permissions_search_blog",
   "pageSlug": "blog/android-camera-microphone-permissions",
   "url": "https://apklint.com/blog/android-camera-microphone-permissions/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_camera_microphone_permissions_read_article",
   "pageSlug": "blog/android-camera-microphone-permissions",
   "url": "https://apklint.com/blog/android-camera-microphone-permissions/"
  },
  {
   "id": "blog_android_exact_alarm_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-exact-alarm-permission",
   "url": "https://apklint.com/blog/android-exact-alarm-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_exact_alarm_permission_list_sections",
   "pageSlug": "blog/android-exact-alarm-permission",
   "url": "https://apklint.com/blog/android-exact-alarm-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_exact_alarm_permission_search_blog",
   "pageSlug": "blog/android-exact-alarm-permission",
   "url": "https://apklint.com/blog/android-exact-alarm-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_exact_alarm_permission_read_article",
   "pageSlug": "blog/android-exact-alarm-permission",
   "url": "https://apklint.com/blog/android-exact-alarm-permission/"
  },
  {
   "id": "blog_android_foreground_service_types_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-foreground-service-types",
   "url": "https://apklint.com/blog/android-foreground-service-types/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_foreground_service_types_list_sections",
   "pageSlug": "blog/android-foreground-service-types",
   "url": "https://apklint.com/blog/android-foreground-service-types/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_foreground_service_types_search_blog",
   "pageSlug": "blog/android-foreground-service-types",
   "url": "https://apklint.com/blog/android-foreground-service-types/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_foreground_service_types_read_article",
   "pageSlug": "blog/android-foreground-service-types",
   "url": "https://apklint.com/blog/android-foreground-service-types/"
  },
  {
   "id": "blog_android_package_visibility_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-package-visibility",
   "url": "https://apklint.com/blog/android-package-visibility/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_package_visibility_list_sections",
   "pageSlug": "blog/android-package-visibility",
   "url": "https://apklint.com/blog/android-package-visibility/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_package_visibility_search_blog",
   "pageSlug": "blog/android-package-visibility",
   "url": "https://apklint.com/blog/android-package-visibility/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_package_visibility_read_article",
   "pageSlug": "blog/android-package-visibility",
   "url": "https://apklint.com/blog/android-package-visibility/"
  },
  {
   "id": "blog_manifest_merger_failed_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/manifest-merger-failed",
   "url": "https://apklint.com/blog/manifest-merger-failed/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_manifest_merger_failed_list_sections",
   "pageSlug": "blog/manifest-merger-failed",
   "url": "https://apklint.com/blog/manifest-merger-failed/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_manifest_merger_failed_search_blog",
   "pageSlug": "blog/manifest-merger-failed",
   "url": "https://apklint.com/blog/manifest-merger-failed/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_manifest_merger_failed_read_article",
   "pageSlug": "blog/manifest-merger-failed",
   "url": "https://apklint.com/blog/manifest-merger-failed/"
  },
  {
   "id": "blog_android_exported_missing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-exported-missing",
   "url": "https://apklint.com/blog/android-exported-missing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_exported_missing_list_sections",
   "pageSlug": "blog/android-exported-missing",
   "url": "https://apklint.com/blog/android-exported-missing/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_exported_missing_search_blog",
   "pageSlug": "blog/android-exported-missing",
   "url": "https://apklint.com/blog/android-exported-missing/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_exported_missing_read_article",
   "pageSlug": "blog/android-exported-missing",
   "url": "https://apklint.com/blog/android-exported-missing/"
  },
  {
   "id": "blog_debuggable_release_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/debuggable-release-apk",
   "url": "https://apklint.com/blog/debuggable-release-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_debuggable_release_apk_list_sections",
   "pageSlug": "blog/debuggable-release-apk",
   "url": "https://apklint.com/blog/debuggable-release-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_debuggable_release_apk_search_blog",
   "pageSlug": "blog/debuggable-release-apk",
   "url": "https://apklint.com/blog/debuggable-release-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_debuggable_release_apk_read_article",
   "pageSlug": "blog/debuggable-release-apk",
   "url": "https://apklint.com/blog/debuggable-release-apk/"
  },
  {
   "id": "blog_android_deep_link_validation_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-deep-link-validation",
   "url": "https://apklint.com/blog/android-deep-link-validation/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_deep_link_validation_list_sections",
   "pageSlug": "blog/android-deep-link-validation",
   "url": "https://apklint.com/blog/android-deep-link-validation/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_deep_link_validation_search_blog",
   "pageSlug": "blog/android-deep-link-validation",
   "url": "https://apklint.com/blog/android-deep-link-validation/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_deep_link_validation_read_article",
   "pageSlug": "blog/android-deep-link-validation",
   "url": "https://apklint.com/blog/android-deep-link-validation/"
  },
  {
   "id": "blog_gradle_dependency_types_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-dependency-types",
   "url": "https://apklint.com/blog/gradle-dependency-types/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_dependency_types_list_sections",
   "pageSlug": "blog/gradle-dependency-types",
   "url": "https://apklint.com/blog/gradle-dependency-types/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_types_search_blog",
   "pageSlug": "blog/gradle-dependency-types",
   "url": "https://apklint.com/blog/gradle-dependency-types/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_types_read_article",
   "pageSlug": "blog/gradle-dependency-types",
   "url": "https://apklint.com/blog/gradle-dependency-types/"
  },
  {
   "id": "blog_gradle_transitive_dependencies_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-transitive-dependencies",
   "url": "https://apklint.com/blog/gradle-transitive-dependencies/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_transitive_dependencies_list_sections",
   "pageSlug": "blog/gradle-transitive-dependencies",
   "url": "https://apklint.com/blog/gradle-transitive-dependencies/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_transitive_dependencies_search_blog",
   "pageSlug": "blog/gradle-transitive-dependencies",
   "url": "https://apklint.com/blog/gradle-transitive-dependencies/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_transitive_dependencies_read_article",
   "pageSlug": "blog/gradle-transitive-dependencies",
   "url": "https://apklint.com/blog/gradle-transitive-dependencies/"
  },
  {
   "id": "blog_gradle_api_vs_implementation_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-api-vs-implementation",
   "url": "https://apklint.com/blog/gradle-api-vs-implementation/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_api_vs_implementation_list_sections",
   "pageSlug": "blog/gradle-api-vs-implementation",
   "url": "https://apklint.com/blog/gradle-api-vs-implementation/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_api_vs_implementation_search_blog",
   "pageSlug": "blog/gradle-api-vs-implementation",
   "url": "https://apklint.com/blog/gradle-api-vs-implementation/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_api_vs_implementation_read_article",
   "pageSlug": "blog/gradle-api-vs-implementation",
   "url": "https://apklint.com/blog/gradle-api-vs-implementation/"
  },
  {
   "id": "blog_gradle_dependency_tree_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-dependency-tree",
   "url": "https://apklint.com/blog/gradle-dependency-tree/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_dependency_tree_list_sections",
   "pageSlug": "blog/gradle-dependency-tree",
   "url": "https://apklint.com/blog/gradle-dependency-tree/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_tree_search_blog",
   "pageSlug": "blog/gradle-dependency-tree",
   "url": "https://apklint.com/blog/gradle-dependency-tree/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_tree_read_article",
   "pageSlug": "blog/gradle-dependency-tree",
   "url": "https://apklint.com/blog/gradle-dependency-tree/"
  },
  {
   "id": "blog_gradle_sync_failed_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-sync-failed",
   "url": "https://apklint.com/blog/gradle-sync-failed/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_sync_failed_list_sections",
   "pageSlug": "blog/gradle-sync-failed",
   "url": "https://apklint.com/blog/gradle-sync-failed/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_sync_failed_search_blog",
   "pageSlug": "blog/gradle-sync-failed",
   "url": "https://apklint.com/blog/gradle-sync-failed/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_sync_failed_read_article",
   "pageSlug": "blog/gradle-sync-failed",
   "url": "https://apklint.com/blog/gradle-sync-failed/"
  },
  {
   "id": "blog_unable_find_gradle_tasks_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unable-find-gradle-tasks",
   "url": "https://apklint.com/blog/unable-find-gradle-tasks/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unable_find_gradle_tasks_list_sections",
   "pageSlug": "blog/unable-find-gradle-tasks",
   "url": "https://apklint.com/blog/unable-find-gradle-tasks/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unable_find_gradle_tasks_search_blog",
   "pageSlug": "blog/unable-find-gradle-tasks",
   "url": "https://apklint.com/blog/unable-find-gradle-tasks/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unable_find_gradle_tasks_read_article",
   "pageSlug": "blog/unable-find-gradle-tasks",
   "url": "https://apklint.com/blog/unable-find-gradle-tasks/"
  },
  {
   "id": "blog_update_android_gradle_plugin_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/update-android-gradle-plugin",
   "url": "https://apklint.com/blog/update-android-gradle-plugin/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_update_android_gradle_plugin_list_sections",
   "pageSlug": "blog/update-android-gradle-plugin",
   "url": "https://apklint.com/blog/update-android-gradle-plugin/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_update_android_gradle_plugin_search_blog",
   "pageSlug": "blog/update-android-gradle-plugin",
   "url": "https://apklint.com/blog/update-android-gradle-plugin/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_update_android_gradle_plugin_read_article",
   "pageSlug": "blog/update-android-gradle-plugin",
   "url": "https://apklint.com/blog/update-android-gradle-plugin/"
  },
  {
   "id": "blog_latest_android_gradle_version_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/latest-android-gradle-version",
   "url": "https://apklint.com/blog/latest-android-gradle-version/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_latest_android_gradle_version_list_sections",
   "pageSlug": "blog/latest-android-gradle-version",
   "url": "https://apklint.com/blog/latest-android-gradle-version/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_latest_android_gradle_version_search_blog",
   "pageSlug": "blog/latest-android-gradle-version",
   "url": "https://apklint.com/blog/latest-android-gradle-version/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_latest_android_gradle_version_read_article",
   "pageSlug": "blog/latest-android-gradle-version",
   "url": "https://apklint.com/blog/latest-android-gradle-version/"
  },
  {
   "id": "blog_gradle_task_dependencies_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-task-dependencies",
   "url": "https://apklint.com/blog/gradle-task-dependencies/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_task_dependencies_list_sections",
   "pageSlug": "blog/gradle-task-dependencies",
   "url": "https://apklint.com/blog/gradle-task-dependencies/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_task_dependencies_search_blog",
   "pageSlug": "blog/gradle-task-dependencies",
   "url": "https://apklint.com/blog/gradle-task-dependencies/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_task_dependencies_read_article",
   "pageSlug": "blog/gradle-task-dependencies",
   "url": "https://apklint.com/blog/gradle-task-dependencies/"
  },
  {
   "id": "blog_android_build_gradle_dependencies_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-build-gradle-dependencies",
   "url": "https://apklint.com/blog/android-build-gradle-dependencies/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_build_gradle_dependencies_list_sections",
   "pageSlug": "blog/android-build-gradle-dependencies",
   "url": "https://apklint.com/blog/android-build-gradle-dependencies/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_build_gradle_dependencies_search_blog",
   "pageSlug": "blog/android-build-gradle-dependencies",
   "url": "https://apklint.com/blog/android-build-gradle-dependencies/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_build_gradle_dependencies_read_article",
   "pageSlug": "blog/android-build-gradle-dependencies",
   "url": "https://apklint.com/blog/android-build-gradle-dependencies/"
  },
  {
   "id": "blog_android_module_build_gradle_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-module-build-gradle",
   "url": "https://apklint.com/blog/android-module-build-gradle/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_module_build_gradle_list_sections",
   "pageSlug": "blog/android-module-build-gradle",
   "url": "https://apklint.com/blog/android-module-build-gradle/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_module_build_gradle_search_blog",
   "pageSlug": "blog/android-module-build-gradle",
   "url": "https://apklint.com/blog/android-module-build-gradle/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_module_build_gradle_read_article",
   "pageSlug": "blog/android-module-build-gradle",
   "url": "https://apklint.com/blog/android-module-build-gradle/"
  },
  {
   "id": "blog_gradle_version_catalog_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-version-catalog",
   "url": "https://apklint.com/blog/gradle-version-catalog/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_version_catalog_list_sections",
   "pageSlug": "blog/gradle-version-catalog",
   "url": "https://apklint.com/blog/gradle-version-catalog/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_version_catalog_search_blog",
   "pageSlug": "blog/gradle-version-catalog",
   "url": "https://apklint.com/blog/gradle-version-catalog/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_version_catalog_read_article",
   "pageSlug": "blog/gradle-version-catalog",
   "url": "https://apklint.com/blog/gradle-version-catalog/"
  },
  {
   "id": "blog_gradle_wrapper_version_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-wrapper-version",
   "url": "https://apklint.com/blog/gradle-wrapper-version/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_wrapper_version_list_sections",
   "pageSlug": "blog/gradle-wrapper-version",
   "url": "https://apklint.com/blog/gradle-wrapper-version/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_wrapper_version_search_blog",
   "pageSlug": "blog/gradle-wrapper-version",
   "url": "https://apklint.com/blog/gradle-wrapper-version/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_wrapper_version_read_article",
   "pageSlug": "blog/gradle-wrapper-version",
   "url": "https://apklint.com/blog/gradle-wrapper-version/"
  },
  {
   "id": "blog_sentry_android_gradle_plugin_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/sentry-android-gradle-plugin",
   "url": "https://apklint.com/blog/sentry-android-gradle-plugin/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_sentry_android_gradle_plugin_list_sections",
   "pageSlug": "blog/sentry-android-gradle-plugin",
   "url": "https://apklint.com/blog/sentry-android-gradle-plugin/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_sentry_android_gradle_plugin_search_blog",
   "pageSlug": "blog/sentry-android-gradle-plugin",
   "url": "https://apklint.com/blog/sentry-android-gradle-plugin/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_sentry_android_gradle_plugin_read_article",
   "pageSlug": "blog/sentry-android-gradle-plugin",
   "url": "https://apklint.com/blog/sentry-android-gradle-plugin/"
  },
  {
   "id": "blog_maps_secrets_gradle_plugin_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/maps-secrets-gradle-plugin",
   "url": "https://apklint.com/blog/maps-secrets-gradle-plugin/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_maps_secrets_gradle_plugin_list_sections",
   "pageSlug": "blog/maps-secrets-gradle-plugin",
   "url": "https://apklint.com/blog/maps-secrets-gradle-plugin/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_maps_secrets_gradle_plugin_search_blog",
   "pageSlug": "blog/maps-secrets-gradle-plugin",
   "url": "https://apklint.com/blog/maps-secrets-gradle-plugin/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_maps_secrets_gradle_plugin_read_article",
   "pageSlug": "blog/maps-secrets-gradle-plugin",
   "url": "https://apklint.com/blog/maps-secrets-gradle-plugin/"
  },
  {
   "id": "blog_owasp_dependency_check_gradle_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/owasp-dependency-check-gradle",
   "url": "https://apklint.com/blog/owasp-dependency-check-gradle/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_owasp_dependency_check_gradle_list_sections",
   "pageSlug": "blog/owasp-dependency-check-gradle",
   "url": "https://apklint.com/blog/owasp-dependency-check-gradle/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_dependency_check_gradle_search_blog",
   "pageSlug": "blog/owasp-dependency-check-gradle",
   "url": "https://apklint.com/blog/owasp-dependency-check-gradle/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_owasp_dependency_check_gradle_read_article",
   "pageSlug": "blog/owasp-dependency-check-gradle",
   "url": "https://apklint.com/blog/owasp-dependency-check-gradle/"
  },
  {
   "id": "blog_android_lint_workflow_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-lint-workflow",
   "url": "https://apklint.com/blog/android-lint-workflow/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_lint_workflow_list_sections",
   "pageSlug": "blog/android-lint-workflow",
   "url": "https://apklint.com/blog/android-lint-workflow/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_lint_workflow_search_blog",
   "pageSlug": "blog/android-lint-workflow",
   "url": "https://apklint.com/blog/android-lint-workflow/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_lint_workflow_read_article",
   "pageSlug": "blog/android-lint-workflow",
   "url": "https://apklint.com/blog/android-lint-workflow/"
  },
  {
   "id": "blog_android_static_code_analysis_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-static-code-analysis",
   "url": "https://apklint.com/blog/android-static-code-analysis/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_static_code_analysis_list_sections",
   "pageSlug": "blog/android-static-code-analysis",
   "url": "https://apklint.com/blog/android-static-code-analysis/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_static_code_analysis_search_blog",
   "pageSlug": "blog/android-static-code-analysis",
   "url": "https://apklint.com/blog/android-static-code-analysis/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_static_code_analysis_read_article",
   "pageSlug": "blog/android-static-code-analysis",
   "url": "https://apklint.com/blog/android-static-code-analysis/"
  },
  {
   "id": "blog_java_code_review_checklist_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/java-code-review-checklist",
   "url": "https://apklint.com/blog/java-code-review-checklist/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_java_code_review_checklist_list_sections",
   "pageSlug": "blog/java-code-review-checklist",
   "url": "https://apklint.com/blog/java-code-review-checklist/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_java_code_review_checklist_search_blog",
   "pageSlug": "blog/java-code-review-checklist",
   "url": "https://apklint.com/blog/java-code-review-checklist/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_java_code_review_checklist_read_article",
   "pageSlug": "blog/java-code-review-checklist",
   "url": "https://apklint.com/blog/java-code-review-checklist/"
  },
  {
   "id": "blog_kotlin_design_patterns_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/kotlin-design-patterns",
   "url": "https://apklint.com/blog/kotlin-design-patterns/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_kotlin_design_patterns_list_sections",
   "pageSlug": "blog/kotlin-design-patterns",
   "url": "https://apklint.com/blog/kotlin-design-patterns/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_kotlin_design_patterns_search_blog",
   "pageSlug": "blog/kotlin-design-patterns",
   "url": "https://apklint.com/blog/kotlin-design-patterns/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_kotlin_design_patterns_read_article",
   "pageSlug": "blog/kotlin-design-patterns",
   "url": "https://apklint.com/blog/kotlin-design-patterns/"
  },
  {
   "id": "blog_r8_vs_proguard_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/r8-vs-proguard",
   "url": "https://apklint.com/blog/r8-vs-proguard/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_r8_vs_proguard_list_sections",
   "pageSlug": "blog/r8-vs-proguard",
   "url": "https://apklint.com/blog/r8-vs-proguard/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_r8_vs_proguard_search_blog",
   "pageSlug": "blog/r8-vs-proguard",
   "url": "https://apklint.com/blog/r8-vs-proguard/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_r8_vs_proguard_read_article",
   "pageSlug": "blog/r8-vs-proguard",
   "url": "https://apklint.com/blog/r8-vs-proguard/"
  },
  {
   "id": "blog_android_minifyenabled_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-minifyenabled",
   "url": "https://apklint.com/blog/android-minifyenabled/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_minifyenabled_list_sections",
   "pageSlug": "blog/android-minifyenabled",
   "url": "https://apklint.com/blog/android-minifyenabled/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_minifyenabled_search_blog",
   "pageSlug": "blog/android-minifyenabled",
   "url": "https://apklint.com/blog/android-minifyenabled/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_minifyenabled_read_article",
   "pageSlug": "blog/android-minifyenabled",
   "url": "https://apklint.com/blog/android-minifyenabled/"
  },
  {
   "id": "blog_android_shrinkresources_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-shrinkresources",
   "url": "https://apklint.com/blog/android-shrinkresources/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_shrinkresources_list_sections",
   "pageSlug": "blog/android-shrinkresources",
   "url": "https://apklint.com/blog/android-shrinkresources/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_shrinkresources_search_blog",
   "pageSlug": "blog/android-shrinkresources",
   "url": "https://apklint.com/blog/android-shrinkresources/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_shrinkresources_read_article",
   "pageSlug": "blog/android-shrinkresources",
   "url": "https://apklint.com/blog/android-shrinkresources/"
  },
  {
   "id": "blog_android_app_obfuscation_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-app-obfuscation",
   "url": "https://apklint.com/blog/android-app-obfuscation/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_app_obfuscation_list_sections",
   "pageSlug": "blog/android-app-obfuscation",
   "url": "https://apklint.com/blog/android-app-obfuscation/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_obfuscation_search_blog",
   "pageSlug": "blog/android-app-obfuscation",
   "url": "https://apklint.com/blog/android-app-obfuscation/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_obfuscation_read_article",
   "pageSlug": "blog/android-app-obfuscation",
   "url": "https://apklint.com/blog/android-app-obfuscation/"
  },
  {
   "id": "blog_proguard_java_obfuscator_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/proguard-java-obfuscator",
   "url": "https://apklint.com/blog/proguard-java-obfuscator/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_proguard_java_obfuscator_list_sections",
   "pageSlug": "blog/proguard-java-obfuscator",
   "url": "https://apklint.com/blog/proguard-java-obfuscator/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_proguard_java_obfuscator_search_blog",
   "pageSlug": "blog/proguard-java-obfuscator",
   "url": "https://apklint.com/blog/proguard-java-obfuscator/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_proguard_java_obfuscator_read_article",
   "pageSlug": "blog/proguard-java-obfuscator",
   "url": "https://apklint.com/blog/proguard-java-obfuscator/"
  },
  {
   "id": "blog_r8_keep_rules_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/r8-keep-rules",
   "url": "https://apklint.com/blog/r8-keep-rules/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_r8_keep_rules_list_sections",
   "pageSlug": "blog/r8-keep-rules",
   "url": "https://apklint.com/blog/r8-keep-rules/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_r8_keep_rules_search_blog",
   "pageSlug": "blog/r8-keep-rules",
   "url": "https://apklint.com/blog/r8-keep-rules/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_r8_keep_rules_read_article",
   "pageSlug": "blog/r8-keep-rules",
   "url": "https://apklint.com/blog/r8-keep-rules/"
  },
  {
   "id": "blog_r8_missing_classes_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/r8-missing-classes",
   "url": "https://apklint.com/blog/r8-missing-classes/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_r8_missing_classes_list_sections",
   "pageSlug": "blog/r8-missing-classes",
   "url": "https://apklint.com/blog/r8-missing-classes/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_r8_missing_classes_search_blog",
   "pageSlug": "blog/r8-missing-classes",
   "url": "https://apklint.com/blog/r8-missing-classes/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_r8_missing_classes_read_article",
   "pageSlug": "blog/r8-missing-classes",
   "url": "https://apklint.com/blog/r8-missing-classes/"
  },
  {
   "id": "blog_retrace_obfuscated_stack_trace_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/retrace-obfuscated-stack-trace",
   "url": "https://apklint.com/blog/retrace-obfuscated-stack-trace/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_retrace_obfuscated_stack_trace_list_sections",
   "pageSlug": "blog/retrace-obfuscated-stack-trace",
   "url": "https://apklint.com/blog/retrace-obfuscated-stack-trace/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_retrace_obfuscated_stack_trace_search_blog",
   "pageSlug": "blog/retrace-obfuscated-stack-trace",
   "url": "https://apklint.com/blog/retrace-obfuscated-stack-trace/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_retrace_obfuscated_stack_trace_read_article",
   "pageSlug": "blog/retrace-obfuscated-stack-trace",
   "url": "https://apklint.com/blog/retrace-obfuscated-stack-trace/"
  },
  {
   "id": "blog_gradle_dependency_conflicts_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-dependency-conflicts",
   "url": "https://apklint.com/blog/gradle-dependency-conflicts/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_dependency_conflicts_list_sections",
   "pageSlug": "blog/gradle-dependency-conflicts",
   "url": "https://apklint.com/blog/gradle-dependency-conflicts/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_conflicts_search_blog",
   "pageSlug": "blog/gradle-dependency-conflicts",
   "url": "https://apklint.com/blog/gradle-dependency-conflicts/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_conflicts_read_article",
   "pageSlug": "blog/gradle-dependency-conflicts",
   "url": "https://apklint.com/blog/gradle-dependency-conflicts/"
  },
  {
   "id": "blog_gradle_duplicate_classes_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-duplicate-classes",
   "url": "https://apklint.com/blog/gradle-duplicate-classes/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_duplicate_classes_list_sections",
   "pageSlug": "blog/gradle-duplicate-classes",
   "url": "https://apklint.com/blog/gradle-duplicate-classes/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_duplicate_classes_search_blog",
   "pageSlug": "blog/gradle-duplicate-classes",
   "url": "https://apklint.com/blog/gradle-duplicate-classes/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_duplicate_classes_read_article",
   "pageSlug": "blog/gradle-duplicate-classes",
   "url": "https://apklint.com/blog/gradle-duplicate-classes/"
  },
  {
   "id": "blog_gradle_dependency_locking_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-dependency-locking",
   "url": "https://apklint.com/blog/gradle-dependency-locking/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_dependency_locking_list_sections",
   "pageSlug": "blog/gradle-dependency-locking",
   "url": "https://apklint.com/blog/gradle-dependency-locking/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_locking_search_blog",
   "pageSlug": "blog/gradle-dependency-locking",
   "url": "https://apklint.com/blog/gradle-dependency-locking/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_locking_read_article",
   "pageSlug": "blog/gradle-dependency-locking",
   "url": "https://apklint.com/blog/gradle-dependency-locking/"
  },
  {
   "id": "blog_gradle_dependency_verification_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-dependency-verification",
   "url": "https://apklint.com/blog/gradle-dependency-verification/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_dependency_verification_list_sections",
   "pageSlug": "blog/gradle-dependency-verification",
   "url": "https://apklint.com/blog/gradle-dependency-verification/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_verification_search_blog",
   "pageSlug": "blog/gradle-dependency-verification",
   "url": "https://apklint.com/blog/gradle-dependency-verification/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_dependency_verification_read_article",
   "pageSlug": "blog/gradle-dependency-verification",
   "url": "https://apklint.com/blog/gradle-dependency-verification/"
  },
  {
   "id": "blog_gradle_configuration_cache_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/gradle-configuration-cache",
   "url": "https://apklint.com/blog/gradle-configuration-cache/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_gradle_configuration_cache_list_sections",
   "pageSlug": "blog/gradle-configuration-cache",
   "url": "https://apklint.com/blog/gradle-configuration-cache/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_configuration_cache_search_blog",
   "pageSlug": "blog/gradle-configuration-cache",
   "url": "https://apklint.com/blog/gradle-configuration-cache/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_gradle_configuration_cache_read_article",
   "pageSlug": "blog/gradle-configuration-cache",
   "url": "https://apklint.com/blog/gradle-configuration-cache/"
  },
  {
   "id": "blog_firebase_android_setup_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-android-setup",
   "url": "https://apklint.com/blog/firebase-android-setup/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_android_setup_list_sections",
   "pageSlug": "blog/firebase-android-setup",
   "url": "https://apklint.com/blog/firebase-android-setup/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_android_setup_search_blog",
   "pageSlug": "blog/firebase-android-setup",
   "url": "https://apklint.com/blog/firebase-android-setup/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_android_setup_read_article",
   "pageSlug": "blog/firebase-android-setup",
   "url": "https://apklint.com/blog/firebase-android-setup/"
  },
  {
   "id": "blog_firebase_bom_latest_version_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-bom-latest-version",
   "url": "https://apklint.com/blog/firebase-bom-latest-version/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_bom_latest_version_list_sections",
   "pageSlug": "blog/firebase-bom-latest-version",
   "url": "https://apklint.com/blog/firebase-bom-latest-version/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_bom_latest_version_search_blog",
   "pageSlug": "blog/firebase-bom-latest-version",
   "url": "https://apklint.com/blog/firebase-bom-latest-version/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_bom_latest_version_read_article",
   "pageSlug": "blog/firebase-bom-latest-version",
   "url": "https://apklint.com/blog/firebase-bom-latest-version/"
  },
  {
   "id": "blog_firebase_google_sign_in_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-google-sign-in",
   "url": "https://apklint.com/blog/firebase-google-sign-in/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_google_sign_in_list_sections",
   "pageSlug": "blog/firebase-google-sign-in",
   "url": "https://apklint.com/blog/firebase-google-sign-in/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_google_sign_in_search_blog",
   "pageSlug": "blog/firebase-google-sign-in",
   "url": "https://apklint.com/blog/firebase-google-sign-in/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_google_sign_in_read_article",
   "pageSlug": "blog/firebase-google-sign-in",
   "url": "https://apklint.com/blog/firebase-google-sign-in/"
  },
  {
   "id": "blog_firebase_crashlytics_gradle_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-crashlytics-gradle",
   "url": "https://apklint.com/blog/firebase-crashlytics-gradle/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_crashlytics_gradle_list_sections",
   "pageSlug": "blog/firebase-crashlytics-gradle",
   "url": "https://apklint.com/blog/firebase-crashlytics-gradle/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_crashlytics_gradle_search_blog",
   "pageSlug": "blog/firebase-crashlytics-gradle",
   "url": "https://apklint.com/blog/firebase-crashlytics-gradle/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_crashlytics_gradle_read_article",
   "pageSlug": "blog/firebase-crashlytics-gradle",
   "url": "https://apklint.com/blog/firebase-crashlytics-gradle/"
  },
  {
   "id": "blog_firebase_crashlytics_dependency_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-crashlytics-dependency",
   "url": "https://apklint.com/blog/firebase-crashlytics-dependency/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_crashlytics_dependency_list_sections",
   "pageSlug": "blog/firebase-crashlytics-dependency",
   "url": "https://apklint.com/blog/firebase-crashlytics-dependency/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_crashlytics_dependency_search_blog",
   "pageSlug": "blog/firebase-crashlytics-dependency",
   "url": "https://apklint.com/blog/firebase-crashlytics-dependency/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_crashlytics_dependency_read_article",
   "pageSlug": "blog/firebase-crashlytics-dependency",
   "url": "https://apklint.com/blog/firebase-crashlytics-dependency/"
  },
  {
   "id": "blog_firebase_debugview_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-debugview-android",
   "url": "https://apklint.com/blog/firebase-debugview-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_debugview_android_list_sections",
   "pageSlug": "blog/firebase-debugview-android",
   "url": "https://apklint.com/blog/firebase-debugview-android/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_debugview_android_search_blog",
   "pageSlug": "blog/firebase-debugview-android",
   "url": "https://apklint.com/blog/firebase-debugview-android/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_debugview_android_read_article",
   "pageSlug": "blog/firebase-debugview-android",
   "url": "https://apklint.com/blog/firebase-debugview-android/"
  },
  {
   "id": "blog_firebase_performance_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-performance-android",
   "url": "https://apklint.com/blog/firebase-performance-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_performance_android_list_sections",
   "pageSlug": "blog/firebase-performance-android",
   "url": "https://apklint.com/blog/firebase-performance-android/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_performance_android_search_blog",
   "pageSlug": "blog/firebase-performance-android",
   "url": "https://apklint.com/blog/firebase-performance-android/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_performance_android_read_article",
   "pageSlug": "blog/firebase-performance-android",
   "url": "https://apklint.com/blog/firebase-performance-android/"
  },
  {
   "id": "blog_firebase_performance_flutter_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-performance-flutter",
   "url": "https://apklint.com/blog/firebase-performance-flutter/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_performance_flutter_list_sections",
   "pageSlug": "blog/firebase-performance-flutter",
   "url": "https://apklint.com/blog/firebase-performance-flutter/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_performance_flutter_search_blog",
   "pageSlug": "blog/firebase-performance-flutter",
   "url": "https://apklint.com/blog/firebase-performance-flutter/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_performance_flutter_read_article",
   "pageSlug": "blog/firebase-performance-flutter",
   "url": "https://apklint.com/blog/firebase-performance-flutter/"
  },
  {
   "id": "blog_firebase_app_check_flutter_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-app-check-flutter",
   "url": "https://apklint.com/blog/firebase-app-check-flutter/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_app_check_flutter_list_sections",
   "pageSlug": "blog/firebase-app-check-flutter",
   "url": "https://apklint.com/blog/firebase-app-check-flutter/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_flutter_search_blog",
   "pageSlug": "blog/firebase-app-check-flutter",
   "url": "https://apklint.com/blog/firebase-app-check-flutter/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_flutter_read_article",
   "pageSlug": "blog/firebase-app-check-flutter",
   "url": "https://apklint.com/blog/firebase-app-check-flutter/"
  },
  {
   "id": "blog_firebase_app_check_react_native_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-app-check-react-native",
   "url": "https://apklint.com/blog/firebase-app-check-react-native/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_app_check_react_native_list_sections",
   "pageSlug": "blog/firebase-app-check-react-native",
   "url": "https://apklint.com/blog/firebase-app-check-react-native/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_react_native_search_blog",
   "pageSlug": "blog/firebase-app-check-react-native",
   "url": "https://apklint.com/blog/firebase-app-check-react-native/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_react_native_read_article",
   "pageSlug": "blog/firebase-app-check-react-native",
   "url": "https://apklint.com/blog/firebase-app-check-react-native/"
  },
  {
   "id": "blog_firebase_app_check_pricing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-app-check-pricing",
   "url": "https://apklint.com/blog/firebase-app-check-pricing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_app_check_pricing_list_sections",
   "pageSlug": "blog/firebase-app-check-pricing",
   "url": "https://apklint.com/blog/firebase-app-check-pricing/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_pricing_search_blog",
   "pageSlug": "blog/firebase-app-check-pricing",
   "url": "https://apklint.com/blog/firebase-app-check-pricing/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_pricing_read_article",
   "pageSlug": "blog/firebase-app-check-pricing",
   "url": "https://apklint.com/blog/firebase-app-check-pricing/"
  },
  {
   "id": "blog_firebase_x_appcheck_header_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-x-appcheck-header",
   "url": "https://apklint.com/blog/firebase-x-appcheck-header/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_x_appcheck_header_list_sections",
   "pageSlug": "blog/firebase-x-appcheck-header",
   "url": "https://apklint.com/blog/firebase-x-appcheck-header/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_x_appcheck_header_search_blog",
   "pageSlug": "blog/firebase-x-appcheck-header",
   "url": "https://apklint.com/blog/firebase-x-appcheck-header/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_x_appcheck_header_read_article",
   "pageSlug": "blog/firebase-x-appcheck-header",
   "url": "https://apklint.com/blog/firebase-x-appcheck-header/"
  },
  {
   "id": "blog_android_app_attestation_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-app-attestation",
   "url": "https://apklint.com/blog/android-app-attestation/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_app_attestation_list_sections",
   "pageSlug": "blog/android-app-attestation",
   "url": "https://apklint.com/blog/android-app-attestation/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_attestation_search_blog",
   "pageSlug": "blog/android-app-attestation",
   "url": "https://apklint.com/blog/android-app-attestation/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_attestation_read_article",
   "pageSlug": "blog/android-app-attestation",
   "url": "https://apklint.com/blog/android-app-attestation/"
  },
  {
   "id": "blog_play_integrity_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-integrity-android",
   "url": "https://apklint.com/blog/play-integrity-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_integrity_android_list_sections",
   "pageSlug": "blog/play-integrity-android",
   "url": "https://apklint.com/blog/play-integrity-android/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_android_search_blog",
   "pageSlug": "blog/play-integrity-android",
   "url": "https://apklint.com/blog/play-integrity-android/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_android_read_article",
   "pageSlug": "blog/play-integrity-android",
   "url": "https://apklint.com/blog/play-integrity-android/"
  },
  {
   "id": "blog_play_integrity_dependency_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-integrity-dependency",
   "url": "https://apklint.com/blog/play-integrity-dependency/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_integrity_dependency_list_sections",
   "pageSlug": "blog/play-integrity-dependency",
   "url": "https://apklint.com/blog/play-integrity-dependency/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_dependency_search_blog",
   "pageSlug": "blog/play-integrity-dependency",
   "url": "https://apklint.com/blog/play-integrity-dependency/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_dependency_read_article",
   "pageSlug": "blog/play-integrity-dependency",
   "url": "https://apklint.com/blog/play-integrity-dependency/"
  },
  {
   "id": "blog_play_integrity_verdicts_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-integrity-verdicts",
   "url": "https://apklint.com/blog/play-integrity-verdicts/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_integrity_verdicts_list_sections",
   "pageSlug": "blog/play-integrity-verdicts",
   "url": "https://apklint.com/blog/play-integrity-verdicts/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_verdicts_search_blog",
   "pageSlug": "blog/play-integrity-verdicts",
   "url": "https://apklint.com/blog/play-integrity-verdicts/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_verdicts_read_article",
   "pageSlug": "blog/play-integrity-verdicts",
   "url": "https://apklint.com/blog/play-integrity-verdicts/"
  },
  {
   "id": "blog_firebase_app_check_debug_provider_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-app-check-debug-provider",
   "url": "https://apklint.com/blog/firebase-app-check-debug-provider/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_app_check_debug_provider_list_sections",
   "pageSlug": "blog/firebase-app-check-debug-provider",
   "url": "https://apklint.com/blog/firebase-app-check-debug-provider/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_debug_provider_search_blog",
   "pageSlug": "blog/firebase-app-check-debug-provider",
   "url": "https://apklint.com/blog/firebase-app-check-debug-provider/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_debug_provider_read_article",
   "pageSlug": "blog/firebase-app-check-debug-provider",
   "url": "https://apklint.com/blog/firebase-app-check-debug-provider/"
  },
  {
   "id": "blog_firebase_app_check_enforcement_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-app-check-enforcement",
   "url": "https://apklint.com/blog/firebase-app-check-enforcement/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_app_check_enforcement_list_sections",
   "pageSlug": "blog/firebase-app-check-enforcement",
   "url": "https://apklint.com/blog/firebase-app-check-enforcement/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_enforcement_search_blog",
   "pageSlug": "blog/firebase-app-check-enforcement",
   "url": "https://apklint.com/blog/firebase-app-check-enforcement/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_app_check_enforcement_read_article",
   "pageSlug": "blog/firebase-app-check-enforcement",
   "url": "https://apklint.com/blog/firebase-app-check-enforcement/"
  },
  {
   "id": "blog_firebase_config_api_key_security_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-config-api-key-security",
   "url": "https://apklint.com/blog/firebase-config-api-key-security/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_config_api_key_security_list_sections",
   "pageSlug": "blog/firebase-config-api-key-security",
   "url": "https://apklint.com/blog/firebase-config-api-key-security/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_config_api_key_security_search_blog",
   "pageSlug": "blog/firebase-config-api-key-security",
   "url": "https://apklint.com/blog/firebase-config-api-key-security/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_config_api_key_security_read_article",
   "pageSlug": "blog/firebase-config-api-key-security",
   "url": "https://apklint.com/blog/firebase-config-api-key-security/"
  },
  {
   "id": "blog_firebase_google_services_json_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-google-services-json",
   "url": "https://apklint.com/blog/firebase-google-services-json/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_google_services_json_list_sections",
   "pageSlug": "blog/firebase-google-services-json",
   "url": "https://apklint.com/blog/firebase-google-services-json/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_google_services_json_search_blog",
   "pageSlug": "blog/firebase-google-services-json",
   "url": "https://apklint.com/blog/firebase-google-services-json/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_google_services_json_read_article",
   "pageSlug": "blog/firebase-google-services-json",
   "url": "https://apklint.com/blog/firebase-google-services-json/"
  },
  {
   "id": "blog_firebase_security_rules_audit_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-security-rules-audit",
   "url": "https://apklint.com/blog/firebase-security-rules-audit/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_security_rules_audit_list_sections",
   "pageSlug": "blog/firebase-security-rules-audit",
   "url": "https://apklint.com/blog/firebase-security-rules-audit/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_security_rules_audit_search_blog",
   "pageSlug": "blog/firebase-security-rules-audit",
   "url": "https://apklint.com/blog/firebase-security-rules-audit/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_security_rules_audit_read_article",
   "pageSlug": "blog/firebase-security-rules-audit",
   "url": "https://apklint.com/blog/firebase-security-rules-audit/"
  },
  {
   "id": "blog_crashlytics_missing_crash_reports_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/crashlytics-missing-crash-reports",
   "url": "https://apklint.com/blog/crashlytics-missing-crash-reports/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_crashlytics_missing_crash_reports_list_sections",
   "pageSlug": "blog/crashlytics-missing-crash-reports",
   "url": "https://apklint.com/blog/crashlytics-missing-crash-reports/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_crashlytics_missing_crash_reports_search_blog",
   "pageSlug": "blog/crashlytics-missing-crash-reports",
   "url": "https://apklint.com/blog/crashlytics-missing-crash-reports/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_crashlytics_missing_crash_reports_read_article",
   "pageSlug": "blog/crashlytics-missing-crash-reports",
   "url": "https://apklint.com/blog/crashlytics-missing-crash-reports/"
  },
  {
   "id": "blog_crashlytics_mapping_file_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/crashlytics-mapping-file",
   "url": "https://apklint.com/blog/crashlytics-mapping-file/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_crashlytics_mapping_file_list_sections",
   "pageSlug": "blog/crashlytics-mapping-file",
   "url": "https://apklint.com/blog/crashlytics-mapping-file/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_crashlytics_mapping_file_search_blog",
   "pageSlug": "blog/crashlytics-mapping-file",
   "url": "https://apklint.com/blog/crashlytics-mapping-file/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_crashlytics_mapping_file_read_article",
   "pageSlug": "blog/crashlytics-mapping-file",
   "url": "https://apklint.com/blog/crashlytics-mapping-file/"
  },
  {
   "id": "blog_play_integrity_standard_request_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-integrity-standard-request",
   "url": "https://apklint.com/blog/play-integrity-standard-request/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_integrity_standard_request_list_sections",
   "pageSlug": "blog/play-integrity-standard-request",
   "url": "https://apklint.com/blog/play-integrity-standard-request/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_standard_request_search_blog",
   "pageSlug": "blog/play-integrity-standard-request",
   "url": "https://apklint.com/blog/play-integrity-standard-request/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_integrity_standard_request_read_article",
   "pageSlug": "blog/play-integrity-standard-request",
   "url": "https://apklint.com/blog/play-integrity-standard-request/"
  },
  {
   "id": "blog_firebase_ktx_migration_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/firebase-ktx-migration",
   "url": "https://apklint.com/blog/firebase-ktx-migration/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_firebase_ktx_migration_list_sections",
   "pageSlug": "blog/firebase-ktx-migration",
   "url": "https://apklint.com/blog/firebase-ktx-migration/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_ktx_migration_search_blog",
   "pageSlug": "blog/firebase-ktx-migration",
   "url": "https://apklint.com/blog/firebase-ktx-migration/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_firebase_ktx_migration_read_article",
   "pageSlug": "blog/firebase-ktx-migration",
   "url": "https://apklint.com/blog/firebase-ktx-migration/"
  },
  {
   "id": "blog_transaction_too_large_exception_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/transaction-too-large-exception",
   "url": "https://apklint.com/blog/transaction-too-large-exception/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_transaction_too_large_exception_list_sections",
   "pageSlug": "blog/transaction-too-large-exception",
   "url": "https://apklint.com/blog/transaction-too-large-exception/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_transaction_too_large_exception_search_blog",
   "pageSlug": "blog/transaction-too-large-exception",
   "url": "https://apklint.com/blog/transaction-too-large-exception/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_transaction_too_large_exception_read_article",
   "pageSlug": "blog/transaction-too-large-exception",
   "url": "https://apklint.com/blog/transaction-too-large-exception/"
  },
  {
   "id": "blog_android_null_pointer_exception_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-null-pointer-exception",
   "url": "https://apklint.com/blog/android-null-pointer-exception/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_null_pointer_exception_list_sections",
   "pageSlug": "blog/android-null-pointer-exception",
   "url": "https://apklint.com/blog/android-null-pointer-exception/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_null_pointer_exception_search_blog",
   "pageSlug": "blog/android-null-pointer-exception",
   "url": "https://apklint.com/blog/android-null-pointer-exception/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_null_pointer_exception_read_article",
   "pageSlug": "blog/android-null-pointer-exception",
   "url": "https://apklint.com/blog/android-null-pointer-exception/"
  },
  {
   "id": "blog_android_crash_reports_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-crash-reports",
   "url": "https://apklint.com/blog/android-crash-reports/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_crash_reports_list_sections",
   "pageSlug": "blog/android-crash-reports",
   "url": "https://apklint.com/blog/android-crash-reports/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_crash_reports_search_blog",
   "pageSlug": "blog/android-crash-reports",
   "url": "https://apklint.com/blog/android-crash-reports/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_crash_reports_read_article",
   "pageSlug": "blog/android-crash-reports",
   "url": "https://apklint.com/blog/android-crash-reports/"
  },
  {
   "id": "blog_android_network_profiler_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-network-profiler",
   "url": "https://apklint.com/blog/android-network-profiler/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_network_profiler_list_sections",
   "pageSlug": "blog/android-network-profiler",
   "url": "https://apklint.com/blog/android-network-profiler/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_network_profiler_search_blog",
   "pageSlug": "blog/android-network-profiler",
   "url": "https://apklint.com/blog/android-network-profiler/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_network_profiler_read_article",
   "pageSlug": "blog/android-network-profiler",
   "url": "https://apklint.com/blog/android-network-profiler/"
  },
  {
   "id": "blog_android_performance_testing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-performance-testing",
   "url": "https://apklint.com/blog/android-performance-testing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_performance_testing_list_sections",
   "pageSlug": "blog/android-performance-testing",
   "url": "https://apklint.com/blog/android-performance-testing/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_performance_testing_search_blog",
   "pageSlug": "blog/android-performance-testing",
   "url": "https://apklint.com/blog/android-performance-testing/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_performance_testing_read_article",
   "pageSlug": "blog/android-performance-testing",
   "url": "https://apklint.com/blog/android-performance-testing/"
  },
  {
   "id": "blog_android_check_memory_usage_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-check-memory-usage",
   "url": "https://apklint.com/blog/android-check-memory-usage/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_check_memory_usage_list_sections",
   "pageSlug": "blog/android-check-memory-usage",
   "url": "https://apklint.com/blog/android-check-memory-usage/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_check_memory_usage_search_blog",
   "pageSlug": "blog/android-check-memory-usage",
   "url": "https://apklint.com/blog/android-check-memory-usage/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_check_memory_usage_read_article",
   "pageSlug": "blog/android-check-memory-usage",
   "url": "https://apklint.com/blog/android-check-memory-usage/"
  },
  {
   "id": "blog_android_performance_monitoring_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-performance-monitoring",
   "url": "https://apklint.com/blog/android-performance-monitoring/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_performance_monitoring_list_sections",
   "pageSlug": "blog/android-performance-monitoring",
   "url": "https://apklint.com/blog/android-performance-monitoring/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_performance_monitoring_search_blog",
   "pageSlug": "blog/android-performance-monitoring",
   "url": "https://apklint.com/blog/android-performance-monitoring/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_performance_monitoring_read_article",
   "pageSlug": "blog/android-performance-monitoring",
   "url": "https://apklint.com/blog/android-performance-monitoring/"
  },
  {
   "id": "blog_android_performance_optimization_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-performance-optimization",
   "url": "https://apklint.com/blog/android-performance-optimization/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_performance_optimization_list_sections",
   "pageSlug": "blog/android-performance-optimization",
   "url": "https://apklint.com/blog/android-performance-optimization/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_performance_optimization_search_blog",
   "pageSlug": "blog/android-performance-optimization",
   "url": "https://apklint.com/blog/android-performance-optimization/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_performance_optimization_read_article",
   "pageSlug": "blog/android-performance-optimization",
   "url": "https://apklint.com/blog/android-performance-optimization/"
  },
  {
   "id": "blog_android_anr_debugging_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-anr-debugging",
   "url": "https://apklint.com/blog/android-anr-debugging/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_anr_debugging_list_sections",
   "pageSlug": "blog/android-anr-debugging",
   "url": "https://apklint.com/blog/android-anr-debugging/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_anr_debugging_search_blog",
   "pageSlug": "blog/android-anr-debugging",
   "url": "https://apklint.com/blog/android-anr-debugging/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_anr_debugging_read_article",
   "pageSlug": "blog/android-anr-debugging",
   "url": "https://apklint.com/blog/android-anr-debugging/"
  },
  {
   "id": "blog_android_cold_start_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-cold-start",
   "url": "https://apklint.com/blog/android-cold-start/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_cold_start_list_sections",
   "pageSlug": "blog/android-cold-start",
   "url": "https://apklint.com/blog/android-cold-start/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_cold_start_search_blog",
   "pageSlug": "blog/android-cold-start",
   "url": "https://apklint.com/blog/android-cold-start/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_cold_start_read_article",
   "pageSlug": "blog/android-cold-start",
   "url": "https://apklint.com/blog/android-cold-start/"
  },
  {
   "id": "blog_android_baseline_profiles_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-baseline-profiles",
   "url": "https://apklint.com/blog/android-baseline-profiles/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_baseline_profiles_list_sections",
   "pageSlug": "blog/android-baseline-profiles",
   "url": "https://apklint.com/blog/android-baseline-profiles/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_baseline_profiles_search_blog",
   "pageSlug": "blog/android-baseline-profiles",
   "url": "https://apklint.com/blog/android-baseline-profiles/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_baseline_profiles_read_article",
   "pageSlug": "blog/android-baseline-profiles",
   "url": "https://apklint.com/blog/android-baseline-profiles/"
  },
  {
   "id": "blog_android_jank_rendering_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-jank-rendering",
   "url": "https://apklint.com/blog/android-jank-rendering/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_jank_rendering_list_sections",
   "pageSlug": "blog/android-jank-rendering",
   "url": "https://apklint.com/blog/android-jank-rendering/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_jank_rendering_search_blog",
   "pageSlug": "blog/android-jank-rendering",
   "url": "https://apklint.com/blog/android-jank-rendering/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_jank_rendering_read_article",
   "pageSlug": "blog/android-jank-rendering",
   "url": "https://apklint.com/blog/android-jank-rendering/"
  },
  {
   "id": "blog_android_memory_leaks_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-memory-leaks",
   "url": "https://apklint.com/blog/android-memory-leaks/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_memory_leaks_list_sections",
   "pageSlug": "blog/android-memory-leaks",
   "url": "https://apklint.com/blog/android-memory-leaks/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_memory_leaks_search_blog",
   "pageSlug": "blog/android-memory-leaks",
   "url": "https://apklint.com/blog/android-memory-leaks/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_memory_leaks_read_article",
   "pageSlug": "blog/android-memory-leaks",
   "url": "https://apklint.com/blog/android-memory-leaks/"
  },
  {
   "id": "blog_android_out_of_memory_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-out-of-memory",
   "url": "https://apklint.com/blog/android-out-of-memory/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_out_of_memory_list_sections",
   "pageSlug": "blog/android-out-of-memory",
   "url": "https://apklint.com/blog/android-out-of-memory/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_out_of_memory_search_blog",
   "pageSlug": "blog/android-out-of-memory",
   "url": "https://apklint.com/blog/android-out-of-memory/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_out_of_memory_read_article",
   "pageSlug": "blog/android-out-of-memory",
   "url": "https://apklint.com/blog/android-out-of-memory/"
  },
  {
   "id": "blog_android_battery_drain_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-battery-drain",
   "url": "https://apklint.com/blog/android-battery-drain/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_battery_drain_list_sections",
   "pageSlug": "blog/android-battery-drain",
   "url": "https://apklint.com/blog/android-battery-drain/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_battery_drain_search_blog",
   "pageSlug": "blog/android-battery-drain",
   "url": "https://apklint.com/blog/android-battery-drain/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_battery_drain_read_article",
   "pageSlug": "blog/android-battery-drain",
   "url": "https://apklint.com/blog/android-battery-drain/"
  },
  {
   "id": "blog_android_vitals_crash_rate_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-vitals-crash-rate",
   "url": "https://apklint.com/blog/android-vitals-crash-rate/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_vitals_crash_rate_list_sections",
   "pageSlug": "blog/android-vitals-crash-rate",
   "url": "https://apklint.com/blog/android-vitals-crash-rate/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_vitals_crash_rate_search_blog",
   "pageSlug": "blog/android-vitals-crash-rate",
   "url": "https://apklint.com/blog/android-vitals-crash-rate/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_vitals_crash_rate_read_article",
   "pageSlug": "blog/android-vitals-crash-rate",
   "url": "https://apklint.com/blog/android-vitals-crash-rate/"
  },
  {
   "id": "blog_android_vitals_anr_rate_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-vitals-anr-rate",
   "url": "https://apklint.com/blog/android-vitals-anr-rate/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_vitals_anr_rate_list_sections",
   "pageSlug": "blog/android-vitals-anr-rate",
   "url": "https://apklint.com/blog/android-vitals-anr-rate/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_vitals_anr_rate_search_blog",
   "pageSlug": "blog/android-vitals-anr-rate",
   "url": "https://apklint.com/blog/android-vitals-anr-rate/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_vitals_anr_rate_read_article",
   "pageSlug": "blog/android-vitals-anr-rate",
   "url": "https://apklint.com/blog/android-vitals-anr-rate/"
  },
  {
   "id": "blog_android_logcat_filtering_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-logcat-filtering",
   "url": "https://apklint.com/blog/android-logcat-filtering/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_logcat_filtering_list_sections",
   "pageSlug": "blog/android-logcat-filtering",
   "url": "https://apklint.com/blog/android-logcat-filtering/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_logcat_filtering_search_blog",
   "pageSlug": "blog/android-logcat-filtering",
   "url": "https://apklint.com/blog/android-logcat-filtering/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_logcat_filtering_read_article",
   "pageSlug": "blog/android-logcat-filtering",
   "url": "https://apklint.com/blog/android-logcat-filtering/"
  },
  {
   "id": "blog_android_securityexception_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-securityexception",
   "url": "https://apklint.com/blog/android-securityexception/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_securityexception_list_sections",
   "pageSlug": "blog/android-securityexception",
   "url": "https://apklint.com/blog/android-securityexception/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_securityexception_search_blog",
   "pageSlug": "blog/android-securityexception",
   "url": "https://apklint.com/blog/android-securityexception/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_securityexception_read_article",
   "pageSlug": "blog/android-securityexception",
   "url": "https://apklint.com/blog/android-securityexception/"
  },
  {
   "id": "blog_android_activitynotfoundexception_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-activitynotfoundexception",
   "url": "https://apklint.com/blog/android-activitynotfoundexception/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_activitynotfoundexception_list_sections",
   "pageSlug": "blog/android-activitynotfoundexception",
   "url": "https://apklint.com/blog/android-activitynotfoundexception/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_activitynotfoundexception_search_blog",
   "pageSlug": "blog/android-activitynotfoundexception",
   "url": "https://apklint.com/blog/android-activitynotfoundexception/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_activitynotfoundexception_read_article",
   "pageSlug": "blog/android-activitynotfoundexception",
   "url": "https://apklint.com/blog/android-activitynotfoundexception/"
  },
  {
   "id": "blog_network_on_main_thread_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/network-on-main-thread",
   "url": "https://apklint.com/blog/network-on-main-thread/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_network_on_main_thread_list_sections",
   "pageSlug": "blog/network-on-main-thread",
   "url": "https://apklint.com/blog/network-on-main-thread/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_network_on_main_thread_search_blog",
   "pageSlug": "blog/network-on-main-thread",
   "url": "https://apklint.com/blog/network-on-main-thread/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_network_on_main_thread_read_article",
   "pageSlug": "blog/network-on-main-thread",
   "url": "https://apklint.com/blog/network-on-main-thread/"
  },
  {
   "id": "blog_android_classnotfoundexception_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-classnotfoundexception",
   "url": "https://apklint.com/blog/android-classnotfoundexception/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_classnotfoundexception_list_sections",
   "pageSlug": "blog/android-classnotfoundexception",
   "url": "https://apklint.com/blog/android-classnotfoundexception/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_classnotfoundexception_search_blog",
   "pageSlug": "blog/android-classnotfoundexception",
   "url": "https://apklint.com/blog/android-classnotfoundexception/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_classnotfoundexception_read_article",
   "pageSlug": "blog/android-classnotfoundexception",
   "url": "https://apklint.com/blog/android-classnotfoundexception/"
  },
  {
   "id": "blog_android_nosuchmethoderror_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-nosuchmethoderror",
   "url": "https://apklint.com/blog/android-nosuchmethoderror/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_nosuchmethoderror_list_sections",
   "pageSlug": "blog/android-nosuchmethoderror",
   "url": "https://apklint.com/blog/android-nosuchmethoderror/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_nosuchmethoderror_search_blog",
   "pageSlug": "blog/android-nosuchmethoderror",
   "url": "https://apklint.com/blog/android-nosuchmethoderror/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_nosuchmethoderror_read_article",
   "pageSlug": "blog/android-nosuchmethoderror",
   "url": "https://apklint.com/blog/android-nosuchmethoderror/"
  },
  {
   "id": "blog_android_macrobenchmark_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-macrobenchmark",
   "url": "https://apklint.com/blog/android-macrobenchmark/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_macrobenchmark_list_sections",
   "pageSlug": "blog/android-macrobenchmark",
   "url": "https://apklint.com/blog/android-macrobenchmark/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_macrobenchmark_search_blog",
   "pageSlug": "blog/android-macrobenchmark",
   "url": "https://apklint.com/blog/android-macrobenchmark/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_macrobenchmark_read_article",
   "pageSlug": "blog/android-macrobenchmark",
   "url": "https://apklint.com/blog/android-macrobenchmark/"
  },
  {
   "id": "blog_flutter_security_best_practices_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-security-best-practices",
   "url": "https://apklint.com/blog/flutter-security-best-practices/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_security_best_practices_list_sections",
   "pageSlug": "blog/flutter-security-best-practices",
   "url": "https://apklint.com/blog/flutter-security-best-practices/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_security_best_practices_search_blog",
   "pageSlug": "blog/flutter-security-best-practices",
   "url": "https://apklint.com/blog/flutter-security-best-practices/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_security_best_practices_read_article",
   "pageSlug": "blog/flutter-security-best-practices",
   "url": "https://apklint.com/blog/flutter-security-best-practices/"
  },
  {
   "id": "blog_decompile_flutter_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/decompile-flutter-apk",
   "url": "https://apklint.com/blog/decompile-flutter-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_decompile_flutter_apk_list_sections",
   "pageSlug": "blog/decompile-flutter-apk",
   "url": "https://apklint.com/blog/decompile-flutter-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decompile_flutter_apk_search_blog",
   "pageSlug": "blog/decompile-flutter-apk",
   "url": "https://apklint.com/blog/decompile-flutter-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decompile_flutter_apk_read_article",
   "pageSlug": "blog/decompile-flutter-apk",
   "url": "https://apklint.com/blog/decompile-flutter-apk/"
  },
  {
   "id": "blog_flutter_min_sdk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-min-sdk",
   "url": "https://apklint.com/blog/flutter-min-sdk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_min_sdk_list_sections",
   "pageSlug": "blog/flutter-min-sdk",
   "url": "https://apklint.com/blog/flutter-min-sdk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_min_sdk_search_blog",
   "pageSlug": "blog/flutter-min-sdk",
   "url": "https://apklint.com/blog/flutter-min-sdk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_min_sdk_read_article",
   "pageSlug": "blog/flutter-min-sdk",
   "url": "https://apklint.com/blog/flutter-min-sdk/"
  },
  {
   "id": "blog_flutter_play_store_release_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-play-store-release",
   "url": "https://apklint.com/blog/flutter-play-store-release/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_play_store_release_list_sections",
   "pageSlug": "blog/flutter-play-store-release",
   "url": "https://apklint.com/blog/flutter-play-store-release/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_play_store_release_search_blog",
   "pageSlug": "blog/flutter-play-store-release",
   "url": "https://apklint.com/blog/flutter-play-store-release/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_play_store_release_read_article",
   "pageSlug": "blog/flutter-play-store-release",
   "url": "https://apklint.com/blog/flutter-play-store-release/"
  },
  {
   "id": "blog_flutter_vs_native_performance_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-vs-native-performance",
   "url": "https://apklint.com/blog/flutter-vs-native-performance/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_vs_native_performance_list_sections",
   "pageSlug": "blog/flutter-vs-native-performance",
   "url": "https://apklint.com/blog/flutter-vs-native-performance/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_vs_native_performance_search_blog",
   "pageSlug": "blog/flutter-vs-native-performance",
   "url": "https://apklint.com/blog/flutter-vs-native-performance/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_vs_native_performance_read_article",
   "pageSlug": "blog/flutter-vs-native-performance",
   "url": "https://apklint.com/blog/flutter-vs-native-performance/"
  },
  {
   "id": "blog_flutter_apk_size_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-apk-size",
   "url": "https://apklint.com/blog/flutter-apk-size/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_apk_size_list_sections",
   "pageSlug": "blog/flutter-apk-size",
   "url": "https://apklint.com/blog/flutter-apk-size/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_apk_size_search_blog",
   "pageSlug": "blog/flutter-apk-size",
   "url": "https://apklint.com/blog/flutter-apk-size/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_apk_size_read_article",
   "pageSlug": "blog/flutter-apk-size",
   "url": "https://apklint.com/blog/flutter-apk-size/"
  },
  {
   "id": "blog_flutter_dart_obfuscation_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-dart-obfuscation",
   "url": "https://apklint.com/blog/flutter-dart-obfuscation/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_dart_obfuscation_list_sections",
   "pageSlug": "blog/flutter-dart-obfuscation",
   "url": "https://apklint.com/blog/flutter-dart-obfuscation/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_dart_obfuscation_search_blog",
   "pageSlug": "blog/flutter-dart-obfuscation",
   "url": "https://apklint.com/blog/flutter-dart-obfuscation/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_dart_obfuscation_read_article",
   "pageSlug": "blog/flutter-dart-obfuscation",
   "url": "https://apklint.com/blog/flutter-dart-obfuscation/"
  },
  {
   "id": "blog_flutter_build_apk_vs_appbundle_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-build-apk-vs-appbundle",
   "url": "https://apklint.com/blog/flutter-build-apk-vs-appbundle/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_build_apk_vs_appbundle_list_sections",
   "pageSlug": "blog/flutter-build-apk-vs-appbundle",
   "url": "https://apklint.com/blog/flutter-build-apk-vs-appbundle/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_build_apk_vs_appbundle_search_blog",
   "pageSlug": "blog/flutter-build-apk-vs-appbundle",
   "url": "https://apklint.com/blog/flutter-build-apk-vs-appbundle/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_build_apk_vs_appbundle_read_article",
   "pageSlug": "blog/flutter-build-apk-vs-appbundle",
   "url": "https://apklint.com/blog/flutter-build-apk-vs-appbundle/"
  },
  {
   "id": "blog_flutter_android_build_failure_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/flutter-android-build-failure",
   "url": "https://apklint.com/blog/flutter-android-build-failure/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_flutter_android_build_failure_list_sections",
   "pageSlug": "blog/flutter-android-build-failure",
   "url": "https://apklint.com/blog/flutter-android-build-failure/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_android_build_failure_search_blog",
   "pageSlug": "blog/flutter-android-build-failure",
   "url": "https://apklint.com/blog/flutter-android-build-failure/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_flutter_android_build_failure_read_article",
   "pageSlug": "blog/flutter-android-build-failure",
   "url": "https://apklint.com/blog/flutter-android-build-failure/"
  },
  {
   "id": "blog_react_native_build_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-build-apk",
   "url": "https://apklint.com/blog/react-native-build-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_build_apk_list_sections",
   "pageSlug": "blog/react-native-build-apk",
   "url": "https://apklint.com/blog/react-native-build-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_build_apk_search_blog",
   "pageSlug": "blog/react-native-build-apk",
   "url": "https://apklint.com/blog/react-native-build-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_build_apk_read_article",
   "pageSlug": "blog/react-native-build-apk",
   "url": "https://apklint.com/blog/react-native-build-apk/"
  },
  {
   "id": "blog_react_native_assemble_release_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-assemble-release",
   "url": "https://apklint.com/blog/react-native-assemble-release/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_assemble_release_list_sections",
   "pageSlug": "blog/react-native-assemble-release",
   "url": "https://apklint.com/blog/react-native-assemble-release/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_assemble_release_search_blog",
   "pageSlug": "blog/react-native-assemble-release",
   "url": "https://apklint.com/blog/react-native-assemble-release/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_assemble_release_read_article",
   "pageSlug": "blog/react-native-assemble-release",
   "url": "https://apklint.com/blog/react-native-assemble-release/"
  },
  {
   "id": "blog_react_native_expo_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-expo-apk",
   "url": "https://apklint.com/blog/react-native-expo-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_expo_apk_list_sections",
   "pageSlug": "blog/react-native-expo-apk",
   "url": "https://apklint.com/blog/react-native-expo-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_expo_apk_search_blog",
   "pageSlug": "blog/react-native-expo-apk",
   "url": "https://apklint.com/blog/react-native-expo-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_expo_apk_read_article",
   "pageSlug": "blog/react-native-expo-apk",
   "url": "https://apklint.com/blog/react-native-expo-apk/"
  },
  {
   "id": "blog_expo_google_play_submit_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/expo-google-play-submit",
   "url": "https://apklint.com/blog/expo-google-play-submit/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_expo_google_play_submit_list_sections",
   "pageSlug": "blog/expo-google-play-submit",
   "url": "https://apklint.com/blog/expo-google-play-submit/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_expo_google_play_submit_search_blog",
   "pageSlug": "blog/expo-google-play-submit",
   "url": "https://apklint.com/blog/expo-google-play-submit/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_expo_google_play_submit_read_article",
   "pageSlug": "blog/expo-google-play-submit",
   "url": "https://apklint.com/blog/expo-google-play-submit/"
  },
  {
   "id": "blog_react_native_play_store_release_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-play-store-release",
   "url": "https://apklint.com/blog/react-native-play-store-release/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_play_store_release_list_sections",
   "pageSlug": "blog/react-native-play-store-release",
   "url": "https://apklint.com/blog/react-native-play-store-release/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_play_store_release_search_blog",
   "pageSlug": "blog/react-native-play-store-release",
   "url": "https://apklint.com/blog/react-native-play-store-release/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_play_store_release_read_article",
   "pageSlug": "blog/react-native-play-store-release",
   "url": "https://apklint.com/blog/react-native-play-store-release/"
  },
  {
   "id": "blog_react_native_android_widget_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-android-widget",
   "url": "https://apklint.com/blog/react-native-android-widget/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_android_widget_list_sections",
   "pageSlug": "blog/react-native-android-widget",
   "url": "https://apklint.com/blog/react-native-android-widget/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_android_widget_search_blog",
   "pageSlug": "blog/react-native-android-widget",
   "url": "https://apklint.com/blog/react-native-android-widget/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_android_widget_read_article",
   "pageSlug": "blog/react-native-android-widget",
   "url": "https://apklint.com/blog/react-native-android-widget/"
  },
  {
   "id": "blog_react_native_hermes_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-hermes-apk",
   "url": "https://apklint.com/blog/react-native-hermes-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_hermes_apk_list_sections",
   "pageSlug": "blog/react-native-hermes-apk",
   "url": "https://apklint.com/blog/react-native-hermes-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_hermes_apk_search_blog",
   "pageSlug": "blog/react-native-hermes-apk",
   "url": "https://apklint.com/blog/react-native-hermes-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_hermes_apk_read_article",
   "pageSlug": "blog/react-native-hermes-apk",
   "url": "https://apklint.com/blog/react-native-hermes-apk/"
  },
  {
   "id": "blog_react_native_apk_size_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-apk-size",
   "url": "https://apklint.com/blog/react-native-apk-size/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_apk_size_list_sections",
   "pageSlug": "blog/react-native-apk-size",
   "url": "https://apklint.com/blog/react-native-apk-size/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_apk_size_search_blog",
   "pageSlug": "blog/react-native-apk-size",
   "url": "https://apklint.com/blog/react-native-apk-size/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_apk_size_read_article",
   "pageSlug": "blog/react-native-apk-size",
   "url": "https://apklint.com/blog/react-native-apk-size/"
  },
  {
   "id": "blog_react_native_native_module_crash_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/react-native-native-module-crash",
   "url": "https://apklint.com/blog/react-native-native-module-crash/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_react_native_native_module_crash_list_sections",
   "pageSlug": "blog/react-native-native-module-crash",
   "url": "https://apklint.com/blog/react-native-native-module-crash/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_native_module_crash_search_blog",
   "pageSlug": "blog/react-native-native-module-crash",
   "url": "https://apklint.com/blog/react-native-native-module-crash/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_react_native_native_module_crash_read_article",
   "pageSlug": "blog/react-native-native-module-crash",
   "url": "https://apklint.com/blog/react-native-native-module-crash/"
  },
  {
   "id": "blog_expo_android_credentials_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/expo-android-credentials",
   "url": "https://apklint.com/blog/expo-android-credentials/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_expo_android_credentials_list_sections",
   "pageSlug": "blog/expo-android-credentials",
   "url": "https://apklint.com/blog/expo-android-credentials/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_expo_android_credentials_search_blog",
   "pageSlug": "blog/expo-android-credentials",
   "url": "https://apklint.com/blog/expo-android-credentials/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_expo_android_credentials_read_article",
   "pageSlug": "blog/expo-android-credentials",
   "url": "https://apklint.com/blog/expo-android-credentials/"
  },
  {
   "id": "blog_unity_build_android_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-build-android-apk",
   "url": "https://apklint.com/blog/unity-build-android-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_build_android_apk_list_sections",
   "pageSlug": "blog/unity-build-android-apk",
   "url": "https://apklint.com/blog/unity-build-android-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_build_android_apk_search_blog",
   "pageSlug": "blog/unity-build-android-apk",
   "url": "https://apklint.com/blog/unity-build-android-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_build_android_apk_read_article",
   "pageSlug": "blog/unity-build-android-apk",
   "url": "https://apklint.com/blog/unity-build-android-apk/"
  },
  {
   "id": "blog_unity_gradle_build_failed_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-gradle-build-failed",
   "url": "https://apklint.com/blog/unity-gradle-build-failed/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_gradle_build_failed_list_sections",
   "pageSlug": "blog/unity-gradle-build-failed",
   "url": "https://apklint.com/blog/unity-gradle-build-failed/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_gradle_build_failed_search_blog",
   "pageSlug": "blog/unity-gradle-build-failed",
   "url": "https://apklint.com/blog/unity-gradle-build-failed/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_gradle_build_failed_read_article",
   "pageSlug": "blog/unity-gradle-build-failed",
   "url": "https://apklint.com/blog/unity-gradle-build-failed/"
  },
  {
   "id": "blog_decompile_unity_apk_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/decompile-unity-apk",
   "url": "https://apklint.com/blog/decompile-unity-apk/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_decompile_unity_apk_list_sections",
   "pageSlug": "blog/decompile-unity-apk",
   "url": "https://apklint.com/blog/decompile-unity-apk/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decompile_unity_apk_search_blog",
   "pageSlug": "blog/decompile-unity-apk",
   "url": "https://apklint.com/blog/decompile-unity-apk/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_decompile_unity_apk_read_article",
   "pageSlug": "blog/decompile-unity-apk",
   "url": "https://apklint.com/blog/decompile-unity-apk/"
  },
  {
   "id": "blog_apk_to_unity_project_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/apk-to-unity-project",
   "url": "https://apklint.com/blog/apk-to-unity-project/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_apk_to_unity_project_list_sections",
   "pageSlug": "blog/apk-to-unity-project",
   "url": "https://apklint.com/blog/apk-to-unity-project/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_to_unity_project_search_blog",
   "pageSlug": "blog/apk-to-unity-project",
   "url": "https://apklint.com/blog/apk-to-unity-project/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_apk_to_unity_project_read_article",
   "pageSlug": "blog/apk-to-unity-project",
   "url": "https://apklint.com/blog/apk-to-unity-project/"
  },
  {
   "id": "blog_unity_apk_size_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-apk-size",
   "url": "https://apklint.com/blog/unity-apk-size/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_apk_size_list_sections",
   "pageSlug": "blog/unity-apk-size",
   "url": "https://apklint.com/blog/unity-apk-size/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_apk_size_search_blog",
   "pageSlug": "blog/unity-apk-size",
   "url": "https://apklint.com/blog/unity-apk-size/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_apk_size_read_article",
   "pageSlug": "blog/unity-apk-size",
   "url": "https://apklint.com/blog/unity-apk-size/"
  },
  {
   "id": "blog_unity_il2cpp_vs_mono_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-il2cpp-vs-mono",
   "url": "https://apklint.com/blog/unity-il2cpp-vs-mono/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_il2cpp_vs_mono_list_sections",
   "pageSlug": "blog/unity-il2cpp-vs-mono",
   "url": "https://apklint.com/blog/unity-il2cpp-vs-mono/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_il2cpp_vs_mono_search_blog",
   "pageSlug": "blog/unity-il2cpp-vs-mono",
   "url": "https://apklint.com/blog/unity-il2cpp-vs-mono/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_il2cpp_vs_mono_read_article",
   "pageSlug": "blog/unity-il2cpp-vs-mono",
   "url": "https://apklint.com/blog/unity-il2cpp-vs-mono/"
  },
  {
   "id": "blog_unity_managed_stripping_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-managed-stripping",
   "url": "https://apklint.com/blog/unity-managed-stripping/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_managed_stripping_list_sections",
   "pageSlug": "blog/unity-managed-stripping",
   "url": "https://apklint.com/blog/unity-managed-stripping/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_managed_stripping_search_blog",
   "pageSlug": "blog/unity-managed-stripping",
   "url": "https://apklint.com/blog/unity-managed-stripping/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_managed_stripping_read_article",
   "pageSlug": "blog/unity-managed-stripping",
   "url": "https://apklint.com/blog/unity-managed-stripping/"
  },
  {
   "id": "blog_unity_play_asset_delivery_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-play-asset-delivery",
   "url": "https://apklint.com/blog/unity-play-asset-delivery/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_play_asset_delivery_list_sections",
   "pageSlug": "blog/unity-play-asset-delivery",
   "url": "https://apklint.com/blog/unity-play-asset-delivery/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_play_asset_delivery_search_blog",
   "pageSlug": "blog/unity-play-asset-delivery",
   "url": "https://apklint.com/blog/unity-play-asset-delivery/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_play_asset_delivery_read_article",
   "pageSlug": "blog/unity-play-asset-delivery",
   "url": "https://apklint.com/blog/unity-play-asset-delivery/"
  },
  {
   "id": "blog_unity_android_16kb_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-android-16kb",
   "url": "https://apklint.com/blog/unity-android-16kb/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_android_16kb_list_sections",
   "pageSlug": "blog/unity-android-16kb",
   "url": "https://apklint.com/blog/unity-android-16kb/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_android_16kb_search_blog",
   "pageSlug": "blog/unity-android-16kb",
   "url": "https://apklint.com/blog/unity-android-16kb/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_android_16kb_read_article",
   "pageSlug": "blog/unity-android-16kb",
   "url": "https://apklint.com/blog/unity-android-16kb/"
  },
  {
   "id": "blog_unity_release_crash_symbols_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/unity-release-crash-symbols",
   "url": "https://apklint.com/blog/unity-release-crash-symbols/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_unity_release_crash_symbols_list_sections",
   "pageSlug": "blog/unity-release-crash-symbols",
   "url": "https://apklint.com/blog/unity-release-crash-symbols/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_release_crash_symbols_search_blog",
   "pageSlug": "blog/unity-release-crash-symbols",
   "url": "https://apklint.com/blog/unity-release-crash-symbols/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_unity_release_crash_symbols_read_article",
   "pageSlug": "blog/unity-release-crash-symbols",
   "url": "https://apklint.com/blog/unity-release-crash-symbols/"
  },
  {
   "id": "blog_compile_sdk_version_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/compile-sdk-version",
   "url": "https://apklint.com/blog/compile-sdk-version/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_compile_sdk_version_list_sections",
   "pageSlug": "blog/compile-sdk-version",
   "url": "https://apklint.com/blog/compile-sdk-version/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_compile_sdk_version_search_blog",
   "pageSlug": "blog/compile-sdk-version",
   "url": "https://apklint.com/blog/compile-sdk-version/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_compile_sdk_version_read_article",
   "pageSlug": "blog/compile-sdk-version",
   "url": "https://apklint.com/blog/compile-sdk-version/"
  },
  {
   "id": "blog_play_target_api_requirements_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-target-api-requirements",
   "url": "https://apklint.com/blog/play-target-api-requirements/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_target_api_requirements_list_sections",
   "pageSlug": "blog/play-target-api-requirements",
   "url": "https://apklint.com/blog/play-target-api-requirements/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_target_api_requirements_search_blog",
   "pageSlug": "blog/play-target-api-requirements",
   "url": "https://apklint.com/blog/play-target-api-requirements/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_target_api_requirements_read_article",
   "pageSlug": "blog/play-target-api-requirements",
   "url": "https://apklint.com/blog/play-target-api-requirements/"
  },
  {
   "id": "blog_min_sdk_google_play_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/min-sdk-google-play",
   "url": "https://apklint.com/blog/min-sdk-google-play/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_min_sdk_google_play_list_sections",
   "pageSlug": "blog/min-sdk-google-play",
   "url": "https://apklint.com/blog/min-sdk-google-play/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_min_sdk_google_play_search_blog",
   "pageSlug": "blog/min-sdk-google-play",
   "url": "https://apklint.com/blog/min-sdk-google-play/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_min_sdk_google_play_read_article",
   "pageSlug": "blog/min-sdk-google-play",
   "url": "https://apklint.com/blog/min-sdk-google-play/"
  },
  {
   "id": "blog_target_sdk_behavior_changes_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/target-sdk-behavior-changes",
   "url": "https://apklint.com/blog/target-sdk-behavior-changes/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_target_sdk_behavior_changes_list_sections",
   "pageSlug": "blog/target-sdk-behavior-changes",
   "url": "https://apklint.com/blog/target-sdk-behavior-changes/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_target_sdk_behavior_changes_search_blog",
   "pageSlug": "blog/target-sdk-behavior-changes",
   "url": "https://apklint.com/blog/target-sdk-behavior-changes/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_target_sdk_behavior_changes_read_article",
   "pageSlug": "blog/target-sdk-behavior-changes",
   "url": "https://apklint.com/blog/target-sdk-behavior-changes/"
  },
  {
   "id": "blog_phone_not_compatible_app_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/phone-not-compatible-app",
   "url": "https://apklint.com/blog/phone-not-compatible-app/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_phone_not_compatible_app_list_sections",
   "pageSlug": "blog/phone-not-compatible-app",
   "url": "https://apklint.com/blog/phone-not-compatible-app/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_phone_not_compatible_app_search_blog",
   "pageSlug": "blog/phone-not-compatible-app",
   "url": "https://apklint.com/blog/phone-not-compatible-app/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_phone_not_compatible_app_read_article",
   "pageSlug": "blog/phone-not-compatible-app",
   "url": "https://apklint.com/blog/phone-not-compatible-app/"
  },
  {
   "id": "blog_android_app_compatibility_testing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-app-compatibility-testing",
   "url": "https://apklint.com/blog/android-app-compatibility-testing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_app_compatibility_testing_list_sections",
   "pageSlug": "blog/android-app-compatibility-testing",
   "url": "https://apklint.com/blog/android-app-compatibility-testing/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_compatibility_testing_search_blog",
   "pageSlug": "blog/android-app-compatibility-testing",
   "url": "https://apklint.com/blog/android-app-compatibility-testing/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_compatibility_testing_read_article",
   "pageSlug": "blog/android-app-compatibility-testing",
   "url": "https://apklint.com/blog/android-app-compatibility-testing/"
  },
  {
   "id": "blog_play_data_safety_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-data-safety",
   "url": "https://apklint.com/blog/play-data-safety/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_data_safety_list_sections",
   "pageSlug": "blog/play-data-safety",
   "url": "https://apklint.com/blog/play-data-safety/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_data_safety_search_blog",
   "pageSlug": "blog/play-data-safety",
   "url": "https://apklint.com/blog/play-data-safety/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_data_safety_read_article",
   "pageSlug": "blog/play-data-safety",
   "url": "https://apklint.com/blog/play-data-safety/"
  },
  {
   "id": "blog_play_privacy_policy_url_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-privacy-policy-url",
   "url": "https://apklint.com/blog/play-privacy-policy-url/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_privacy_policy_url_list_sections",
   "pageSlug": "blog/play-privacy-policy-url",
   "url": "https://apklint.com/blog/play-privacy-policy-url/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_privacy_policy_url_search_blog",
   "pageSlug": "blog/play-privacy-policy-url",
   "url": "https://apklint.com/blog/play-privacy-policy-url/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_privacy_policy_url_read_article",
   "pageSlug": "blog/play-privacy-policy-url",
   "url": "https://apklint.com/blog/play-privacy-policy-url/"
  },
  {
   "id": "blog_play_developer_identity_verification_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-developer-identity-verification",
   "url": "https://apklint.com/blog/play-developer-identity-verification/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_developer_identity_verification_list_sections",
   "pageSlug": "blog/play-developer-identity-verification",
   "url": "https://apklint.com/blog/play-developer-identity-verification/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_developer_identity_verification_search_blog",
   "pageSlug": "blog/play-developer-identity-verification",
   "url": "https://apklint.com/blog/play-developer-identity-verification/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_developer_identity_verification_read_article",
   "pageSlug": "blog/play-developer-identity-verification",
   "url": "https://apklint.com/blog/play-developer-identity-verification/"
  },
  {
   "id": "blog_android_developer_verification_2026_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-developer-verification-2026",
   "url": "https://apklint.com/blog/android-developer-verification-2026/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_developer_verification_2026_list_sections",
   "pageSlug": "blog/android-developer-verification-2026",
   "url": "https://apklint.com/blog/android-developer-verification-2026/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_developer_verification_2026_search_blog",
   "pageSlug": "blog/android-developer-verification-2026",
   "url": "https://apklint.com/blog/android-developer-verification-2026/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_developer_verification_2026_read_article",
   "pageSlug": "blog/android-developer-verification-2026",
   "url": "https://apklint.com/blog/android-developer-verification-2026/"
  },
  {
   "id": "blog_play_screenshot_requirements_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-screenshot-requirements",
   "url": "https://apklint.com/blog/play-screenshot-requirements/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_screenshot_requirements_list_sections",
   "pageSlug": "blog/play-screenshot-requirements",
   "url": "https://apklint.com/blog/play-screenshot-requirements/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_screenshot_requirements_search_blog",
   "pageSlug": "blog/play-screenshot-requirements",
   "url": "https://apklint.com/blog/play-screenshot-requirements/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_screenshot_requirements_read_article",
   "pageSlug": "blog/play-screenshot-requirements",
   "url": "https://apklint.com/blog/play-screenshot-requirements/"
  },
  {
   "id": "blog_play_age_content_ratings_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-age-content-ratings",
   "url": "https://apklint.com/blog/play-age-content-ratings/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_age_content_ratings_list_sections",
   "pageSlug": "blog/play-age-content-ratings",
   "url": "https://apklint.com/blog/play-age-content-ratings/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_age_content_ratings_search_blog",
   "pageSlug": "blog/play-age-content-ratings",
   "url": "https://apklint.com/blog/play-age-content-ratings/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_age_content_ratings_read_article",
   "pageSlug": "blog/play-age-content-ratings",
   "url": "https://apklint.com/blog/play-age-content-ratings/"
  },
  {
   "id": "blog_play_account_suspended_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-account-suspended",
   "url": "https://apklint.com/blog/play-account-suspended/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_account_suspended_list_sections",
   "pageSlug": "blog/play-account-suspended",
   "url": "https://apklint.com/blog/play-account-suspended/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_account_suspended_search_blog",
   "pageSlug": "blog/play-account-suspended",
   "url": "https://apklint.com/blog/play-account-suspended/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_account_suspended_read_article",
   "pageSlug": "blog/play-account-suspended",
   "url": "https://apklint.com/blog/play-account-suspended/"
  },
  {
   "id": "blog_remove_app_play_console_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/remove-app-play-console",
   "url": "https://apklint.com/blog/remove-app-play-console/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_remove_app_play_console_list_sections",
   "pageSlug": "blog/remove-app-play-console",
   "url": "https://apklint.com/blog/remove-app-play-console/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_remove_app_play_console_search_blog",
   "pageSlug": "blog/remove-app-play-console",
   "url": "https://apklint.com/blog/remove-app-play-console/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_remove_app_play_console_read_article",
   "pageSlug": "blog/remove-app-play-console",
   "url": "https://apklint.com/blog/remove-app-play-console/"
  },
  {
   "id": "blog_delete_app_bundle_play_console_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/delete-app-bundle-play-console",
   "url": "https://apklint.com/blog/delete-app-bundle-play-console/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_delete_app_bundle_play_console_list_sections",
   "pageSlug": "blog/delete-app-bundle-play-console",
   "url": "https://apklint.com/blog/delete-app-bundle-play-console/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_delete_app_bundle_play_console_search_blog",
   "pageSlug": "blog/delete-app-bundle-play-console",
   "url": "https://apklint.com/blog/delete-app-bundle-play-console/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_delete_app_bundle_play_console_read_article",
   "pageSlug": "blog/delete-app-bundle-play-console",
   "url": "https://apklint.com/blog/delete-app-bundle-play-console/"
  },
  {
   "id": "blog_play_developer_policies_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-developer-policies",
   "url": "https://apklint.com/blog/play-developer-policies/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_developer_policies_list_sections",
   "pageSlug": "blog/play-developer-policies",
   "url": "https://apklint.com/blog/play-developer-policies/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_developer_policies_search_blog",
   "pageSlug": "blog/play-developer-policies",
   "url": "https://apklint.com/blog/play-developer-policies/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_developer_policies_read_article",
   "pageSlug": "blog/play-developer-policies",
   "url": "https://apklint.com/blog/play-developer-policies/"
  },
  {
   "id": "blog_play_policy_violation_response_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-policy-violation-response",
   "url": "https://apklint.com/blog/play-policy-violation-response/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_policy_violation_response_list_sections",
   "pageSlug": "blog/play-policy-violation-response",
   "url": "https://apklint.com/blog/play-policy-violation-response/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_policy_violation_response_search_blog",
   "pageSlug": "blog/play-policy-violation-response",
   "url": "https://apklint.com/blog/play-policy-violation-response/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_policy_violation_response_read_article",
   "pageSlug": "blog/play-policy-violation-response",
   "url": "https://apklint.com/blog/play-policy-violation-response/"
  },
  {
   "id": "blog_play_policy_status_workflow_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-policy-status-workflow",
   "url": "https://apklint.com/blog/play-policy-status-workflow/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_policy_status_workflow_list_sections",
   "pageSlug": "blog/play-policy-status-workflow",
   "url": "https://apklint.com/blog/play-policy-status-workflow/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_policy_status_workflow_search_blog",
   "pageSlug": "blog/play-policy-status-workflow",
   "url": "https://apklint.com/blog/play-policy-status-workflow/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_policy_status_workflow_read_article",
   "pageSlug": "blog/play-policy-status-workflow",
   "url": "https://apklint.com/blog/play-policy-status-workflow/"
  },
  {
   "id": "blog_android_app_launch_checklist_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-app-launch-checklist",
   "url": "https://apklint.com/blog/android-app-launch-checklist/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_app_launch_checklist_list_sections",
   "pageSlug": "blog/android-app-launch-checklist",
   "url": "https://apklint.com/blog/android-app-launch-checklist/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_launch_checklist_search_blog",
   "pageSlug": "blog/android-app-launch-checklist",
   "url": "https://apklint.com/blog/android-app-launch-checklist/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_app_launch_checklist_read_article",
   "pageSlug": "blog/android-app-launch-checklist",
   "url": "https://apklint.com/blog/android-app-launch-checklist/"
  },
  {
   "id": "blog_play_store_submission_requirements_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-store-submission-requirements",
   "url": "https://apklint.com/blog/play-store-submission-requirements/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_store_submission_requirements_list_sections",
   "pageSlug": "blog/play-store-submission-requirements",
   "url": "https://apklint.com/blog/play-store-submission-requirements/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_store_submission_requirements_search_blog",
   "pageSlug": "blog/play-store-submission-requirements",
   "url": "https://apklint.com/blog/play-store-submission-requirements/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_store_submission_requirements_read_article",
   "pageSlug": "blog/play-store-submission-requirements",
   "url": "https://apklint.com/blog/play-store-submission-requirements/"
  },
  {
   "id": "blog_submit_android_app_play_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/submit-android-app-play",
   "url": "https://apklint.com/blog/submit-android-app-play/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_submit_android_app_play_list_sections",
   "pageSlug": "blog/submit-android-app-play",
   "url": "https://apklint.com/blog/submit-android-app-play/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_submit_android_app_play_search_blog",
   "pageSlug": "blog/submit-android-app-play",
   "url": "https://apklint.com/blog/submit-android-app-play/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_submit_android_app_play_read_article",
   "pageSlug": "blog/submit-android-app-play",
   "url": "https://apklint.com/blog/submit-android-app-play/"
  },
  {
   "id": "blog_play_closed_testing_requirements_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-closed-testing-requirements",
   "url": "https://apklint.com/blog/play-closed-testing-requirements/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_closed_testing_requirements_list_sections",
   "pageSlug": "blog/play-closed-testing-requirements",
   "url": "https://apklint.com/blog/play-closed-testing-requirements/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_closed_testing_requirements_search_blog",
   "pageSlug": "blog/play-closed-testing-requirements",
   "url": "https://apklint.com/blog/play-closed-testing-requirements/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_closed_testing_requirements_read_article",
   "pageSlug": "blog/play-closed-testing-requirements",
   "url": "https://apklint.com/blog/play-closed-testing-requirements/"
  },
  {
   "id": "blog_play_data_safety_sdk_disclosures_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-data-safety-sdk-disclosures",
   "url": "https://apklint.com/blog/play-data-safety-sdk-disclosures/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_data_safety_sdk_disclosures_list_sections",
   "pageSlug": "blog/play-data-safety-sdk-disclosures",
   "url": "https://apklint.com/blog/play-data-safety-sdk-disclosures/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_data_safety_sdk_disclosures_search_blog",
   "pageSlug": "blog/play-data-safety-sdk-disclosures",
   "url": "https://apklint.com/blog/play-data-safety-sdk-disclosures/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_data_safety_sdk_disclosures_read_article",
   "pageSlug": "blog/play-data-safety-sdk-disclosures",
   "url": "https://apklint.com/blog/play-data-safety-sdk-disclosures/"
  },
  {
   "id": "blog_play_account_deletion_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-account-deletion",
   "url": "https://apklint.com/blog/play-account-deletion/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_account_deletion_list_sections",
   "pageSlug": "blog/play-account-deletion",
   "url": "https://apklint.com/blog/play-account-deletion/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_account_deletion_search_blog",
   "pageSlug": "blog/play-account-deletion",
   "url": "https://apklint.com/blog/play-account-deletion/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_account_deletion_read_article",
   "pageSlug": "blog/play-account-deletion",
   "url": "https://apklint.com/blog/play-account-deletion/"
  },
  {
   "id": "blog_play_families_policy_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-families-policy",
   "url": "https://apklint.com/blog/play-families-policy/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_families_policy_list_sections",
   "pageSlug": "blog/play-families-policy",
   "url": "https://apklint.com/blog/play-families-policy/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_families_policy_search_blog",
   "pageSlug": "blog/play-families-policy",
   "url": "https://apklint.com/blog/play-families-policy/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_families_policy_read_article",
   "pageSlug": "blog/play-families-policy",
   "url": "https://apklint.com/blog/play-families-policy/"
  },
  {
   "id": "blog_play_sensitive_permission_declaration_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-sensitive-permission-declaration",
   "url": "https://apklint.com/blog/play-sensitive-permission-declaration/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_sensitive_permission_declaration_list_sections",
   "pageSlug": "blog/play-sensitive-permission-declaration",
   "url": "https://apklint.com/blog/play-sensitive-permission-declaration/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_sensitive_permission_declaration_search_blog",
   "pageSlug": "blog/play-sensitive-permission-declaration",
   "url": "https://apklint.com/blog/play-sensitive-permission-declaration/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_sensitive_permission_declaration_read_article",
   "pageSlug": "blog/play-sensitive-permission-declaration",
   "url": "https://apklint.com/blog/play-sensitive-permission-declaration/"
  },
  {
   "id": "blog_play_staged_rollout_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-staged-rollout",
   "url": "https://apklint.com/blog/play-staged-rollout/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_staged_rollout_list_sections",
   "pageSlug": "blog/play-staged-rollout",
   "url": "https://apklint.com/blog/play-staged-rollout/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_staged_rollout_search_blog",
   "pageSlug": "blog/play-staged-rollout",
   "url": "https://apklint.com/blog/play-staged-rollout/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_staged_rollout_read_article",
   "pageSlug": "blog/play-staged-rollout",
   "url": "https://apklint.com/blog/play-staged-rollout/"
  },
  {
   "id": "blog_play_review_app_access_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-review-app-access",
   "url": "https://apklint.com/blog/play-review-app-access/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_review_app_access_list_sections",
   "pageSlug": "blog/play-review-app-access",
   "url": "https://apklint.com/blog/play-review-app-access/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_review_app_access_search_blog",
   "pageSlug": "blog/play-review-app-access",
   "url": "https://apklint.com/blog/play-review-app-access/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_review_app_access_read_article",
   "pageSlug": "blog/play-review-app-access",
   "url": "https://apklint.com/blog/play-review-app-access/"
  },
  {
   "id": "blog_ad_id_manifest_permission_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/ad-id-manifest-permission",
   "url": "https://apklint.com/blog/ad-id-manifest-permission/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_ad_id_manifest_permission_list_sections",
   "pageSlug": "blog/ad-id-manifest-permission",
   "url": "https://apklint.com/blog/ad-id-manifest-permission/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_ad_id_manifest_permission_search_blog",
   "pageSlug": "blog/ad-id-manifest-permission",
   "url": "https://apklint.com/blog/ad-id-manifest-permission/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_ad_id_manifest_permission_read_article",
   "pageSlug": "blog/ad-id-manifest-permission",
   "url": "https://apklint.com/blog/ad-id-manifest-permission/"
  },
  {
   "id": "blog_android_advertising_id_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-advertising-id",
   "url": "https://apklint.com/blog/android-advertising-id/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_advertising_id_list_sections",
   "pageSlug": "blog/android-advertising-id",
   "url": "https://apklint.com/blog/android-advertising-id/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_advertising_id_search_blog",
   "pageSlug": "blog/android-advertising-id",
   "url": "https://apklint.com/blog/android-advertising-id/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_advertising_id_read_article",
   "pageSlug": "blog/android-advertising-id",
   "url": "https://apklint.com/blog/android-advertising-id/"
  },
  {
   "id": "blog_admob_android_integration_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/admob-android-integration",
   "url": "https://apklint.com/blog/admob-android-integration/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_admob_android_integration_list_sections",
   "pageSlug": "blog/admob-android-integration",
   "url": "https://apklint.com/blog/admob-android-integration/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_android_integration_search_blog",
   "pageSlug": "blog/admob-android-integration",
   "url": "https://apklint.com/blog/admob-android-integration/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_android_integration_read_article",
   "pageSlug": "blog/admob-android-integration",
   "url": "https://apklint.com/blog/admob-android-integration/"
  },
  {
   "id": "blog_admob_test_app_id_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/admob-test-app-id",
   "url": "https://apklint.com/blog/admob-test-app-id/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_admob_test_app_id_list_sections",
   "pageSlug": "blog/admob-test-app-id",
   "url": "https://apklint.com/blog/admob-test-app-id/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_test_app_id_search_blog",
   "pageSlug": "blog/admob-test-app-id",
   "url": "https://apklint.com/blog/admob-test-app-id/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_test_app_id_read_article",
   "pageSlug": "blog/admob-test-app-id",
   "url": "https://apklint.com/blog/admob-test-app-id/"
  },
  {
   "id": "blog_admob_test_banner_id_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/admob-test-banner-id",
   "url": "https://apklint.com/blog/admob-test-banner-id/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_admob_test_banner_id_list_sections",
   "pageSlug": "blog/admob-test-banner-id",
   "url": "https://apklint.com/blog/admob-test-banner-id/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_test_banner_id_search_blog",
   "pageSlug": "blog/admob-test-banner-id",
   "url": "https://apklint.com/blog/admob-test-banner-id/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_test_banner_id_read_article",
   "pageSlug": "blog/admob-test-banner-id",
   "url": "https://apklint.com/blog/admob-test-banner-id/"
  },
  {
   "id": "blog_admob_mediation_android_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/admob-mediation-android",
   "url": "https://apklint.com/blog/admob-mediation-android/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_admob_mediation_android_list_sections",
   "pageSlug": "blog/admob-mediation-android",
   "url": "https://apklint.com/blog/admob-mediation-android/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_mediation_android_search_blog",
   "pageSlug": "blog/admob-mediation-android",
   "url": "https://apklint.com/blog/admob-mediation-android/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_mediation_android_read_article",
   "pageSlug": "blog/admob-mediation-android",
   "url": "https://apklint.com/blog/admob-mediation-android/"
  },
  {
   "id": "blog_google_mobile_ads_unity_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/google-mobile-ads-unity",
   "url": "https://apklint.com/blog/google-mobile-ads-unity/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_google_mobile_ads_unity_list_sections",
   "pageSlug": "blog/google-mobile-ads-unity",
   "url": "https://apklint.com/blog/google-mobile-ads-unity/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_google_mobile_ads_unity_search_blog",
   "pageSlug": "blog/google-mobile-ads-unity",
   "url": "https://apklint.com/blog/google-mobile-ads-unity/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_google_mobile_ads_unity_read_article",
   "pageSlug": "blog/google-mobile-ads-unity",
   "url": "https://apklint.com/blog/google-mobile-ads-unity/"
  },
  {
   "id": "blog_mobile_ads_sdk_audit_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/mobile-ads-sdk-audit",
   "url": "https://apklint.com/blog/mobile-ads-sdk-audit/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_mobile_ads_sdk_audit_list_sections",
   "pageSlug": "blog/mobile-ads-sdk-audit",
   "url": "https://apklint.com/blog/mobile-ads-sdk-audit/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_ads_sdk_audit_search_blog",
   "pageSlug": "blog/mobile-ads-sdk-audit",
   "url": "https://apklint.com/blog/mobile-ads-sdk-audit/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_mobile_ads_sdk_audit_read_article",
   "pageSlug": "blog/mobile-ads-sdk-audit",
   "url": "https://apklint.com/blog/mobile-ads-sdk-audit/"
  },
  {
   "id": "blog_admob_ump_consent_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/admob-ump-consent",
   "url": "https://apklint.com/blog/admob-ump-consent/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_admob_ump_consent_list_sections",
   "pageSlug": "blog/admob-ump-consent",
   "url": "https://apklint.com/blog/admob-ump-consent/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_ump_consent_search_blog",
   "pageSlug": "blog/admob-ump-consent",
   "url": "https://apklint.com/blog/admob-ump-consent/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_ump_consent_read_article",
   "pageSlug": "blog/admob-ump-consent",
   "url": "https://apklint.com/blog/admob-ump-consent/"
  },
  {
   "id": "blog_admob_data_safety_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/admob-data-safety",
   "url": "https://apklint.com/blog/admob-data-safety/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_admob_data_safety_list_sections",
   "pageSlug": "blog/admob-data-safety",
   "url": "https://apklint.com/blog/admob-data-safety/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_data_safety_search_blog",
   "pageSlug": "blog/admob-data-safety",
   "url": "https://apklint.com/blog/admob-data-safety/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_data_safety_read_article",
   "pageSlug": "blog/admob-data-safety",
   "url": "https://apklint.com/blog/admob-data-safety/"
  },
  {
   "id": "blog_admob_ad_inspector_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/admob-ad-inspector",
   "url": "https://apklint.com/blog/admob-ad-inspector/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_admob_ad_inspector_list_sections",
   "pageSlug": "blog/admob-ad-inspector",
   "url": "https://apklint.com/blog/admob-ad-inspector/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_ad_inspector_search_blog",
   "pageSlug": "blog/admob-ad-inspector",
   "url": "https://apklint.com/blog/admob-ad-inspector/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_admob_ad_inspector_read_article",
   "pageSlug": "blog/admob-ad-inspector",
   "url": "https://apklint.com/blog/admob-ad-inspector/"
  },
  {
   "id": "blog_google_play_store_optimization_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/google-play-store-optimization",
   "url": "https://apklint.com/blog/google-play-store-optimization/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_google_play_store_optimization_list_sections",
   "pageSlug": "blog/google-play-store-optimization",
   "url": "https://apklint.com/blog/google-play-store-optimization/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_google_play_store_optimization_search_blog",
   "pageSlug": "blog/google-play-store-optimization",
   "url": "https://apklint.com/blog/google-play-store-optimization/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_google_play_store_optimization_read_article",
   "pageSlug": "blog/google-play-store-optimization",
   "url": "https://apklint.com/blog/google-play-store-optimization/"
  },
  {
   "id": "blog_play_title_short_description_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-title-short-description",
   "url": "https://apklint.com/blog/play-title-short-description/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_title_short_description_list_sections",
   "pageSlug": "blog/play-title-short-description",
   "url": "https://apklint.com/blog/play-title-short-description/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_title_short_description_search_blog",
   "pageSlug": "blog/play-title-short-description",
   "url": "https://apklint.com/blog/play-title-short-description/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_title_short_description_read_article",
   "pageSlug": "blog/play-title-short-description",
   "url": "https://apklint.com/blog/play-title-short-description/"
  },
  {
   "id": "blog_play_keyword_research_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-keyword-research",
   "url": "https://apklint.com/blog/play-keyword-research/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_keyword_research_list_sections",
   "pageSlug": "blog/play-keyword-research",
   "url": "https://apklint.com/blog/play-keyword-research/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_keyword_research_search_blog",
   "pageSlug": "blog/play-keyword-research",
   "url": "https://apklint.com/blog/play-keyword-research/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_keyword_research_read_article",
   "pageSlug": "blog/play-keyword-research",
   "url": "https://apklint.com/blog/play-keyword-research/"
  },
  {
   "id": "blog_play_listing_experiments_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/play-listing-experiments",
   "url": "https://apklint.com/blog/play-listing-experiments/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_play_listing_experiments_list_sections",
   "pageSlug": "blog/play-listing-experiments",
   "url": "https://apklint.com/blog/play-listing-experiments/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_listing_experiments_search_blog",
   "pageSlug": "blog/play-listing-experiments",
   "url": "https://apklint.com/blog/play-listing-experiments/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_play_listing_experiments_read_article",
   "pageSlug": "blog/play-listing-experiments",
   "url": "https://apklint.com/blog/play-listing-experiments/"
  },
  {
   "id": "blog_android_accessibility_tools_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-accessibility-tools",
   "url": "https://apklint.com/blog/android-accessibility-tools/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_accessibility_tools_list_sections",
   "pageSlug": "blog/android-accessibility-tools",
   "url": "https://apklint.com/blog/android-accessibility-tools/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_accessibility_tools_search_blog",
   "pageSlug": "blog/android-accessibility-tools",
   "url": "https://apklint.com/blog/android-accessibility-tools/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_accessibility_tools_read_article",
   "pageSlug": "blog/android-accessibility-tools",
   "url": "https://apklint.com/blog/android-accessibility-tools/"
  },
  {
   "id": "blog_android_accessibility_testing_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-accessibility-testing",
   "url": "https://apklint.com/blog/android-accessibility-testing/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_accessibility_testing_list_sections",
   "pageSlug": "blog/android-accessibility-testing",
   "url": "https://apklint.com/blog/android-accessibility-testing/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_accessibility_testing_search_blog",
   "pageSlug": "blog/android-accessibility-testing",
   "url": "https://apklint.com/blog/android-accessibility-testing/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_accessibility_testing_read_article",
   "pageSlug": "blog/android-accessibility-testing",
   "url": "https://apklint.com/blog/android-accessibility-testing/"
  },
  {
   "id": "blog_android_touch_target_contrast_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/android-touch-target-contrast",
   "url": "https://apklint.com/blog/android-touch-target-contrast/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_android_touch_target_contrast_list_sections",
   "pageSlug": "blog/android-touch-target-contrast",
   "url": "https://apklint.com/blog/android-touch-target-contrast/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_touch_target_contrast_search_blog",
   "pageSlug": "blog/android-touch-target-contrast",
   "url": "https://apklint.com/blog/android-touch-target-contrast/"
  },
  {
   "name": "read_article",
   "title": "Read the current APKLint guide",
   "description": "Return public article text and its headings from the current page. Does not inspect file inputs, analyzer results, cookie choices, hidden fields or personal data.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_android_touch_target_contrast_read_article",
   "pageSlug": "blog/android-touch-target-contrast",
   "url": "https://apklint.com/blog/android-touch-target-contrast/"
  },
  {
   "id": "blog_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog",
   "url": "https://apklint.com/blog/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_list_sections",
   "pageSlug": "blog",
   "url": "https://apklint.com/blog/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_search_blog",
   "pageSlug": "blog",
   "url": "https://apklint.com/blog/"
  },
  {
   "id": "blog_page_2_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/2",
   "url": "https://apklint.com/blog/page/2/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_2_list_sections",
   "pageSlug": "blog/page/2",
   "url": "https://apklint.com/blog/page/2/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_2_search_blog",
   "pageSlug": "blog/page/2",
   "url": "https://apklint.com/blog/page/2/"
  },
  {
   "id": "blog_page_3_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/3",
   "url": "https://apklint.com/blog/page/3/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_3_list_sections",
   "pageSlug": "blog/page/3",
   "url": "https://apklint.com/blog/page/3/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_3_search_blog",
   "pageSlug": "blog/page/3",
   "url": "https://apklint.com/blog/page/3/"
  },
  {
   "id": "blog_page_4_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/4",
   "url": "https://apklint.com/blog/page/4/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_4_list_sections",
   "pageSlug": "blog/page/4",
   "url": "https://apklint.com/blog/page/4/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_4_search_blog",
   "pageSlug": "blog/page/4",
   "url": "https://apklint.com/blog/page/4/"
  },
  {
   "id": "blog_page_5_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/5",
   "url": "https://apklint.com/blog/page/5/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_5_list_sections",
   "pageSlug": "blog/page/5",
   "url": "https://apklint.com/blog/page/5/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_5_search_blog",
   "pageSlug": "blog/page/5",
   "url": "https://apklint.com/blog/page/5/"
  },
  {
   "id": "blog_page_6_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/6",
   "url": "https://apklint.com/blog/page/6/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_6_list_sections",
   "pageSlug": "blog/page/6",
   "url": "https://apklint.com/blog/page/6/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_6_search_blog",
   "pageSlug": "blog/page/6",
   "url": "https://apklint.com/blog/page/6/"
  },
  {
   "id": "blog_page_7_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/7",
   "url": "https://apklint.com/blog/page/7/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_7_list_sections",
   "pageSlug": "blog/page/7",
   "url": "https://apklint.com/blog/page/7/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_7_search_blog",
   "pageSlug": "blog/page/7",
   "url": "https://apklint.com/blog/page/7/"
  },
  {
   "id": "blog_page_8_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/8",
   "url": "https://apklint.com/blog/page/8/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_8_list_sections",
   "pageSlug": "blog/page/8",
   "url": "https://apklint.com/blog/page/8/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_8_search_blog",
   "pageSlug": "blog/page/8",
   "url": "https://apklint.com/blog/page/8/"
  },
  {
   "id": "blog_page_9_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/9",
   "url": "https://apklint.com/blog/page/9/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_9_list_sections",
   "pageSlug": "blog/page/9",
   "url": "https://apklint.com/blog/page/9/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_9_search_blog",
   "pageSlug": "blog/page/9",
   "url": "https://apklint.com/blog/page/9/"
  },
  {
   "id": "blog_page_10_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/10",
   "url": "https://apklint.com/blog/page/10/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_10_list_sections",
   "pageSlug": "blog/page/10",
   "url": "https://apklint.com/blog/page/10/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_10_search_blog",
   "pageSlug": "blog/page/10",
   "url": "https://apklint.com/blog/page/10/"
  },
  {
   "id": "blog_page_11_get_page_context",
   "name": "get_page_context",
   "pageSlug": "blog/page/11",
   "url": "https://apklint.com/blog/page/11/",
   "description": "Return a concise read-only summary of this page (title, canonical URL, page type, on-page tool, primary action). Exposes no private data, files, hidden fields, or backend internals.",
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": false,
   "category": "context",
   "requiresUserGesture": false,
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "title": "Get page context",
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": false,
    "readOnly": true,
    "destructive": false
   }
  },
  {
   "name": "list_sections",
   "title": "List sections",
   "description": "List the main visible navigation links on this site (text and URL) so an agent can choose where to go next. Read-only.",
   "inputSchema": {
    "type": "object",
    "properties": {},
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "id": "blog_page_11_list_sections",
   "pageSlug": "blog/page/11",
   "url": "https://apklint.com/blog/page/11/",
   "safetyLevel": "navigation_only",
   "category": "context",
   "requiresUserGesture": false,
   "readOnlyHint": true,
   "untrustedContentHint": true
  },
  {
   "name": "search_blog",
   "title": "Search APKLint guides",
   "description": "Search the public APKLint article index. Returns titles, summaries and canonical article URLs; does not navigate, upload files or read private inputs.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "query": {
      "type": "string",
      "maxLength": 200,
      "description": "Words to find in public guide titles, summaries or topic tags."
     },
     "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20
     }
    },
    "required": [
     "query"
    ],
    "additionalProperties": false
   },
   "annotations": {
    "readOnlyHint": true,
    "untrustedContentHint": true,
    "readOnly": true,
    "destructive": false
   },
   "safetyLevel": "navigation_only",
   "readOnlyHint": true,
   "untrustedContentHint": true,
   "category": "public_content",
   "requiresUserGesture": false,
   "id": "blog_page_11_search_blog",
   "pageSlug": "blog/page/11",
   "url": "https://apklint.com/blog/page/11/"
  }
 ],
 "releaseDate": "2026-09-22",
 "releaseVersion": "2026.09.22-blog",
 "toolPageCount": 50,
 "articleCount": 262,
 "archivePageCount": 11,
 "articleResources": [
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-file-structure/",
   "title": "APK File Structure: What Each Folder Actually Contains",
   "description": "An APK is an installable Android package, not a folder of editable project source.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/aab-vs-apk/",
    "https://apklint.com/blog/apk-abi-architecture/",
    "https://apklint.com/blog/android-studio-analyze-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-analyzer/",
    "https://apklint.com/android-app-checker/",
    "https://apklint.com/apk-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-studio-analyze-apk/",
   "title": "Analyze an APK in Android Studio Without Misreading It",
   "description": "Use Android Studio APK Analyzer to compare release artifacts, inspect the merged manifest and trace changes in code, resources and size.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-file-structure/",
    "https://apklint.com/blog/aab-vs-apk/",
    "https://apklint.com/blog/apk-abi-architecture/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-analyzer/",
    "https://apklint.com/android-app-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/check-apk-file/",
   "title": "Check an APK File: Identity, Integrity and Risk Are Different Questions",
   "description": "Check APK identity, compatibility, signing integrity and risk signals separately. A readable package is not a universal security verdict.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-16kb-page-size/",
    "https://apklint.com/blog/android-version-code-name/",
    "https://apklint.com/blog/apk-file-structure/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-info-package-version/",
   "title": "Read APK Information: Package Name, Version and SDK Levels",
   "description": "APK information is most reliable when read from the built package.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/extract-xapk-to-apk/",
    "https://apklint.com/blog/extract-installed-apk-adb/",
    "https://apklint.com/blog/check-apk-file/"
   ],
   "relatedTools": [
    "https://apklint.com/app-inspector-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-download-installed-size/",
   "title": "APK Size vs Download Size vs Installed Size",
   "description": "An APK's file size, estimated download size and installed storage use are different measurements. Before optimizing, decide which one affects the user problem.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/reduce-apk-size/",
    "https://apklint.com/blog/android-app-bundle-structure/",
    "https://apklint.com/blog/android-16kb-page-size/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-size-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/reduce-apk-size/",
   "title": "Reduce APK Size by Measuring the Largest Contributors First",
   "description": "Reduce APK size by finding the largest avoidable contributor in a release build.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-size-reducer-limits/",
    "https://apklint.com/blog/apk-download-installed-size/",
    "https://apklint.com/blog/flutter-apk-size/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-size-analyzer/",
    "https://apklint.com/apk-compress/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-size-reducer-limits/",
   "title": "Why an APK Size Reducer Can't Replace a Release Build",
   "description": "An APK size reducer should not be treated like an image compressor.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/reduce-apk-size/",
    "https://apklint.com/blog/apk-info-package-version/",
    "https://apklint.com/blog/decode-apk-resources/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-compress/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-to-source-code-limits/",
   "title": "Can You Recover an Android Studio Project from an APK?",
   "description": "Decompiling an APK can recover useful representations of compiled code and resources, but it usually cannot restore the original Android Studio project.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/choose-apk-extractor/",
    "https://apklint.com/blog/jadx-for-android/",
    "https://apklint.com/blog/extract-images-from-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-decompiler/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/decode-apk-resources/",
   "title": "Decode an APK: Archive Extraction vs Resource Decoding",
   "description": "Decoding an APK is different from unzipping it. Unzipping exposes stored entries; decoding interprets Android's compiled manifest and resource table.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/decompile-recompile-apk/",
    "https://apklint.com/blog/check-apk-file/",
    "https://apklint.com/blog/apk-file-structure/"
   ],
   "relatedTools": [
    "https://apklint.com/apktool/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/extract-images-from-apk/",
   "title": "Extract Images from an APK Without Losing Resource Context",
   "description": "Extracting images from an APK starts with understanding Android resources.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/extract-files-from-apk/",
    "https://apklint.com/blog/choose-apk-extractor/",
    "https://apklint.com/blog/apk-to-source-code-limits/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-decompiler/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/extract-files-from-apk/",
   "title": "Extract Files from an APK Safely and Keep an Inventory",
   "description": "You can extract files from an APK without installing it, but the safest workflow begins with a bounded inventory.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/extract-images-from-apk/",
    "https://apklint.com/blog/choose-apk-extractor/",
    "https://apklint.com/blog/apk-to-source-code-limits/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-decompiler/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/extract-installed-apk-adb/",
   "title": "Extract an Installed APK with ADB, Including Split Packages",
   "description": "To extract an installed Android application, ask the package manager for its actual APK paths.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/extract-xapk-to-apk/",
    "https://apklint.com/blog/apk-info-package-version/",
    "https://apklint.com/blog/extract-files-from-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/app-inspector-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/choose-apk-extractor/",
   "title": "Choose an APK Extractor: Splits, Provenance, Privacy",
   "description": "The best APK extractor for a particular job is the one that preserves the package set and its provenance without introducing unnecessary access or privacy risk.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-to-source-code-limits/",
    "https://apklint.com/blog/jadx-for-android/",
    "https://apklint.com/blog/extract-files-from-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-decompiler/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/extract-xapk-to-apk/",
   "title": "Extract XAPK to APK: Why the Base APK May Not Be Enough",
   "description": "An XAPK is a distribution container, not an Android platform installation format like a standalone APK.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/extract-installed-apk-adb/",
    "https://apklint.com/blog/apk-info-package-version/",
    "https://apklint.com/blog/bundletool-device-spec/"
   ],
   "relatedTools": [
    "https://apklint.com/app-inspector-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/extract-apk-from-aab/",
   "title": "Extract APKs from an AAB with bundletool",
   "description": "Use bundletool to generate APKs from an Android App Bundle.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/aab-vs-apk/",
    "https://apklint.com/blog/bundletool-device-spec/",
    "https://apklint.com/blog/android-app-bundle-structure/"
   ],
   "relatedTools": [
    "https://apklint.com/aab-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/aab-vs-apk/",
   "title": "AAB vs APK: Publishing Format, Install Format and Testing",
   "description": "An APK is a package Android can install.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/extract-apk-from-aab/",
    "https://apklint.com/blog/bundletool-device-spec/",
    "https://apklint.com/blog/apk-abi-architecture/"
   ],
   "relatedTools": [
    "https://apklint.com/aab-analyzer/",
    "https://apklint.com/apk-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-app-bundle-structure/",
   "title": "Inside an Android App Bundle: Modules, Manifests and Configuration",
   "description": "An Android App Bundle organizes an application into modules rather than presenting the final device installation as one flat APK.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/aab-vs-apk/",
    "https://apklint.com/blog/extract-apk-from-aab/",
    "https://apklint.com/blog/bundletool-device-spec/"
   ],
   "relatedTools": [
    "https://apklint.com/aab-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/install-split-apks/",
   "title": "Install Split APKs Without Missing a Required Split",
   "description": "Split APKs must be installed as a coherent package set.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/choose-apk-extractor/",
    "https://apklint.com/blog/android-studio-analyze-apk/",
    "https://apklint.com/blog/apk-to-source-code-limits/"
   ],
   "relatedTools": [
    "https://apklint.com/min-sdk-compatibility-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/bundletool-device-spec/",
   "title": "Use a bundletool Device Specification for Reproducible Tests",
   "description": "A bundletool device specification makes an APK-generation test reproducible. It records device characteristics used to select appropriate packages from an AAB.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/extract-apk-from-aab/",
    "https://apklint.com/blog/aab-vs-apk/",
    "https://apklint.com/blog/android-app-bundle-structure/"
   ],
   "relatedTools": [
    "https://apklint.com/aab-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-abi-architecture/",
   "title": "Check APK Architecture: arm64-v8a, armeabi-v7a and x86_64",
   "description": "Check an APK's native architecture by inspecting its packaged lib/<abi>/ directories, not by guessing from the phone model or the APK filename.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/aab-vs-apk/",
    "https://apklint.com/blog/apk-file-structure/",
    "https://apklint.com/blog/android-studio-analyze-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-16kb-page-size/",
   "title": "Check Android 16 KB Page-Size Support in Native Libraries",
   "description": "Android 16 KB page-size compatibility is a native-binary and packaging question, not something solved by raising targetSdk alone.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-version-code-name/",
    "https://apklint.com/blog/check-apk-file/",
    "https://apklint.com/blog/apk-download-installed-size/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-dex-file/",
   "title": "What Is classes.dex? Reading an Android DEX Inventory",
   "description": "classes.dex contains compiled code for Android's runtime.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-multidex/",
    "https://apklint.com/blog/smali-code-tutorial/",
    "https://apklint.com/blog/multidexapplication-setup/"
   ],
   "relatedTools": [
    "https://apklint.com/dex-smali-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/smali-code-tutorial/",
   "title": "Read Smali Code: Registers, Methods and Control Flow",
   "description": "Smali is a human-readable representation of Android DEX instructions. To read it usefully, track a method's inputs, registers, calls and branches.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-dex-file/",
    "https://apklint.com/blog/android-multidex/",
    "https://apklint.com/blog/multidexapplication-setup/"
   ],
   "relatedTools": [
    "https://apklint.com/dex-smali-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/jadx-for-android/",
   "title": "JADX for Android: Know What Source Recovery Can Deliver",
   "description": "JADX is useful for understanding managed code and resources in an Android APK, but its output is a reconstruction.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/choose-apk-extractor/",
    "https://apklint.com/blog/apk-to-source-code-limits/",
    "https://apklint.com/blog/extract-files-from-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-decompiler/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/decompile-recompile-apk/",
   "title": "Decompile and Recompile an APK: A Controlled Lab Workflow",
   "description": "Decompiling and recompiling an APK is a laboratory workflow, not a way to preserve the original release automatically.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/decode-apk-resources/",
    "https://apklint.com/blog/apk-to-source-code-limits/",
    "https://apklint.com/blog/apk-info-package-version/"
   ],
   "relatedTools": [
    "https://apklint.com/apktool/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-multidex/",
   "title": "Android Multidex: When You Need It and When You Do Not",
   "description": "Android multidex addresses the method-reference limit of a single DEX file.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/multidexapplication-setup/",
    "https://apklint.com/blog/android-dex-file/",
    "https://apklint.com/blog/smali-code-tutorial/"
   ],
   "relatedTools": [
    "https://apklint.com/dex-smali-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/multidexapplication-setup/",
   "title": "MultiDexApplication vs MultiDex.install: Fixing Startup on Older Android",
   "description": "MultiDexApplication and MultiDex.install() solve the same legacy startup problem through different integration points.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-multidex/",
    "https://apklint.com/blog/smali-code-tutorial/",
    "https://apklint.com/blog/android-dex-file/"
   ],
   "relatedTools": [
    "https://apklint.com/dex-smali-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-version-code-name/",
   "title": "versionCode vs versionName: Preventing Play Upload and Update Errors",
   "description": "versionCode controls Android release ordering; versionName is a display label.",
   "category": "APK & App Bundles",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-16kb-page-size/",
    "https://apklint.com/blog/check-apk-file/",
    "https://apklint.com/blog/smali-code-tutorial/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/wrong-app-bundle-signing-key/",
   "title": "App Bundle Signed with the Wrong Key: Diagnose First",
   "description": "Resolve a wrong App Bundle signing-key error by comparing the expected upload certificate with the submitted build and CI configuration.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-signing-key-rotation/",
    "https://apklint.com/blog/generate-signed-apk-android-studio/",
    "https://apklint.com/blog/reset-play-upload-key/"
   ],
   "relatedTools": [
    "https://apklint.com/aab-analyzer/",
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/generate-signed-apk-android-studio/",
   "title": "Generate a Signed APK in Android Studio and Verify It",
   "description": "Generating a signed APK requires choosing the correct application module, release variant and signing identity.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/create-android-signing-keystore/",
    "https://apklint.com/blog/wrong-app-bundle-signing-key/",
    "https://apklint.com/blog/find-android-keystore/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-debug-keystore-password/",
   "title": "Android Debug Keystore Password: Defaults and Safe Use",
   "description": "The standard Android debug keystore uses the password android , the key password android and the alias androiddebugkey .",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-keystore-passwords/",
    "https://apklint.com/blog/find-android-keystore/",
    "https://apklint.com/blog/android-keystore-api/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/find-android-keystore/",
   "title": "Find Your Android Signing Keystore the Safe Way",
   "description": "There is no universal folder for an Android release keystore.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-keystore-passwords/",
    "https://apklint.com/blog/android-keystore-api/",
    "https://apklint.com/blog/android-debug-keystore-password/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/create-android-signing-keystore/",
   "title": "Create an Android Signing Keystore with a Recovery Plan",
   "description": "Create an Android signing keystore only after deciding whether it will be an upload key or the actual app-signing identity.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/find-android-keystore/",
    "https://apklint.com/blog/android-keystore-passwords/",
    "https://apklint.com/blog/android-keystore-api/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-keystore-passwords/",
   "title": "Android Keystore Password vs Key Password vs Alias",
   "description": "An Android signing setup can involve a keystore password, a key-entry password and an alias. These values are related but not interchangeable.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-debug-keystore-password/",
    "https://apklint.com/blog/find-android-keystore/",
    "https://apklint.com/blog/android-keystore-api/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-app-signing/",
   "title": "Play App Signing: Signing Keys, Upload Keys, Certificates",
   "description": "Play App Signing separates the key used to upload a release from the key used to sign APKs delivered to users.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/reset-play-upload-key/",
    "https://apklint.com/blog/android-signing-key-rotation/",
    "https://apklint.com/blog/wrong-app-bundle-signing-key/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/verify-apk-signature/",
   "title": "Verify an APK Signature with apksigner, Not Just a Viewer",
   "description": "To verify an APK signature, use a tool that validates the signed package, such as Android's apksigner .",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/zipalign-before-signing/",
    "https://apklint.com/blog/apk-signature-schemes/",
    "https://apklint.com/blog/install-failed-update-incompatible/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-signature-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/certificate-fingerprints-sha1-sha256/",
   "title": "Find SHA-1 and SHA-256 Fingerprints for the Right Build",
   "description": "An Android certificate fingerprint identifies a signing certificate using a hash algorithm.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/generate-signed-apk-android-studio/",
    "https://apklint.com/blog/play-app-signing/",
    "https://apklint.com/blog/reset-play-upload-key/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-signature-schemes/",
   "title": "APK Signing Schemes v1, v2, v3 and v4: What Each Adds",
   "description": "APK signing schemes describe how Android verifies package integrity and signing identity. They are not a simple “higher number means this app is safe” score.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/zipalign-before-signing/",
    "https://apklint.com/blog/verify-apk-signature/",
    "https://apklint.com/blog/install-failed-update-incompatible/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-signature-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/reset-play-upload-key/",
   "title": "Reset a Lost Play Upload Key Without Replacing App Identity",
   "description": "A lost Google Play upload key can often be reset through Play App Signing without changing the app-signing identity delivered to users.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-signing-key-rotation/",
    "https://apklint.com/blog/play-app-signing/",
    "https://apklint.com/blog/wrong-app-bundle-signing-key/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-signing-key-rotation/",
   "title": "Android Signing-Key Rotation: Plan Before Upgrading",
   "description": "Signing-key rotation is a planned identity transition, not simply replacing a keystore file.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/reset-play-upload-key/",
    "https://apklint.com/blog/wrong-app-bundle-signing-key/",
    "https://apklint.com/blog/android-keystore-api/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/signing-config-ci/",
   "title": "Keep Android Signing Credentials Out of Gradle Repositories",
   "description": "Android release signing in CI should provide the build with the minimum credentials it needs without placing private keys or passwords in the repository.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-signature-schemes/",
    "https://apklint.com/blog/zipalign-before-signing/",
    "https://apklint.com/blog/android-signing-key-rotation/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-keystore-api/",
   "title": "Android Keystore API vs Signing Keystore: Two Systems",
   "description": "Android Keystore API and an Android signing keystore are different systems. The runtime Keystore protects cryptographic keys used by an installed app.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-keystore-passwords/",
    "https://apklint.com/blog/find-android-keystore/",
    "https://apklint.com/blog/create-android-signing-keystore/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/store-secrets-android-keystore/",
   "title": "Store Secrets with Android Keystore: Encrypt Data, Do Not Store Passwords as Keys",
   "description": "Android Keystore stores cryptographic keys, not arbitrary passwords as a general-purpose database.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/hardware-backed-keystore/",
    "https://apklint.com/blog/android-keystore-passwords/",
    "https://apklint.com/blog/android-debug-keystore-password/"
   ],
   "relatedTools": [
    "https://apklint.com/android-privacy-api-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/hardware-backed-keystore/",
   "title": "Hardware-Backed Keystore: Verify Support, Don't Assume",
   "description": "A key generated through Android Keystore is not automatically guaranteed to be protected by the strongest hardware available on every device.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/store-secrets-android-keystore/",
    "https://apklint.com/blog/react-native-signing-keystore/",
    "https://apklint.com/blog/android-keystore-api/"
   ],
   "relatedTools": [
    "https://apklint.com/android-privacy-api-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-signing-keystore/",
   "title": "Configure a React Native Android Release Keystore Correctly",
   "description": "A React Native Android release uses Android's signing system.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/hardware-backed-keystore/",
    "https://apklint.com/blog/android-keystore-api/",
    "https://apklint.com/blog/android-keystore-passwords/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/install-failed-update-incompatible/",
   "title": "Fix INSTALL_FAILED_UPDATE_INCOMPATIBLE Safely",
   "description": "Investigate INSTALL_FAILED_UPDATE_INCOMPATIBLE by comparing the installed and candidate app identities, signing records and release paths.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/zipalign-before-signing/",
    "https://apklint.com/blog/apk-signature-schemes/",
    "https://apklint.com/blog/verify-apk-signature/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-signature-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/zipalign-before-signing/",
   "title": "zipalign Before Signing: Verify Alignment Without Invalidating an APK",
   "description": "Run zipalign before the final apksigner step.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-signature-schemes/",
    "https://apklint.com/blog/verify-apk-signature/",
    "https://apklint.com/blog/install-failed-update-incompatible/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-signature-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-package-application-id/",
   "title": "Package Name vs applicationId: Which Identity Does Google Play Use?",
   "description": "An Android application's applicationId is its installed and Google Play identity. The code namespace organizes generated and source references.",
   "category": "Signing & App Identity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/reset-play-upload-key/",
    "https://apklint.com/blog/zipalign-before-signing/",
    "https://apklint.com/blog/install-failed-update-incompatible/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-certificate-pinning/",
   "title": "Certificate Pinning on Android: Benefits, Failure Modes and Rotation",
   "description": "Certificate pinning restricts which certificate public keys an Android client accepts for a server.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/network-security-config/",
    "https://apklint.com/blog/android-static-analysis/",
    "https://apklint.com/blog/android-apk-security-review/"
   ],
   "relatedTools": [
    "https://apklint.com/android-network-security-config/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/usescleartexttraffic-true/",
   "title": "usesCleartextTraffic=true: Scope the Exception, Do Not Disable Security Globally",
   "description": "Understand Android cleartext-traffic settings, prefer HTTPS and keep any necessary HTTP exception narrow and explicitly documented.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-certificate-pinning/",
    "https://apklint.com/blog/network-security-config/",
    "https://apklint.com/blog/check-apk-for-malware/"
   ],
   "relatedTools": [
    "https://apklint.com/android-cleartext-traffic-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/network-security-config/",
   "title": "Android Network Security Config with Narrow Trust Rules",
   "description": "An Android Network Security Configuration defines app-specific trust and cleartext policies declaratively.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-certificate-pinning/",
    "https://apklint.com/blog/android-apk-security-review/",
    "https://apklint.com/blog/android-webview-security/"
   ],
   "relatedTools": [
    "https://apklint.com/android-network-security-config/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/check-apk-for-malware/",
   "title": "Check an APK for Malware Without Trusting Zero Detections",
   "description": "Checking an APK for malware is a risk assessment, not a single green badge. A clean result means the checks performed did not identify a problem at that time.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/virustotal-apk-check/",
    "https://apklint.com/blog/apk-malware-analysis/",
    "https://apklint.com/blog/android-apk-security-review/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-virus-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/virustotal-apk-check/",
   "title": "VirusTotal APK Checks: Read Detections and Protect Confidential Builds",
   "description": "A VirusTotal APK report aggregates security signals from multiple providers.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-malware-analysis/",
    "https://apklint.com/blog/check-apk-for-malware/",
    "https://apklint.com/blog/android-apk-security-review/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-malware-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-malware-analysis/",
   "title": "APK Malware Analysis: A Static Triage Worksheet",
   "description": "Static APK malware analysis examines a package without executing it.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/virustotal-apk-check/",
    "https://apklint.com/blog/check-apk-for-malware/",
    "https://apklint.com/blog/android-static-analysis/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-malware-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-static-analysis/",
   "title": "Android Static Analysis: What the Binary Can Tell You",
   "description": "Android static analysis covers several different activities: checking source code, inspecting a compiled APK and reviewing dependency metadata.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-static-code-analysis/",
    "https://apklint.com/blog/apk-malware-analysis/",
    "https://apklint.com/blog/android-certificate-pinning/"
   ],
   "relatedTools": [
    "https://apklint.com/android-static-code-analysis/",
    "https://apklint.com/apk-vulnerability-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/mobile-security-testing-services/",
   "title": "Evaluate Mobile Security Testing Services with Real Scope",
   "description": "Evaluate mobile security testing services by scope, methods and evidence, including the actual app, backend and release process.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-penetration-testing-scope/",
    "https://apklint.com/blog/mobile-security-checklist/",
    "https://apklint.com/blog/owasp-mastg-android/"
   ],
   "relatedTools": [
    "https://apklint.com/app-security-testing/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-penetration-testing-scope/",
   "title": "Scope an Android Penetration Test Before Testing",
   "description": "An Android penetration test needs a written scope before anyone probes an app or its backend.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/mobile-security-testing-services/",
    "https://apklint.com/blog/owasp-mastg-android/",
    "https://apklint.com/blog/android-static-analysis/"
   ],
   "relatedTools": [
    "https://apklint.com/app-security-testing/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/mobile-security-checklist/",
   "title": "Mobile App Security Checklist: Evidence for Each Control",
   "description": "Build a mobile app security checklist with evidence, owners and concrete tests for storage, authentication, networking and release behavior.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/owasp-masvs-vs-mastg/",
    "https://apklint.com/blog/owasp-mobile-top-10/",
    "https://apklint.com/blog/owasp-mastg-android/"
   ],
   "relatedTools": [
    "https://apklint.com/owasp-mobile/",
    "https://apklint.com/android-security-report/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/owasp-mastg-android/",
   "title": "Use the OWASP MASTG for an Android Test Plan",
   "description": "The OWASP Mobile Application Security Testing Guide, or MASTG, is a testing resource—not a one-click compliance scanner.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/owasp-masvs-vs-mastg/",
    "https://apklint.com/blog/mobile-security-checklist/",
    "https://apklint.com/blog/owasp-mobile-top-10/"
   ],
   "relatedTools": [
    "https://apklint.com/owasp-mobile/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/owasp-mobile-top-10/",
   "title": "OWASP Mobile Top 10: Turn Categories into Android Checks",
   "description": "The OWASP Mobile Top 10 is a risk-awareness resource.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/owasp-mobile-top-10-2016/",
    "https://apklint.com/blog/mobile-security-checklist/",
    "https://apklint.com/blog/owasp-masvs-vs-mastg/"
   ],
   "relatedTools": [
    "https://apklint.com/owasp-mobile/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/owasp-mobile-top-10-2016/",
   "title": "OWASP Mobile Top 10 2016: Historical Mapping, Not Current Guidance",
   "description": "The OWASP Mobile Top 10 2016 remains useful for understanding older reports, but it should not be presented as the current checklist for a new Android release.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/owasp-mobile-top-10/",
    "https://apklint.com/blog/owasp-masvs-vs-mastg/",
    "https://apklint.com/blog/owasp-mastg-android/"
   ],
   "relatedTools": [
    "https://apklint.com/owasp-mobile/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/owasp-masvs-vs-mastg/",
   "title": "MASVS vs MASTG vs Mobile Top 10: Pick the Right Resource",
   "description": "MASVS, MASTG and the Mobile Top 10 answer different questions.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/owasp-mastg-android/",
    "https://apklint.com/blog/mobile-security-checklist/",
    "https://apklint.com/blog/owasp-mobile-top-10-2016/"
   ],
   "relatedTools": [
    "https://apklint.com/owasp-mobile/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-apk-security-review/",
   "title": "Android APK Security Review: From Flags to Runtime Evidence",
   "description": "An Android APK security review should establish what actually shipped, then identify which observations need runtime or backend testing.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-webview-security/",
    "https://apklint.com/blog/android-backup-sensitive-data/",
    "https://apklint.com/blog/hardcoded-api-keys/"
   ],
   "relatedTools": [
    "https://apklint.com/android-security-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/reverse-engineer-owned-apk/",
   "title": "Reverse Engineer an APK You Own: A Repeatable Notebook",
   "description": "Investigate an APK you own with a focused question, preserved artifacts and reproducible notes about code, resources and release changes.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/mobile-reverse-engineering-limits/",
    "https://apklint.com/blog/decrypt-apk-file/",
    "https://apklint.com/blog/android-apk-security-review/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-decompiler/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/mobile-reverse-engineering-limits/",
   "title": "Mobile App Reverse Engineering: Authorization, Evidence and Limits",
   "description": "Mobile app reverse engineering can reveal implementation details in a distributed client, but it cannot recover everything that produced that client.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/reverse-engineer-owned-apk/",
    "https://apklint.com/blog/mobile-security-checklist/",
    "https://apklint.com/blog/owasp-mobile-top-10/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-decompiler/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/decrypt-apk-file/",
   "title": "“Decrypt APK File” Usually Means Decode: Identify the Actual Format",
   "description": "“Decrypt APK file” often describes the wrong operation. A normal APK is a ZIP-based package containing compiled code and resources.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/reverse-engineer-owned-apk/",
    "https://apklint.com/blog/android-apk-security-review/",
    "https://apklint.com/blog/apk-malware-analysis/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/hardcoded-api-keys/",
   "title": "Hardcoded API Keys in APKs: Separate Public Identifiers from Secrets",
   "description": "A string that looks like an API key is not automatically a confidential secret.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-webview-security/",
    "https://apklint.com/blog/android-backup-sensitive-data/",
    "https://apklint.com/blog/android-apk-security-review/"
   ],
   "relatedTools": [
    "https://apklint.com/android-security-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-exported-component-security/",
   "title": "Audit Exported Android Components Without Breaking Them",
   "description": "An exported Android component is reachable from outside the app under the applicable platform rules.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-webview-security/",
    "https://apklint.com/blog/android-backup-sensitive-data/",
    "https://apklint.com/blog/android-apk-security-review/"
   ],
   "relatedTools": [
    "https://apklint.com/android-exported-activity/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-webview-security/",
   "title": "Android WebView Security: Validate Origins, URLs and JavaScript Bridges",
   "description": "Review Android WebView navigation, JavaScript bridges, file access and trust boundaries using the actual content your app loads.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-backup-sensitive-data/",
    "https://apklint.com/blog/android-apk-security-review/",
    "https://apklint.com/blog/hardcoded-api-keys/"
   ],
   "relatedTools": [
    "https://apklint.com/android-security-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-backup-sensitive-data/",
   "title": "Android Backup Rules: Keep Sensitive Data Out of Backups",
   "description": "Android backup rules determine which app data can leave its normal on-device storage context through supported backup and transfer mechanisms.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-webview-security/",
    "https://apklint.com/blog/android-apk-security-review/",
    "https://apklint.com/blog/hardcoded-api-keys/"
   ],
   "relatedTools": [
    "https://apklint.com/android-security-scanner/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-sdk-tracker-audit/",
   "title": "Audit Third-Party SDKs and Trackers Beyond Name Detection",
   "description": "An SDK or tracker audit needs more than a list of library names.",
   "category": "Security & Reverse Engineering",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-backup-sensitive-data/",
    "https://apklint.com/blog/android-webview-security/",
    "https://apklint.com/blog/android-exported-component-security/"
   ],
   "relatedTools": [
    "https://apklint.com/ad-sdk-tracker-detector/",
    "https://apklint.com/google-play-sdk-index/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-dangerous-permissions/",
   "title": "Android Dangerous Permissions: A Version-Aware Inventory",
   "description": "Android “dangerous” permissions protect access to sensitive data or capabilities and can require a runtime grant. The label does not mean an app is malicious.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/runtime-permission-example/",
    "https://apklint.com/blog/bluetooth-nearby-permissions/",
    "https://apklint.com/blog/restricted-android-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-internet-permission/",
   "title": "Android INTERNET Permission: Manifest Placement and Connection Failures",
   "description": "The Android INTERNET permission belongs directly inside <manifest> , not inside <application> .",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/uses-permission-vs-permission/",
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/notification-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/uses-permission-vs-permission/",
   "title": "uses-permission vs permission: Declaring Access vs Defining a Capability",
   "description": "<uses-permission> requests access to an existing permission. <permission> defines a permission that your app can use to protect its own exposed functionality.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-internet-permission/",
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/notification-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/runtime-permission-example/",
   "title": "Android Runtime Permission Example with Denial Handling",
   "description": "A runtime permission flow needs three outcomes: already granted, newly granted and denied. It also needs a useful fallback.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/bluetooth-nearby-permissions/",
    "https://apklint.com/blog/android-dangerous-permissions/",
    "https://apklint.com/blog/restricted-android-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/check-android-permission/",
   "title": "Check an Android Permission at the Point of Use",
   "description": "Check an Android permission immediately before the operation that needs it.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-phone-permissions/",
    "https://apklint.com/blog/android-file-permissions/",
    "https://apklint.com/blog/android-camera-microphone-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/inspect-app-permissions/",
   "title": "Inspect App Permissions: Declarations vs Current Grants",
   "description": "Inspect the permissions packaged in an Android app, trace why they are requested and test the corresponding runtime behavior.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/mobile-app-permissions-audit/",
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/notification-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/mobile-app-permissions-audit/",
   "title": "Mobile App Permissions Audit That Includes SDK Additions",
   "description": "A mobile app permissions audit should connect every requested capability to a current feature and a release owner.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/inspect-app-permissions/",
    "https://apklint.com/blog/uses-permission-vs-permission/",
    "https://apklint.com/blog/full-screen-intent-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-overlay-permission/",
   "title": "Android Overlay Permission: Settings Flow and Safe Failure Handling",
   "description": "Drawing over other apps uses special access, not an ordinary runtime permission dialog.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-phone-permissions/",
    "https://apklint.com/blog/check-android-permission/",
    "https://apklint.com/blog/android-file-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/read-phone-state-permission/",
   "title": "READ_PHONE_STATE: What It Allows and What It Does Not",
   "description": "READ_PHONE_STATE grants access to particular telephony information under Android's current rules.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-phone-permissions/",
    "https://apklint.com/blog/check-android-permission/",
    "https://apklint.com/blog/android-file-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-phone-permissions/",
   "title": "Android Phone Permissions: Calls, State and Call Logs",
   "description": "Android phone permissions are not one interchangeable group.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/read-phone-state-permission/",
    "https://apklint.com/blog/check-android-permission/",
    "https://apklint.com/blog/android-file-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/full-screen-intent-permission/",
   "title": "USE_FULL_SCREEN_INTENT: Check Eligibility Before Requesting Access",
   "description": "USE_FULL_SCREEN_INTENT is for genuinely urgent experiences such as incoming calls and user-configured alarms.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/notification-permission/",
    "https://apklint.com/blog/android-background-work-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-background-work-permission/",
   "title": "Android Background Work Has No Universal Permission",
   "description": "Android has no universal “run in background” permission that makes arbitrary work run forever.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/notification-permission/",
    "https://apklint.com/blog/android-accessibility-service-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-autostart-permission/",
   "title": "Android Autostart Permission: OEM Settings Aren't Portable",
   "description": "“Autostart permission” usually refers to a manufacturer-specific device setting, not one portable Android permission that every app can request.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/notification-permission/",
    "https://apklint.com/blog/android-background-work-permission/",
    "https://apklint.com/blog/android-accessibility-service-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/write-secure-settings-permission/",
   "title": "WRITE_SECURE_SETTINGS: Why Ordinary Apps Cannot Request It Normally",
   "description": "WRITE_SECURE_SETTINGS is not an ordinary permission that a Play-distributed app can obtain through a normal runtime dialog.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-file-permissions/",
    "https://apklint.com/blog/android-phone-permissions/",
    "https://apklint.com/blog/check-android-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-file-permissions/",
   "title": "Android File Permissions: Sandbox Access Is Not a Storage Permission",
   "description": "Android file access has two layers that are often confused: the app sandbox and access to shared or user-selected content.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-phone-permissions/",
    "https://apklint.com/blog/check-android-permission/",
    "https://apklint.com/blog/android-camera-microphone-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-external-storage-permission/",
   "title": "Android External Storage Permissions Across Scoped Storage",
   "description": "Android external-storage permissions must be interpreted by device version, target SDK and the kind of data being accessed.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-all-files-access/",
    "https://apklint.com/blog/android-file-permissions/",
    "https://apklint.com/blog/android-phone-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-files-media-permission/",
   "title": "Files and Media Permission: Choose the Smallest Android Access Model",
   "description": "The phrase “Files and media permission” does not describe one stable Android access model across all versions.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-file-permissions/",
    "https://apklint.com/blog/android-phone-permissions/",
    "https://apklint.com/blog/android-camera-microphone-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-accessibility-service-permission/",
   "title": "Accessibility Service Permission: Declaration, User Control and Policy",
   "description": "An Android accessibility service is enabled through an explicit user-controlled settings flow.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/notification-permission/",
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/android-foreground-service-types/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/restricted-android-permissions/",
   "title": "“Due to Restricted Android Permissions”: Diagnose the Restriction Type",
   "description": "“Due to restricted Android permissions” is a symptom, not a diagnosis.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/bluetooth-nearby-permissions/",
    "https://apklint.com/blog/runtime-permission-example/",
    "https://apklint.com/blog/android-dangerous-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/physical-activity-permission/",
   "title": "Physical Activity Permission on Android: Request Only for the Feature",
   "description": "Physical activity access on Android is feature-specific.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-file-permissions/",
    "https://apklint.com/blog/android-camera-microphone-permissions/",
    "https://apklint.com/blog/android-phone-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/notification-permission/",
   "title": "POST_NOTIFICATIONS: Permission, Channels and Delivery",
   "description": "On Android versions requiring POST_NOTIFICATIONS , notification delivery involves more than a manifest entry.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/android-accessibility-service-permission/",
    "https://apklint.com/blog/android-exact-alarm-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-photo-picker/",
   "title": "Use Android Photo Picker Instead of Broad Photo Access",
   "description": "Android Photo Picker lets a person select media without granting your app broad access to the entire photo library.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/precise-approximate-location/",
    "https://apklint.com/blog/bluetooth-nearby-permissions/",
    "https://apklint.com/blog/android-camera-microphone-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-all-files-access/",
   "title": "MANAGE_EXTERNAL_STORAGE: Technical Access vs Google Play Eligibility",
   "description": "MANAGE_EXTERNAL_STORAGE is broad special access, not the standard fix for every Android file error.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-external-storage-permission/",
    "https://apklint.com/blog/android-photo-picker/",
    "https://apklint.com/blog/precise-approximate-location/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/background-location-permission/",
   "title": "Request Background Location Separately, With Justification",
   "description": "Background location is a separate, sensitive capability.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/precise-approximate-location/",
    "https://apklint.com/blog/android-camera-microphone-permissions/",
    "https://apklint.com/blog/android-file-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/precise-approximate-location/",
   "title": "Precise vs Approximate Location: Make Both Paths Work",
   "description": "Design Android location features for approximate and precise access, then test reduced precision, denial and later permission changes.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/background-location-permission/",
    "https://apklint.com/blog/bluetooth-nearby-permissions/",
    "https://apklint.com/blog/android-camera-microphone-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/bluetooth-nearby-permissions/",
   "title": "Bluetooth and Nearby Devices Permissions by Version",
   "description": "Bluetooth permissions on Android depend on the operation and platform version. Scanning, connecting and advertising are separate capabilities.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/runtime-permission-example/",
    "https://apklint.com/blog/restricted-android-permissions/",
    "https://apklint.com/blog/android-dangerous-permissions/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-camera-microphone-permissions/",
   "title": "Camera and Microphone Permissions: Capture Without Over-Requesting",
   "description": "Camera and microphone access should be requested separately from unrelated capabilities and only for the feature that needs them.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-file-permissions/",
    "https://apklint.com/blog/android-phone-permissions/",
    "https://apklint.com/blog/check-android-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/dangerous-permission-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-exact-alarm-permission/",
   "title": "Android Exact Alarm Permission: Choose the Right Alarm Type",
   "description": "Use an exact alarm only when the user-facing feature genuinely depends on precise timing.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/notification-permission/",
    "https://apklint.com/blog/android-autostart-permission/",
    "https://apklint.com/blog/android-accessibility-service-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-foreground-service-types/",
   "title": "Foreground Service Types: Match Permissions to the Work",
   "description": "A foreground service type describes the actual user-visible work a service performs. It is not a generic label to keep the process alive.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-accessibility-service-permission/",
    "https://apklint.com/blog/android-package-visibility/",
    "https://apklint.com/blog/notification-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-package-visibility/",
   "title": "Android Package Visibility: Query Only the Apps You Need",
   "description": "Android package visibility limits which installed applications your app can discover through package queries.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-foreground-service-types/",
    "https://apklint.com/blog/notification-permission/",
    "https://apklint.com/blog/android-autostart-permission/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/manifest-merger-failed/",
   "title": "Manifest Merger Failed: Find the Conflicting Source Before Overriding",
   "description": "When Android reports “Manifest merger failed,” find the two contributing declarations before applying an override.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/uses-permission-vs-permission/",
    "https://apklint.com/blog/android-internet-permission/",
    "https://apklint.com/blog/android-package-visibility/"
   ],
   "relatedTools": [
    "https://apklint.com/manifest-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-exported-missing/",
   "title": "Fix a Missing android:exported Declaration Safely",
   "description": "A missing android:exported declaration should be fixed by deciding whether the component is an intended external entry point.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-deep-link-validation/",
    "https://apklint.com/blog/debuggable-release-apk/",
    "https://apklint.com/blog/android-package-visibility/"
   ],
   "relatedTools": [
    "https://apklint.com/android-exported-activity/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/debuggable-release-apk/",
   "title": "Debuggable Release APK: Inspect the Built Artifact, Not Just Gradle",
   "description": "To check whether a release APK is debuggable, inspect the built artifact.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-overlay-permission/",
    "https://apklint.com/blog/inspect-app-permissions/",
    "https://apklint.com/blog/android-exported-missing/"
   ],
   "relatedTools": [
    "https://apklint.com/debuggable-apps/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-deep-link-validation/",
   "title": "Validate Android Deep Links and App Links Before Release",
   "description": "A deep link is untrusted input into your application.",
   "category": "Manifest & Permissions",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-exported-missing/",
    "https://apklint.com/blog/debuggable-release-apk/",
    "https://apklint.com/blog/android-package-visibility/"
   ],
   "relatedTools": [
    "https://apklint.com/android-exported-activity/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-dependency-types/",
   "title": "Gradle Dependency Types: implementation, api and Runtime Configurations",
   "description": "Gradle dependency configurations answer two questions: where a dependency is available and whether it becomes part of a consumer's contract.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-api-vs-implementation/",
    "https://apklint.com/blog/gradle-dependency-tree/",
    "https://apklint.com/blog/gradle-dependency-conflicts/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-transitive-dependencies/",
   "title": "Gradle Transitive Dependencies: What Entered Your Build",
   "description": "A transitive dependency enters your build because another dependency requires it.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-build-gradle-dependencies/",
    "https://apklint.com/blog/gradle-dependency-types/",
    "https://apklint.com/blog/gradle-api-vs-implementation/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-api-vs-implementation/",
   "title": "Gradle api vs implementation: Control Your Library's Public Classpath",
   "description": "Use api when a library intentionally exposes another library's types through its public contract. Use implementation when the dependency is an internal detail.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-dependency-tree/",
    "https://apklint.com/blog/gradle-dependency-types/",
    "https://apklint.com/blog/gradle-dependency-conflicts/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-dependency-tree/",
   "title": "Read a Gradle Dependency Tree and Find the Selected Version",
   "description": "A Gradle dependency tree shows requested modules, selected versions and the paths that introduced them.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-api-vs-implementation/",
    "https://apklint.com/blog/gradle-dependency-types/",
    "https://apklint.com/blog/gradle-dependency-conflicts/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-sync-failed/",
   "title": "Gradle Sync Failed: Isolate JDK, Plugin, Repository and Network Causes",
   "description": "“Gradle sync failed” means Android Studio could not complete the build-model import. The last line is rarely the root cause.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-task-dependencies/",
    "https://apklint.com/blog/gradle-wrapper-version/",
    "https://apklint.com/blog/gradle-configuration-cache/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unable-find-gradle-tasks/",
   "title": "Unable to Find Gradle Tasks to Build: Check Project Import and Plugins",
   "description": "“Unable to find Gradle tasks to build” often follows an incomplete import or a project opened at the wrong directory level.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-wrapper-version/",
    "https://apklint.com/blog/android-module-build-gradle/",
    "https://apklint.com/blog/gradle-sync-failed/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/update-android-gradle-plugin/",
   "title": "Update the Android Gradle Plugin as a Compatible Toolchain",
   "description": "Update the Android Gradle Plugin as part of a compatible toolchain, not as an isolated number replacement.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/latest-android-gradle-version/",
    "https://apklint.com/blog/sentry-android-gradle-plugin/",
    "https://apklint.com/blog/maps-secrets-gradle-plugin/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/latest-android-gradle-version/",
   "title": "Latest Android Gradle Versions: Separate AGP from Gradle",
   "description": "“Latest Android Gradle version” can mean Gradle itself or the Android Gradle Plugin. They have independent version numbers.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-wrapper-version/",
    "https://apklint.com/blog/update-android-gradle-plugin/",
    "https://apklint.com/blog/sentry-android-gradle-plugin/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-task-dependencies/",
   "title": "Gradle Task Dependencies: dependsOn Is Not mustRunAfter",
   "description": "dependsOn adds a task dependency; mustRunAfter only orders tasks that are already scheduled.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-sync-failed/",
    "https://apklint.com/blog/gradle-wrapper-version/",
    "https://apklint.com/blog/gradle-configuration-cache/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-build-gradle-dependencies/",
   "title": "Where Android Build Dependencies Belong in Multi-Module Apps",
   "description": "Android build dependencies belong in the module and configuration that use them.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-transitive-dependencies/",
    "https://apklint.com/blog/gradle-version-catalog/",
    "https://apklint.com/blog/gradle-dependency-tree/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-module-build-gradle/",
   "title": "Root vs App Module build.gradle: Put Each Setting in the Right File",
   "description": "The root build file coordinates shared build configuration; the app module's build file configures that Android module.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-wrapper-version/",
    "https://apklint.com/blog/unable-find-gradle-tasks/",
    "https://apklint.com/blog/gradle-task-dependencies/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-version-catalog/",
   "title": "Android Version Catalogs: Share Coordinates Without Hiding Dependencies",
   "description": "A Gradle version catalog centralizes dependency aliases and version declarations.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-build-gradle-dependencies/",
    "https://apklint.com/blog/gradle-dependency-tree/",
    "https://apklint.com/blog/gradle-api-vs-implementation/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-wrapper-version/",
   "title": "Update the Gradle Wrapper and Verify the Version Used by CI",
   "description": "The Gradle Wrapper defines the Gradle distribution a project should use.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-module-build-gradle/",
    "https://apklint.com/blog/latest-android-gradle-version/",
    "https://apklint.com/blog/unable-find-gradle-tasks/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/sentry-android-gradle-plugin/",
   "title": "Sentry Android Gradle Plugin: Preserve Mapping Files for Release Reports",
   "description": "The Sentry Android Gradle Plugin connects build outputs such as obfuscation mappings and debug information to Sentry's release diagnostics.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/latest-android-gradle-version/",
    "https://apklint.com/blog/update-android-gradle-plugin/",
    "https://apklint.com/blog/maps-secrets-gradle-plugin/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/maps-secrets-gradle-plugin/",
   "title": "Secrets Gradle Plugin: Avoid Git Leaks Without Claiming APK Secrecy",
   "description": "The Secrets Gradle Plugin helps keep configuration values out of source control. It does not make an API key secret after that key is compiled into an APK.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/update-android-gradle-plugin/",
    "https://apklint.com/blog/sentry-android-gradle-plugin/",
    "https://apklint.com/blog/latest-android-gradle-version/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/owasp-dependency-check-gradle/",
   "title": "OWASP Dependency-Check with Gradle: Triage Matches, Not Just Scores",
   "description": "OWASP Dependency-Check identifies potential known-vulnerability matches in dependencies.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-dependency-verification/",
    "https://apklint.com/blog/gradle-dependency-tree/",
    "https://apklint.com/blog/gradle-api-vs-implementation/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-vulnerability-scan/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-lint-workflow/",
   "title": "Android Studio Lint: Run the Build-Integrated Check, Not Just a Snippet Scan",
   "description": "Android Lint is a build-aware analysis tool, not just the warning underline in the editor.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-minifyenabled/",
    "https://apklint.com/blog/retrace-obfuscated-stack-trace/",
    "https://apklint.com/blog/android-app-obfuscation/"
   ],
   "relatedTools": [
    "https://apklint.com/android-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-static-code-analysis/",
   "title": "Android Static Code Analysis: Combine Build Context and Focused Checks",
   "description": "Android static code analysis works best as a set of complementary checks.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-static-analysis/",
    "https://apklint.com/blog/android-minifyenabled/",
    "https://apklint.com/blog/retrace-obfuscated-stack-trace/"
   ],
   "relatedTools": [
    "https://apklint.com/android-static-code-analysis/",
    "https://apklint.com/bug-finder-app-for-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/java-code-review-checklist/",
   "title": "Java Code Review Checklist for Android: Lifecycles, Errors and Resources",
   "description": "A Java code review for Android should prioritize ownership, lifecycle and failure behavior before style.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/proguard-java-obfuscator/",
    "https://apklint.com/blog/android-static-code-analysis/",
    "https://apklint.com/blog/kotlin-design-patterns/"
   ],
   "relatedTools": [
    "https://apklint.com/android-code-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/kotlin-design-patterns/",
   "title": "Kotlin Design Patterns for Android: Prefer Clear Ownership Over Ceremony",
   "description": "Useful Kotlin design patterns on Android make state, ownership and errors easier to understand.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/java-code-review-checklist/",
    "https://apklint.com/blog/r8-vs-proguard/",
    "https://apklint.com/blog/android-static-code-analysis/"
   ],
   "relatedTools": [
    "https://apklint.com/kotlin-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/r8-vs-proguard/",
   "title": "R8 vs ProGuard: Shrinking, Optimization and Compatible Rules",
   "description": "R8 is the optimizer used by modern Android builds; ProGuard is a separate Java bytecode shrinker and obfuscator.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/proguard-java-obfuscator/",
    "https://apklint.com/blog/r8-keep-rules/",
    "https://apklint.com/blog/r8-missing-classes/"
   ],
   "relatedTools": [
    "https://apklint.com/proguard-r8-obfuscation-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-minifyenabled/",
   "title": "minifyEnabled on Android: Test the Release Variant You Actually Ship",
   "description": "minifyEnabled enables code shrinking, optimization and obfuscation for an Android build type.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-app-obfuscation/",
    "https://apklint.com/blog/r8-vs-proguard/",
    "https://apklint.com/blog/android-shrinkresources/"
   ],
   "relatedTools": [
    "https://apklint.com/proguard-r8-obfuscation-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-shrinkresources/",
   "title": "shrinkResources: Remove Unused Assets Without Breaking Dynamic Lookups",
   "description": "shrinkResources removes resources that the Android optimizer determines are unused.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-minifyenabled/",
    "https://apklint.com/blog/android-app-obfuscation/",
    "https://apklint.com/blog/r8-vs-proguard/"
   ],
   "relatedTools": [
    "https://apklint.com/proguard-r8-obfuscation-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-app-obfuscation/",
   "title": "Android App Obfuscation: Raise Cost, Don't Hide Secrets",
   "description": "Android app obfuscation makes packaged code harder to read by renaming and transforming it.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-minifyenabled/",
    "https://apklint.com/blog/android-shrinkresources/",
    "https://apklint.com/blog/proguard-java-obfuscator/"
   ],
   "relatedTools": [
    "https://apklint.com/proguard-r8-obfuscation-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/proguard-java-obfuscator/",
   "title": "ProGuard for Java vs R8 for Android: Pick the Pipeline",
   "description": "ProGuard is a Java bytecode shrinker, optimizer and obfuscator.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/r8-keep-rules/",
    "https://apklint.com/blog/r8-vs-proguard/",
    "https://apklint.com/blog/android-app-obfuscation/"
   ],
   "relatedTools": [
    "https://apklint.com/proguard-r8-obfuscation-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/r8-keep-rules/",
   "title": "Write Narrow R8 Keep Rules for Reflection and Serialization",
   "description": "A good R8 keep rule preserves the contract that static analysis cannot see without disabling optimization for an entire application.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/proguard-java-obfuscator/",
    "https://apklint.com/blog/r8-vs-proguard/",
    "https://apklint.com/blog/r8-missing-classes/"
   ],
   "relatedTools": [
    "https://apklint.com/proguard-r8-obfuscation-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/r8-missing-classes/",
   "title": "R8 Missing Classes: Fix the Dependency Before Suppressing the Warning",
   "description": "An R8 missing-class error means the optimizer encountered a reference whose definition was not available in the analyzed inputs.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/r8-vs-proguard/",
    "https://apklint.com/blog/r8-keep-rules/",
    "https://apklint.com/blog/proguard-java-obfuscator/"
   ],
   "relatedTools": [
    "https://apklint.com/proguard-r8-obfuscation-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/retrace-obfuscated-stack-trace/",
   "title": "Retrace an Obfuscated Stack Trace with the Mapping File",
   "description": "Retrace needs the mapping file from the exact optimized release that produced the crash.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-minifyenabled/",
    "https://apklint.com/blog/gradle-duplicate-classes/",
    "https://apklint.com/blog/android-app-obfuscation/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-dependency-conflicts/",
   "title": "Resolve Gradle Dependency Conflicts with dependencyInsight",
   "description": "A dependency conflict occurs when the graph requests incompatible or different versions of a module.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-dependency-locking/",
    "https://apklint.com/blog/gradle-dependency-tree/",
    "https://apklint.com/blog/gradle-api-vs-implementation/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-duplicate-classes/",
   "title": "Duplicate Class Build Errors: Find the Two Owners of the Same Class",
   "description": "A duplicate-class error means two packaged inputs define the same class.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-dependency-conflicts/",
    "https://apklint.com/blog/gradle-dependency-locking/",
    "https://apklint.com/blog/gradle-version-catalog/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-dependency-locking/",
   "title": "Lock Gradle Dependencies for Reproducible Release Builds",
   "description": "Dependency locking records resolved module versions so a later build does not silently select a different compatible or dynamic version.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-dependency-conflicts/",
    "https://apklint.com/blog/gradle-dependency-tree/",
    "https://apklint.com/blog/gradle-api-vs-implementation/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-dependency-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-dependency-verification/",
   "title": "Verify Gradle Dependency Checksums Before Trusting Them",
   "description": "Gradle dependency verification checks downloaded artifacts against trusted checksums or signatures.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/owasp-dependency-check-gradle/",
    "https://apklint.com/blog/gradle-dependency-locking/",
    "https://apklint.com/blog/gradle-dependency-conflicts/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-vulnerability-scan/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/gradle-configuration-cache/",
   "title": "Gradle Configuration Cache: Measure Reuse and Fix Incompatible Tasks",
   "description": "Gradle's configuration cache reuses the configured task graph between compatible invocations.",
   "category": "Gradle & Code Quality",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/gradle-wrapper-version/",
    "https://apklint.com/blog/gradle-task-dependencies/",
    "https://apklint.com/blog/gradle-sync-failed/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-android-setup/",
   "title": "Set Up Firebase on Android and Verify the App Identity",
   "description": "Firebase setup starts with the Android application's actual package identity, not the project folder name.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-google-sign-in/",
    "https://apklint.com/blog/firebase-debugview-android/",
    "https://apklint.com/blog/firebase-ktx-migration/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-bom-latest-version/",
   "title": "Firebase BoM and SDK Versions: Pin a Verified Release, Not a Moving “Latest”",
   "description": "On 22 September 2026, Firebase's Android release notes list BoM 34.19.0 , released on 9 September 2026.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-ktx-migration/",
    "https://apklint.com/blog/firebase-android-setup/",
    "https://apklint.com/blog/firebase-x-appcheck-header/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-google-sign-in/",
   "title": "Firebase Google Sign-In on Android: Match Package and Signing Certificates",
   "description": "Google Sign-In can work in a debug build and fail after Google Play installation because the package is signed by a different certificate.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-android-setup/",
    "https://apklint.com/blog/firebase-debugview-android/",
    "https://apklint.com/blog/firebase-google-services-json/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-crashlytics-gradle/",
   "title": "Configure Crashlytics in Gradle and Prove a Crash Arrives",
   "description": "Crashlytics setup is complete only when a controlled crash from the intended build reaches the correct Firebase app with readable information.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-crashlytics-dependency/",
    "https://apklint.com/blog/crashlytics-mapping-file/",
    "https://apklint.com/blog/crashlytics-missing-crash-reports/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-crashlytics-dependency/",
   "title": "Firebase Crashlytics SDK vs Gradle Plugin: Both Have a Different Job",
   "description": "com.google.firebase:firebase-crashlytics is the Android runtime library. The Crashlytics Gradle plugin is a build-time integration.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-crashlytics-gradle/",
    "https://apklint.com/blog/crashlytics-mapping-file/",
    "https://apklint.com/blog/crashlytics-missing-crash-reports/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-debugview-android/",
   "title": "Firebase DebugView on Android: Enable, Verify, Disable",
   "description": "Firebase DebugView is useful for checking development analytics events quickly.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-android-setup/",
    "https://apklint.com/blog/firebase-google-sign-in/",
    "https://apklint.com/blog/firebase-app-check-debug-provider/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-performance-android/",
   "title": "Firebase Performance Monitoring on Android: Measure the Right Trace",
   "description": "Firebase Performance Monitoring is most useful when a trace represents a user-visible task with a clear start and finish.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-performance-flutter/",
    "https://apklint.com/blog/firebase-android-setup/",
    "https://apklint.com/blog/firebase-debugview-android/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-performance-flutter/",
   "title": "Firebase Performance in Flutter: Instrument a User Task, Not Every Method",
   "description": "A Flutter performance trace should follow a meaningful asynchronous operation from start to completion, including its failure and cancellation paths.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-performance-android/",
    "https://apklint.com/blog/firebase-app-check-flutter/",
    "https://apklint.com/blog/firebase-ktx-migration/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-flutter-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-app-check-flutter/",
   "title": "Firebase App Check in Flutter: Configure Providers Before Enforcement",
   "description": "Firebase App Check in Flutter requires platform-specific provider setup before enforcement.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-app-check-pricing/",
    "https://apklint.com/blog/firebase-app-check-debug-provider/",
    "https://apklint.com/blog/firebase-app-check-enforcement/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-app-check-react-native/",
   "title": "Firebase App Check in React Native: Native Configuration Still Matters",
   "description": "React Native App Check spans JavaScript, native Android configuration and backend enforcement.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-app-check-flutter/",
    "https://apklint.com/blog/firebase-app-check-pricing/",
    "https://apklint.com/blog/firebase-app-check-debug-provider/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-app-check-pricing/",
   "title": "Firebase App Check Pricing and Quotas: Separate Attestation from Backend Usage",
   "description": "Understand Firebase App Check quotas and the separate provider or cloud-service costs that can affect your application’s usage.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-app-check-flutter/",
    "https://apklint.com/blog/firebase-app-check-debug-provider/",
    "https://apklint.com/blog/firebase-app-check-enforcement/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-x-appcheck-header/",
   "title": "X-Firebase-AppCheck: Validate the Token on Your Backend",
   "description": "X-Firebase-AppCheck carries an App Check token to a custom backend.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-ktx-migration/",
    "https://apklint.com/blog/firebase-security-rules-audit/",
    "https://apklint.com/blog/firebase-android-setup/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-app-attestation/",
   "title": "Android App Attestation: Evidence for a Request, Not a Permanent Trust Badge",
   "description": "Android app attestation provides evidence about an app or device environment at a particular point in a request flow.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-android-setup/",
    "https://apklint.com/blog/play-integrity-android/",
    "https://apklint.com/blog/firebase-app-check-pricing/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-integrity-android/",
   "title": "Play Integrity on Android: Client Request, Server Verdict and Decision",
   "description": "Connect Play Integrity client requests to backend verification and an explicit server decision based on the verified verdict.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-integrity-verdicts/",
    "https://apklint.com/blog/play-integrity-dependency/",
    "https://apklint.com/blog/play-integrity-standard-request/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-integrity-dependency/",
   "title": "com.google.android.play:integrity: Add the Library Without Skipping Backend Setup",
   "description": "com.google.android.play:integrity is the Android client library coordinate for Play Integrity.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-integrity-android/",
    "https://apklint.com/blog/play-integrity-verdicts/",
    "https://apklint.com/blog/firebase-google-services-json/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-integrity-verdicts/",
   "title": "Read Play Integrity Verdicts Beyond One Boolean",
   "description": "A Play Integrity response is structured evidence, not a single universal “safe device” boolean.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-integrity-android/",
    "https://apklint.com/blog/play-integrity-standard-request/",
    "https://apklint.com/blog/play-integrity-dependency/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-app-check-debug-provider/",
   "title": "Use App Check Debug Tokens Without Shipping a Bypass",
   "description": "The App Check debug provider is a development mechanism, not a production attestation provider.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-app-check-enforcement/",
    "https://apklint.com/blog/firebase-app-check-pricing/",
    "https://apklint.com/blog/firebase-app-check-flutter/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-app-check-enforcement/",
   "title": "Enable App Check Enforcement After Measuring Real Traffic",
   "description": "Enable App Check enforcement after measuring legitimate traffic and validating supported release paths.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-app-check-debug-provider/",
    "https://apklint.com/blog/firebase-app-check-pricing/",
    "https://apklint.com/blog/firebase-app-check-flutter/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-config-api-key-security/",
   "title": "Firebase Config and API Keys: Public Identifiers vs Real Access Controls",
   "description": "Firebase API keys generally identify a project for supported client APIs; they are not a substitute for authentication or authorization.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-ktx-migration/",
    "https://apklint.com/blog/firebase-security-rules-audit/",
    "https://apklint.com/blog/firebase-x-appcheck-header/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-google-services-json/",
   "title": "google-services.json: Package Matching, Build Variants and Safe Handling",
   "description": "google-services.json is processed during the Android build to select Firebase configuration for the app.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-google-sign-in/",
    "https://apklint.com/blog/play-integrity-dependency/",
    "https://apklint.com/blog/android-app-attestation/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-security-rules-audit/",
   "title": "Audit Firebase Security Rules Separately from the APK",
   "description": "A Firebase Security Rules audit should start from the data operations each user is allowed to perform.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-ktx-migration/",
    "https://apklint.com/blog/firebase-x-appcheck-header/",
    "https://apklint.com/blog/firebase-android-setup/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/crashlytics-missing-crash-reports/",
   "title": "Crashlytics Not Reporting: Diagnose the Delivery Path",
   "description": "When Crashlytics does not show a crash, diagnose the delivery path before reinstalling libraries repeatedly.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/crashlytics-mapping-file/",
    "https://apklint.com/blog/firebase-crashlytics-gradle/",
    "https://apklint.com/blog/firebase-crashlytics-dependency/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/crashlytics-mapping-file/",
   "title": "Crashlytics Mapping Files: Match the Exact Release Variant",
   "description": "Crashlytics needs the R8 mapping associated with the exact release to reconstruct obfuscated Java/Kotlin frames.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-crashlytics-gradle/",
    "https://apklint.com/blog/crashlytics-missing-crash-reports/",
    "https://apklint.com/blog/firebase-crashlytics-dependency/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-integrity-standard-request/",
   "title": "Play Integrity Standard Requests: Bind Verdicts to Server-Side Actions",
   "description": "A Play Integrity standard request should be tied to the server-side action being protected.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-integrity-verdicts/",
    "https://apklint.com/blog/play-integrity-android/",
    "https://apklint.com/blog/play-integrity-dependency/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/firebase-ktx-migration/",
   "title": "Firebase KTX Migration: Main Modules After BoM 34",
   "description": "Firebase stopped releasing separate Android KTX modules in July 2025 and removed them from BoM 34.0.0.",
   "category": "Firebase & App Integrity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/firebase-security-rules-audit/",
    "https://apklint.com/blog/firebase-x-appcheck-header/",
    "https://apklint.com/blog/firebase-android-setup/"
   ],
   "relatedTools": [
    "https://apklint.com/firebase-app-check-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/transaction-too-large-exception/",
   "title": "TransactionTooLargeException: Reduce Binder Payloads, Not Heap Usage",
   "description": "TransactionTooLargeException usually points to an oversized Binder transaction, such as a large saved-state bundle or intent payload.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-out-of-memory/",
    "https://apklint.com/blog/android-securityexception/",
    "https://apklint.com/blog/android-activitynotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-null-pointer-exception/",
   "title": "Android NullPointerException: Read the Throw Site and Restore the Missing State",
   "description": "An Android NullPointerException is a failed assumption about a value at a specific point in execution.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-out-of-memory/",
    "https://apklint.com/blog/android-securityexception/",
    "https://apklint.com/blog/android-activitynotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-crash-reports/",
   "title": "Android Crash Reports: Capture a Useful Trace Without Leaking User Data",
   "description": "A useful Android crash report identifies the exact build, failure and reproduction context without exposing the user's private data.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-out-of-memory/",
    "https://apklint.com/blog/android-securityexception/",
    "https://apklint.com/blog/android-activitynotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-network-profiler/",
   "title": "Android Studio Network Profiler: What It Captures and What It Misses",
   "description": "The Android Studio feature often searched as “Network Profiler” is documented as Network Inspector .",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-jank-rendering/",
    "https://apklint.com/blog/android-macrobenchmark/",
    "https://apklint.com/blog/android-cold-start/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-performance-testing/",
   "title": "Android Performance Testing: A Repeatable Device Matrix",
   "description": "Android performance testing needs a repeatable workload and device matrix.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-performance-optimization/",
    "https://apklint.com/blog/android-battery-drain/",
    "https://apklint.com/blog/android-jank-rendering/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-check-memory-usage/",
   "title": "Check Android App Memory Usage: PSS, Heap and Allocation Are Different",
   "description": "Measure Android app memory with a defined workload. Distinguish heap allocations, process memory, leaks and out-of-memory failures.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-memory-leaks/",
    "https://apklint.com/blog/android-battery-drain/",
    "https://apklint.com/blog/android-jank-rendering/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-performance-monitoring/",
   "title": "Android Performance Monitoring: Combine Field Metrics with Local Traces",
   "description": "Production monitoring and local profiling answer different questions.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-vitals-anr-rate/",
    "https://apklint.com/blog/android-vitals-crash-rate/",
    "https://apklint.com/blog/android-performance-optimization/"
   ],
   "relatedTools": [
    "https://apklint.com/android-vitals/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-performance-optimization/",
   "title": "Optimize Android App Performance by Fixing the Bottleneck",
   "description": "Optimize the measured bottleneck, not the most fashionable part of the stack.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-performance-testing/",
    "https://apklint.com/blog/android-battery-drain/",
    "https://apklint.com/blog/android-jank-rendering/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-anr-debugging/",
   "title": "Debug Android ANRs: Start with the Blocked Main Thread",
   "description": "An Android ANR indicates that a component failed to respond within a system-defined expectation.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-out-of-memory/",
    "https://apklint.com/blog/android-securityexception/",
    "https://apklint.com/blog/android-activitynotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-cold-start/",
   "title": "Android Cold Start: Separate Time to Initial Display from Fully Drawn",
   "description": "Cold-start optimization should distinguish time to the first displayed frame from time to a genuinely usable screen.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-jank-rendering/",
    "https://apklint.com/blog/android-macrobenchmark/",
    "https://apklint.com/blog/android-baseline-profiles/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-baseline-profiles/",
   "title": "Android Baseline Profiles: Accelerate Critical Paths, Then Benchmark",
   "description": "Baseline Profiles identify important code paths so supported Android runtime compilation can improve execution of those paths.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-jank-rendering/",
    "https://apklint.com/blog/android-macrobenchmark/",
    "https://apklint.com/blog/android-cold-start/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-jank-rendering/",
   "title": "Android Jank: Find the Long Frame Before Changing Layouts",
   "description": "Jank is a missed frame deadline, not simply a large layout file.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-macrobenchmark/",
    "https://apklint.com/blog/android-baseline-profiles/",
    "https://apklint.com/blog/android-cold-start/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-memory-leaks/",
   "title": "Find Android Memory Leaks by Following Retained References",
   "description": "A memory leak exists when an object remains reachable longer than its intended lifetime.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-check-memory-usage/",
    "https://apklint.com/blog/android-jank-rendering/",
    "https://apklint.com/blog/android-macrobenchmark/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-out-of-memory/",
   "title": "Android OutOfMemoryError: Diagnose Allocation Pressure and Retention",
   "description": "An OutOfMemoryError can result from a large single allocation, excessive temporary allocation or objects retained too long.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-securityexception/",
    "https://apklint.com/blog/android-activitynotfoundexception/",
    "https://apklint.com/blog/network-on-main-thread/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-battery-drain/",
   "title": "Investigate Android Battery Drain with Real Evidence",
   "description": "Android battery drain is often the accumulated cost of work that runs too frequently or continues after it is useful.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-performance-optimization/",
    "https://apklint.com/blog/android-check-memory-usage/",
    "https://apklint.com/blog/android-performance-testing/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-vitals-crash-rate/",
   "title": "Android Vitals Crash Rate: Read the Metric Population Before Prioritizing",
   "description": "Android vitals crash rates and a third-party crash dashboard can differ because their populations and denominators differ.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-vitals-anr-rate/",
    "https://apklint.com/blog/android-performance-monitoring/",
    "https://apklint.com/blog/android-crash-reports/"
   ],
   "relatedTools": [
    "https://apklint.com/android-vitals/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-vitals-anr-rate/",
   "title": "Android Vitals ANR Rate: Why Local Success Does Not Clear a Release",
   "description": "A release that does not freeze on your test phone can still have a high ANR rate in the field.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-vitals-crash-rate/",
    "https://apklint.com/blog/android-performance-monitoring/",
    "https://apklint.com/blog/android-anr-debugging/"
   ],
   "relatedTools": [
    "https://apklint.com/android-vitals/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-logcat-filtering/",
   "title": "Filter Android Logcat Without Losing the Cause",
   "description": "Logcat filtering should remove noise without deleting the event that explains the failure.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-securityexception/",
    "https://apklint.com/blog/android-activitynotfoundexception/",
    "https://apklint.com/blog/network-on-main-thread/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-securityexception/",
   "title": "Android SecurityException: Match the Permission, UID and API Contract",
   "description": "SecurityException means an operation violated an access or security contract.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-activitynotfoundexception/",
    "https://apklint.com/blog/network-on-main-thread/",
    "https://apklint.com/blog/android-classnotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-activitynotfoundexception/",
   "title": "ActivityNotFoundException: Resolve the Intent and Provide a Fallback",
   "description": "ActivityNotFoundException occurs when an intent cannot be handled as requested.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-securityexception/",
    "https://apklint.com/blog/network-on-main-thread/",
    "https://apklint.com/blog/android-classnotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/network-on-main-thread/",
   "title": "NetworkOnMainThreadException: Move Blocking Work Off the UI Thread",
   "description": "NetworkOnMainThreadException points to a blocking network operation on the UI thread under Android's applicable checks.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-activitynotfoundexception/",
    "https://apklint.com/blog/android-classnotfoundexception/",
    "https://apklint.com/blog/android-securityexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-classnotfoundexception/",
   "title": "Android ClassNotFoundException: Check Packaging, Loading and Shrinking",
   "description": "ClassNotFoundException means a loader could not find a requested class by name.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/network-on-main-thread/",
    "https://apklint.com/blog/android-nosuchmethoderror/",
    "https://apklint.com/blog/android-activitynotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-nosuchmethoderror/",
   "title": "NoSuchMethodError on Android: Binary Dependency Mismatches",
   "description": "NoSuchMethodError usually indicates a binary compatibility mismatch: compiled code calls a method that the runtime class definition does not provide.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-classnotfoundexception/",
    "https://apklint.com/blog/network-on-main-thread/",
    "https://apklint.com/blog/android-activitynotfoundexception/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-macrobenchmark/",
   "title": "Android Macrobenchmark: Compare Releases Without Debug-Build Noise",
   "description": "Macrobenchmark measures larger Android interactions such as startup and scrolling against a target app.",
   "category": "Performance & Crash Debugging",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-jank-rendering/",
    "https://apklint.com/blog/android-baseline-profiles/",
    "https://apklint.com/blog/android-cold-start/"
   ],
   "relatedTools": [
    "https://apklint.com/android-app-performance-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-security-best-practices/",
   "title": "Flutter Security Best Practices: The APK Is No Secret Store",
   "description": "A Flutter APK is a distributable client, not a secret vault.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-dart-obfuscation/",
    "https://apklint.com/blog/decompile-flutter-apk/",
    "https://apklint.com/blog/flutter-build-apk-vs-appbundle/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-flutter-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/decompile-flutter-apk/",
   "title": "Decompile a Flutter APK: Native Structure, Dart AOT and Recovery Limits",
   "description": "A Flutter release APK commonly contains compiled Dart application code and the Flutter engine alongside ordinary Android components.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-build-apk-vs-appbundle/",
    "https://apklint.com/blog/flutter-dart-obfuscation/",
    "https://apklint.com/blog/flutter-security-best-practices/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-flutter-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-min-sdk/",
   "title": "Set Flutter minSdk Without Confusing It with targetSdk",
   "description": "Flutter's minSdk determines the oldest Android platform the app supports.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-dart-obfuscation/",
    "https://apklint.com/blog/decompile-flutter-apk/",
    "https://apklint.com/blog/flutter-build-apk-vs-appbundle/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-target-sdk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-play-store-release/",
   "title": "Publish a Flutter App to Google Play: Release Identity and Testing",
   "description": "Publishing a Flutter app to Google Play requires more than generating an AAB.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-dart-obfuscation/",
    "https://apklint.com/blog/decompile-flutter-apk/",
    "https://apklint.com/blog/flutter-build-apk-vs-appbundle/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-flutter-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-vs-native-performance/",
   "title": "Flutter vs Native Performance: Compare the Workload, Not Framework Labels",
   "description": "Flutter versus native performance is a workload comparison, not a single framework ranking.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-dart-obfuscation/",
    "https://apklint.com/blog/decompile-flutter-apk/",
    "https://apklint.com/blog/flutter-build-apk-vs-appbundle/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-flutter-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-apk-size/",
   "title": "Reduce Flutter APK Size with a Real Size Analysis",
   "description": "Measure Flutter app size using a release build and a defined distribution target.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-apk-size/",
    "https://apklint.com/blog/react-native-apk-size/",
    "https://apklint.com/blog/reduce-apk-size/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-size-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-dart-obfuscation/",
   "title": "Flutter Dart Obfuscation: Preserve Symbols and Understand Its Limits",
   "description": "Flutter Dart obfuscation renames symbols in supported release outputs.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-build-apk-vs-appbundle/",
    "https://apklint.com/blog/decompile-flutter-apk/",
    "https://apklint.com/blog/flutter-vs-native-performance/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-flutter-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-build-apk-vs-appbundle/",
   "title": "flutter build apk vs appbundle: Pick the Output for the Distribution Channel",
   "description": "Use a Flutter APK when you need an installable Android package for an appropriate distribution or test workflow.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/decompile-flutter-apk/",
    "https://apklint.com/blog/flutter-dart-obfuscation/",
    "https://apklint.com/blog/flutter-vs-native-performance/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-flutter-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/flutter-android-build-failure/",
   "title": "Flutter Android Build Failures: Diagnose the Underlying Gradle Error",
   "description": "A Flutter Android build failure often ends with a generic Gradle message while the actual cause appears earlier.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-gradle-build-failed/",
    "https://apklint.com/blog/flutter-dart-obfuscation/",
    "https://apklint.com/blog/flutter-build-apk-vs-appbundle/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-build-apk/",
   "title": "Build a React Native Release APK and Verify the Bundle",
   "description": "A React Native release APK must contain the JavaScript or Hermes bytecode and assets needed to run without the development server.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/react-native-expo-apk/",
    "https://apklint.com/blog/react-native-hermes-apk/",
    "https://apklint.com/blog/react-native-assemble-release/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-assemble-release/",
   "title": "React Native assembleRelease: Variant Output, Signing and Install Checks",
   "description": "assembleRelease is an Android Gradle task that assembles a release APK for the relevant module.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/react-native-hermes-apk/",
    "https://apklint.com/blog/react-native-android-widget/",
    "https://apklint.com/blog/react-native-build-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-expo-apk/",
   "title": "Build an Expo Android APK for Device Testing with EAS",
   "description": "EAS Build normally targets an Android App Bundle for store distribution.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/react-native-build-apk/",
    "https://apklint.com/blog/react-native-hermes-apk/",
    "https://apklint.com/blog/react-native-assemble-release/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/expo-google-play-submit/",
   "title": "Submit an Expo App to Google Play the Right Way",
   "description": "EAS Submit uploads an Android build to Google Play using the configured submission workflow.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/react-native-play-store-release/",
    "https://apklint.com/blog/react-native-expo-apk/",
    "https://apklint.com/blog/react-native-assemble-release/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-play-store-release/",
   "title": "Publish a Bare React Native App to Google Play",
   "description": "Publishing a bare React Native app requires a reproducible Android release, correct signing and a tested Play-delivered installation.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/expo-google-play-submit/",
    "https://apklint.com/blog/react-native-hermes-apk/",
    "https://apklint.com/blog/react-native-android-widget/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-android-widget/",
   "title": "React Native Android Widgets: Native Host, Shared Data and Update Limits",
   "description": "An Android home-screen widget is hosted by the Android launcher and follows native widget constraints.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/react-native-hermes-apk/",
    "https://apklint.com/blog/react-native-assemble-release/",
    "https://apklint.com/blog/react-native-expo-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-hermes-apk/",
   "title": "Inspect a React Native APK with Hermes: Bytecode Is Not Original Source",
   "description": "A React Native APK using Hermes can contain precompiled JavaScript bytecode rather than readable original JavaScript.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/react-native-android-widget/",
    "https://apklint.com/blog/react-native-assemble-release/",
    "https://apklint.com/blog/react-native-expo-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-react-native-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-apk-size/",
   "title": "Reduce React Native Android Size Without Removing ABIs",
   "description": "React Native APK size includes the JavaScript bundle, native engine, native modules, Android resources and assets.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-apk-size/",
    "https://apklint.com/blog/flutter-apk-size/",
    "https://apklint.com/blog/react-native-expo-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-size-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/react-native-native-module-crash/",
   "title": "React Native Native-Module Crashes: Follow the Exception",
   "description": "Trace React Native module crashes through Android exceptions, JNI boundaries and native dependencies using the actual failing release.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-release-crash-symbols/",
    "https://apklint.com/blog/react-native-android-widget/",
    "https://apklint.com/blog/react-native-hermes-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/expo-android-credentials/",
   "title": "Expo Android Credentials: Match EAS Upload Keys to Play App Signing",
   "description": "Expo Android credentials and Google Play App Signing must agree on the upload identity for an existing app.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-android-16kb/",
    "https://apklint.com/blog/unity-release-crash-symbols/",
    "https://apklint.com/blog/react-native-native-module-crash/"
   ],
   "relatedTools": [
    "https://apklint.com/android-signing-certificate/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-build-android-apk/",
   "title": "Build a Unity Android APK: Choose the Backend, Architecture and Signing",
   "description": "A Unity Android APK is defined by more than the Build button: scripting backend, architectures, scenes, package identity and signing all affect the result.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/decompile-unity-apk/",
    "https://apklint.com/blog/apk-to-unity-project/",
    "https://apklint.com/blog/unity-il2cpp-vs-mono/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-unity-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-gradle-build-failed/",
   "title": "Unity Gradle Build Failed: Find the First Error",
   "description": "“Gradle build failed” is usually Unity's final wrapper message, not the root cause.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-android-build-failure/",
    "https://apklint.com/blog/unity-build-android-apk/",
    "https://apklint.com/blog/decompile-unity-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/gradle-lint/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/decompile-unity-apk/",
   "title": "Decompile a Unity APK: Mono vs IL2CPP Recovery",
   "description": "Unity APK analysis depends strongly on the scripting backend.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-to-unity-project/",
    "https://apklint.com/blog/unity-il2cpp-vs-mono/",
    "https://apklint.com/blog/unity-build-android-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-unity-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/apk-to-unity-project/",
   "title": "APK to Unity Project: Why Extracted Assets Do Not Restore the Editor Project",
   "description": "An APK is a deployment artifact, not a Unity project backup.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/decompile-unity-apk/",
    "https://apklint.com/blog/unity-il2cpp-vs-mono/",
    "https://apklint.com/blog/unity-build-android-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-unity-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-apk-size/",
   "title": "Reduce Unity Android Build Size with Real Evidence",
   "description": "Unity Android size optimization starts with the build report and packaged contributors, not a blanket instruction to lower every quality setting.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/flutter-apk-size/",
    "https://apklint.com/blog/react-native-apk-size/",
    "https://apklint.com/blog/reduce-apk-size/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-size-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-il2cpp-vs-mono/",
   "title": "Unity IL2CPP vs Mono on Android: Build Artifacts and Diagnostic Tradeoffs",
   "description": "Unity's Mono and IL2CPP backends produce different runtime artifacts and debugging workflows.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/apk-to-unity-project/",
    "https://apklint.com/blog/decompile-unity-apk/",
    "https://apklint.com/blog/unity-build-android-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-unity-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-managed-stripping/",
   "title": "Unity Managed Stripping: Keep Reflective Entry Points Without Disabling Everything",
   "description": "Unity managed stripping removes code the linker considers unreachable.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-il2cpp-vs-mono/",
    "https://apklint.com/blog/apk-to-unity-project/",
    "https://apklint.com/blog/decompile-unity-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-unity-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-play-asset-delivery/",
   "title": "Unity Play Asset Delivery: Separate Game Assets from the Base Module",
   "description": "Play Asset Delivery separates game assets from the base install and supports documented delivery modes.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-managed-stripping/",
    "https://apklint.com/blog/unity-il2cpp-vs-mono/",
    "https://apklint.com/blog/apk-to-unity-project/"
   ],
   "relatedTools": [
    "https://apklint.com/decompile-unity-apk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-android-16kb/",
   "title": "Unity Android 16 KB Page Sizes: Check Engine and Native Plugins Together",
   "description": "Unity Android 16 KB page-size compatibility depends on the engine and every packaged native library, including third-party plugins.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/unity-release-crash-symbols/",
    "https://apklint.com/blog/unity-build-android-apk/",
    "https://apklint.com/blog/unity-managed-stripping/"
   ],
   "relatedTools": [
    "https://apklint.com/apk-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/unity-release-crash-symbols/",
   "title": "Unity Android Release Crashes: Keep Native Symbols for the Exact Build",
   "description": "A Unity Android release crash needs symbols from the exact native build to turn addresses into useful locations.",
   "category": "Flutter, React Native & Unity",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/react-native-native-module-crash/",
    "https://apklint.com/blog/unity-android-16kb/",
    "https://apklint.com/blog/unity-build-android-apk/"
   ],
   "relatedTools": [
    "https://apklint.com/android-crash-dump-analysis/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/compile-sdk-version/",
   "title": "compileSdk Explained: Compile-Time APIs Are Not Your Minimum Android Version",
   "description": "compileSdk chooses the Android API definitions available while compiling an app.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/target-sdk-behavior-changes/",
    "https://apklint.com/blog/play-target-api-requirements/",
    "https://apklint.com/blog/min-sdk-google-play/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-target-sdk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-target-api-requirements/",
   "title": "Google Play Target API Requirements: September 2026",
   "description": "As checked on 22 September 2026 , Google Play's standard new-app and app-update requirement is Android 16 / API 36 , effective 31 August 2026 .",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/compile-sdk-version/",
    "https://apklint.com/blog/target-sdk-behavior-changes/",
    "https://apklint.com/blog/play-screenshot-requirements/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-target-sdk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/min-sdk-google-play/",
   "title": "Google Play and minSdk: Device Availability Is Not the Target-API Deadline",
   "description": "Separate Android minimum-SDK compatibility from Google Play target-API submission requirements when planning a release.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/phone-not-compatible-app/",
    "https://apklint.com/blog/android-app-compatibility-testing/",
    "https://apklint.com/blog/compile-sdk-version/"
   ],
   "relatedTools": [
    "https://apklint.com/min-sdk-compatibility-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/target-sdk-behavior-changes/",
   "title": "targetSdkVersion: Audit Behavior Changes Before Raising the Number",
   "description": "Increasing targetSdkVersion is a behavior migration, not only a manifest edit.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/compile-sdk-version/",
    "https://apklint.com/blog/play-target-api-requirements/",
    "https://apklint.com/blog/android-app-compatibility-testing/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-target-sdk/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/phone-not-compatible-app/",
   "title": "“Phone Not Compatible with App”: Separate SDK, Hardware and Store Filters",
   "description": "“Phone not compatible with app” is a symptom, not a diagnosis.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-app-compatibility-testing/",
    "https://apklint.com/blog/min-sdk-google-play/",
    "https://apklint.com/blog/android-app-launch-checklist/"
   ],
   "relatedTools": [
    "https://apklint.com/min-sdk-compatibility-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-app-compatibility-testing/",
   "title": "Android App Compatibility Testing: Go Beyond minSdk",
   "description": "Android compatibility testing should answer whether the app's important tasks work across the devices you claim to support.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/phone-not-compatible-app/",
    "https://apklint.com/blog/min-sdk-google-play/",
    "https://apklint.com/blog/target-sdk-behavior-changes/"
   ],
   "relatedTools": [
    "https://apklint.com/min-sdk-compatibility-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-data-safety/",
   "title": "Complete Google Play Data Safety from Actual Data Flows",
   "description": "Google Play Data Safety is a declaration of what your app and its included SDKs actually do with user data.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-data-safety-sdk-disclosures/",
    "https://apklint.com/blog/play-screenshot-requirements/",
    "https://apklint.com/blog/play-account-suspended/"
   ],
   "relatedTools": [
    "https://apklint.com/data-safety-play-console/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-privacy-policy-url/",
   "title": "Add a Google Play Privacy Policy URL That Matches the App",
   "description": "A Google Play privacy policy URL must lead reviewers and users to a readable policy for the actual app.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/play-families-policy/",
    "https://apklint.com/blog/play-developer-identity-verification/"
   ],
   "relatedTools": [
    "https://apklint.com/privacy-policy-generator-free/",
    "https://apklint.com/android-game-privacy-policy/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-developer-identity-verification/",
   "title": "Google Play Developer Identity Verification: Match the Account Evidence",
   "description": "Google Play developer verification concerns the real person or organization responsible for the account.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/remove-app-play-console/",
    "https://apklint.com/blog/play-account-deletion/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-developer-verification-2026/",
   "title": "Android Developer Verification in September 2026: Scope and Rollout Dates",
   "description": "Android developer verification has a staged rollout.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-developer-policies/",
    "https://apklint.com/blog/play-developer-identity-verification/",
    "https://apklint.com/blog/remove-app-play-console/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-screenshot-requirements/",
   "title": "Google Play Screenshot Requirements: Build a Device-Specific Asset Checklist",
   "description": "Google Play screenshot requirements depend on the device type and on whether you mean basic listing acceptance or eligibility for promotional placements.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-closed-testing-requirements/",
    "https://apklint.com/blog/play-target-api-requirements/",
    "https://apklint.com/blog/play-account-suspended/"
   ],
   "relatedTools": [
    "https://apklint.com/app-store-optimization-tool/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-age-content-ratings/",
   "title": "Google Play Age Ratings: Complete the Questionnaire for the Actual Content",
   "description": "Google Play content ratings are calculated from the questionnaire about the app's actual content and features.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-families-policy/",
    "https://apklint.com/blog/play-screenshot-requirements/",
    "https://apklint.com/blog/play-account-suspended/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-families-policy/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-account-suspended/",
   "title": "Google Play Account Suspended: Build an Evidence Appeal",
   "description": "An app rejection, an app suspension and a developer-account termination are different enforcement actions.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-review-app-access/",
    "https://apklint.com/blog/play-policy-violation-response/",
    "https://apklint.com/blog/play-account-deletion/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-app-rejected/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/remove-app-play-console/",
   "title": "Remove an App from Google Play: Unpublish vs Delete vs Remove a Release",
   "description": "Removing an app from Google Play can mean stopping new downloads, discarding a draft release or deleting an eligible app record.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/play-developer-identity-verification/",
    "https://apklint.com/blog/play-store-submission-requirements/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/delete-app-bundle-play-console/",
   "title": "Delete an App Bundle in Play Console: Release State and Version-Code Limits",
   "description": "Removing an Android App Bundle from a release is not the same as erasing its uploaded history. Play Console tracks artifacts, version codes and release states.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/remove-app-play-console/",
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/play-review-app-access/"
   ],
   "relatedTools": [
    "https://apklint.com/aab-analyzer/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-developer-policies/",
   "title": "Google Play Developer Policies: Maintain a Product-Level Compliance Register",
   "description": "A useful Google Play policy process ties each requirement to a real app feature and an accountable owner.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/play-account-deletion/",
    "https://apklint.com/blog/play-sensitive-permission-declaration/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-policy-violation-response/",
   "title": "“Not Adhering to Developer Policies”: Turn the Notice into a Reproducible Fix",
   "description": "“Not adhering to Google Play developer policies” is too broad to fix by changing random permissions.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-account-suspended/",
    "https://apklint.com/blog/play-review-app-access/",
    "https://apklint.com/blog/play-developer-policies/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-app-rejected/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-policy-status-workflow/",
   "title": "Play Console Policy Status: Track Issues by App, Release and Deadline",
   "description": "Play Console's Policy status is a work queue, not a universal health certificate.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-developer-identity-verification/",
    "https://apklint.com/blog/remove-app-play-console/",
    "https://apklint.com/blog/play-account-deletion/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-app-launch-checklist/",
   "title": "Android App Launch Checklist: Artifacts, Access, Policy and Rollback",
   "description": "An Android launch checklist should make a release recoverable, not merely uploadable.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-closed-testing-requirements/",
    "https://apklint.com/blog/play-staged-rollout/",
    "https://apklint.com/blog/android-app-compatibility-testing/"
   ],
   "relatedTools": [
    "https://apklint.com/app-launch-checklist/",
    "https://apklint.com/android-release-checklist/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-store-submission-requirements/",
   "title": "Google Play Submission Requirements for a Review-Ready App",
   "description": "A Google Play submission includes more than a signed bundle.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/submit-android-app-play/",
    "https://apklint.com/blog/remove-app-play-console/",
    "https://apklint.com/blog/play-policy-status-workflow/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/submit-android-app-play/",
   "title": "Submit an Android App to Google Play Without Skipping Gates",
   "description": "Prepare a Google Play submission by completing the app record, required content and release checks before submitting changes for review.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-store-submission-requirements/",
    "https://apklint.com/blog/remove-app-play-console/",
    "https://apklint.com/blog/play-policy-status-workflow/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-closed-testing-requirements/",
   "title": "Google Play Closed Testing Requirements for New Accounts",
   "description": "Check Google Play’s closed-testing eligibility rules, continuous tester participation and the application for production access.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-staged-rollout/",
    "https://apklint.com/blog/android-app-launch-checklist/",
    "https://apklint.com/blog/play-screenshot-requirements/"
   ],
   "relatedTools": [
    "https://apklint.com/android-release-checklist/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-data-safety-sdk-disclosures/",
   "title": "Third-Party SDKs in Data Safety: Reconcile Code, Configuration and Disclosures",
   "description": "Third-party SDK disclosures must be reconciled with the SDK versions and settings inside your actual app.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-data-safety/",
    "https://apklint.com/blog/target-sdk-behavior-changes/",
    "https://apklint.com/blog/android-developer-verification-2026/"
   ],
   "relatedTools": [
    "https://apklint.com/data-safety-play-console/",
    "https://apklint.com/google-play-sdk-index/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-account-deletion/",
   "title": "Google Play Account Deletion: App Flow, Web Link and Retention Disclosure",
   "description": "For apps within Google Play's account-creation policy scope, account deletion needs a discoverable request path and an external web resource.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-sensitive-permission-declaration/",
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/play-developer-policies/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-families-policy/",
   "title": "Google Play Families Policy: Audience, SDKs, Ads and Data",
   "description": "Google Play Families requirements depend on the app's actual audience and experience, not whether the developer selected an adult age group to avoid extra work.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-age-content-ratings/",
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/play-privacy-policy-url/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-families-policy/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-sensitive-permission-declaration/",
   "title": "Play Permission Declarations: Prove the Core Functionality",
   "description": "A sensitive permission declaration should demonstrate why the app's core functionality requires that access and why a narrower alternative is insufficient.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-account-deletion/",
    "https://apklint.com/blog/play-policy-status-workflow/",
    "https://apklint.com/blog/play-developer-policies/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-developer-policies/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-staged-rollout/",
   "title": "Use a Google Play Staged Rollout with Stop Conditions",
   "description": "A staged rollout limits how quickly an update reaches eligible users; it does not make a faulty release harmless.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-closed-testing-requirements/",
    "https://apklint.com/blog/android-app-launch-checklist/",
    "https://apklint.com/blog/play-sensitive-permission-declaration/"
   ],
   "relatedTools": [
    "https://apklint.com/android-release-checklist/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-review-app-access/",
   "title": "Give Google Play Reviewers Working App Access",
   "description": "Google Play reviewers need reliable access to every restricted part of the app.",
   "category": "Google Play Publishing",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-account-suspended/",
    "https://apklint.com/blog/play-policy-violation-response/",
    "https://apklint.com/blog/delete-app-bundle-play-console/"
   ],
   "relatedTools": [
    "https://apklint.com/google-play-app-rejected/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/ad-id-manifest-permission/",
   "title": "AD_ID in AndroidManifest.xml: Declaration, SDK Merging and Play Disclosure",
   "description": "com.google.android.gms.permission.AD_ID is a manifest declaration associated with access to Android's advertising ID.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-advertising-id/",
    "https://apklint.com/blog/admob-android-integration/",
    "https://apklint.com/blog/admob-ump-consent/"
   ],
   "relatedTools": [
    "https://apklint.com/admob-advertising-id/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-advertising-id/",
   "title": "Android Advertising ID: Availability, Resets, Permitted Use",
   "description": "Android's advertising ID is a user-resettable advertising identifier, not a durable account key.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/ad-id-manifest-permission/",
    "https://apklint.com/blog/admob-android-integration/",
    "https://apklint.com/blog/admob-ump-consent/"
   ],
   "relatedTools": [
    "https://apklint.com/admob-advertising-id/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/admob-android-integration/",
   "title": "AdMob Android Integration: Keep Legacy and Next-Gen SDK Instructions Separate",
   "description": "Google's current Android documentation separates the Google Mobile Ads SDK (Legacy) from the GMA Next-Gen SDK .",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/admob-ump-consent/",
    "https://apklint.com/blog/android-advertising-id/",
    "https://apklint.com/blog/admob-test-app-id/"
   ],
   "relatedTools": [
    "https://apklint.com/admob-advertising-id/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/admob-test-app-id/",
   "title": "AdMob Test App ID vs Ad Unit ID: The Tilde-Slash Mix-Up",
   "description": "An AdMob app ID identifies the application in the SDK setup. An ad-unit ID identifies a placement and format.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/admob-test-banner-id/",
    "https://apklint.com/blog/admob-android-integration/",
    "https://apklint.com/blog/admob-ump-consent/"
   ],
   "relatedTools": [
    "https://apklint.com/admob-advertising-id/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/admob-test-banner-id/",
   "title": "AdMob Banner Test IDs: Select the Correct Format and Never Click Live Ads",
   "description": "Use Google's official demo ad units or configured test devices when testing banners. A working banner is not permission to click live ads repeatedly.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/admob-test-app-id/",
    "https://apklint.com/blog/admob-android-integration/",
    "https://apklint.com/blog/admob-ump-consent/"
   ],
   "relatedTools": [
    "https://apklint.com/admob-advertising-id/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/admob-mediation-android/",
   "title": "AdMob Mediation on Android: Verify Adapters, Consent and Test Coverage",
   "description": "AdMob mediation adds more than an extra dependency.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/admob-ad-inspector/",
    "https://apklint.com/blog/google-mobile-ads-unity/",
    "https://apklint.com/blog/mobile-ads-sdk-audit/"
   ],
   "relatedTools": [
    "https://apklint.com/ad-sdk-tracker-detector/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/google-mobile-ads-unity/",
   "title": "Google Mobile Ads in Unity: Plugin, Android Dependencies and Test Ads",
   "description": "Google Mobile Ads in Unity has two layers: the C# plugin and the native Android dependencies resolved into the exported build.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/mobile-ads-sdk-audit/",
    "https://apklint.com/blog/admob-mediation-android/",
    "https://apklint.com/blog/admob-ad-inspector/"
   ],
   "relatedTools": [
    "https://apklint.com/ad-sdk-tracker-detector/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/mobile-ads-sdk-audit/",
   "title": "Mobile Ads SDK Audit: Versions, Collection, Adapters",
   "description": "A mobile ads SDK audit should identify what ships, when it starts and what data or permissions it introduces.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/google-mobile-ads-unity/",
    "https://apklint.com/blog/admob-mediation-android/",
    "https://apklint.com/blog/admob-ad-inspector/"
   ],
   "relatedTools": [
    "https://apklint.com/ad-sdk-tracker-detector/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/admob-ump-consent/",
   "title": "AdMob UMP on Android: Refresh Consent and Gate Ad Requests Correctly",
   "description": "A correct Android UMP integration refreshes consent information and gates ad work using the SDK's current result.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/admob-android-integration/",
    "https://apklint.com/blog/admob-test-banner-id/",
    "https://apklint.com/blog/admob-test-app-id/"
   ],
   "relatedTools": [
    "https://apklint.com/admob-advertising-id/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/admob-data-safety/",
   "title": "AdMob Data Safety: Use SDK Disclosures and Your Actual Configuration",
   "description": "Map AdMob and mediation data flows to your Google Play Data Safety answers, including configured SDK behavior and consent choices.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/admob-ump-consent/",
    "https://apklint.com/blog/admob-ad-inspector/",
    "https://apklint.com/blog/admob-mediation-android/"
   ],
   "relatedTools": [
    "https://apklint.com/data-safety-play-console/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/admob-ad-inspector/",
   "title": "Ad Inspector: SDK Integration Issues vs Ad Availability",
   "description": "Ad Inspector helps investigate an ads integration, but it does not guarantee that a production request will receive an ad.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/admob-mediation-android/",
    "https://apklint.com/blog/mobile-ads-sdk-audit/",
    "https://apklint.com/blog/google-mobile-ads-unity/"
   ],
   "relatedTools": [
    "https://apklint.com/ad-sdk-tracker-detector/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/google-play-store-optimization/",
   "title": "Google Play Store Optimization: Improve Relevance and Conversion Without Stuffing",
   "description": "Google Play store optimization should improve how accurately the listing communicates the product and how confidently the right users choose it.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-listing-experiments/",
    "https://apklint.com/blog/play-title-short-description/",
    "https://apklint.com/blog/play-keyword-research/"
   ],
   "relatedTools": [
    "https://apklint.com/app-store-optimization-tool/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-title-short-description/",
   "title": "Google Play Title and Short Description: Write Within Limits and Match Intent",
   "description": "Google Play's current limits are 30 characters for the app name , 80 for the short description , and 4,000 for the full description .",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/google-play-store-optimization/",
    "https://apklint.com/blog/play-listing-experiments/",
    "https://apklint.com/blog/play-keyword-research/"
   ],
   "relatedTools": [
    "https://apklint.com/app-store-optimization-tool/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-keyword-research/",
   "title": "Google Play Keyword Research: Separate Store Search from Web Search Demand",
   "description": "Google Play keyword research and Google web keyword research measure different environments.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/play-title-short-description/",
    "https://apklint.com/blog/google-play-store-optimization/",
    "https://apklint.com/blog/play-listing-experiments/"
   ],
   "relatedTools": [
    "https://apklint.com/play-store-keyword-research/",
    "https://apklint.com/app-ranking-checker/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/play-listing-experiments/",
   "title": "Google Play Store Listing Experiments: Test a Hypothesis, Not Everything at Once",
   "description": "A Google Play store listing experiment should test a specific hypothesis about presentation.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/google-play-store-optimization/",
    "https://apklint.com/blog/play-title-short-description/",
    "https://apklint.com/blog/play-keyword-research/"
   ],
   "relatedTools": [
    "https://apklint.com/app-store-optimization-tool/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-accessibility-tools/",
   "title": "Android Accessibility Tools: Scanner to Manual Testing",
   "description": "No single Android accessibility tool can determine whether users can complete every important task.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-accessibility-testing/",
    "https://apklint.com/blog/android-touch-target-contrast/",
    "https://apklint.com/blog/play-keyword-research/"
   ],
   "relatedTools": [
    "https://apklint.com/accessibility-scanner-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-accessibility-testing/",
   "title": "Android Accessibility Testing: A Task-Based Checklist",
   "description": "An Android accessibility test plan should follow user tasks through success, error and recovery states.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-accessibility-tools/",
    "https://apklint.com/blog/android-touch-target-contrast/",
    "https://apklint.com/blog/admob-ump-consent/"
   ],
   "relatedTools": [
    "https://apklint.com/accessibility-scanner-android/"
   ]
  },
  {
   "type": "article",
   "url": "https://apklint.com/blog/android-touch-target-contrast/",
   "title": "Android Touch Targets and Contrast: Fix Interaction Barriers, Not Just Scores",
   "description": "A small icon can have a usable touch target, and a large-looking button can still be hard to activate.",
   "category": "Ads, ASO & Accessibility",
   "author": "APKLint",
   "inLanguage": "en",
   "dateModified": "2026-09-29",
   "relatedArticles": [
    "https://apklint.com/blog/android-accessibility-testing/",
    "https://apklint.com/blog/android-accessibility-tools/",
    "https://apklint.com/blog/admob-ump-consent/"
   ],
   "relatedTools": [
    "https://apklint.com/accessibility-scanner-android/"
   ]
  }
 ],
 "archiveResources": [
  {
   "type": "collection",
   "url": "https://apklint.com/blog/",
   "page": 1
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/2/",
   "page": 2
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/3/",
   "page": 3
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/4/",
   "page": 4
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/5/",
   "page": 5
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/6/",
   "page": 6
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/7/",
   "page": 7
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/8/",
   "page": 8
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/9/",
   "page": 9
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/10/",
   "page": 10
  },
  {
   "type": "collection",
   "url": "https://apklint.com/blog/page/11/",
   "page": 11
  }
 ],
 "guidePageCount": 11
}
