{
  "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": 61,
  "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. Its ZIP container holds compiled code, compiled resources, a manifest.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 the Results",
      "description": "Android Studio's APK Analyzer is most useful when you have a specific question: which dependency grew, why a native architecture is missing, or which.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "To check an APK file properly, separate three questions: what package is this, has its signed content been modified, and does its behavior create.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The download filename, store title and Java source namespace can all differ from the.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Blindly enabling every shrinking flag, recompressing the final APK or.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Cannot Safely Replace a Release Build",
      "description": "An APK size reducer should not be treated like an image compressor. APK entries participate in an installable, signed package with alignment and runtime.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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-22",
      "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-22",
      "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. Some visible graphics are PNG or WebP files, but others are vectors,.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Copy only the entries you need, preserve.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Do not assume there is only one base.apk: modern Play.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Split Support, Provenance and 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.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Its contents can include a base APK, configuration.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. An AAB is not an APK with a different extension, and its module manifests and resource.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. An Android App Bundle is a publishing artifact from which a distribution service or bundletool generates APKs.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Understanding the base.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Installing only the base file, or mixing splits from different versions, can produce missing-split,.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Compatibility in Native Libraries",
      "description": "Android 16 KB page-size compatibility is a native-binary and packaging question, not something solved by raising targetSdk alone. Apps that include native.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. An APK can include several DEX files, and their class inventory includes application code,.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Treat.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "Use JADX for Android Analysis Without Assuming Perfect Source Recovery",
      "description": "JADX is useful for understanding managed code and resources in an Android APK, but its output is a reconstruction. A method that looks like ordinary Java.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Decoding can be imperfect,.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not a general performance optimization and should not be enabled as a.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Choose the pattern that fits your.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Confusing them leads to reused Play version codes, blocked upgrades and.",
      "category": "APK & App Bundles",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Before Resetting",
      "description": "When Play Console says your Android App Bundle is signed with the wrong key, compare the expected upload certificate with the certificate used by the.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 the Output",
      "description": "Generating a signed APK requires choosing the correct application module, release variant and signing identity. A file called app-release.apk is not enough.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. These public defaults are for.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Without Generating the Wrong Key",
      "description": "There is no universal folder for an Android release keystore. The correct file is the one referenced by your authorized release configuration and.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The technical generation step.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The alias.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: App-Signing Keys, Upload Keys and Certificates",
      "description": "Play App Signing separates the key used to upload a release from the key used to sign APKs delivered to users. That separation improves operational.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Certificate Viewer",
      "description": "To verify an APK signature, use a tool that validates the signed package, such as Android's apksigner. Reading a certificate or detecting a v2 signing.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Correct Android Build",
      "description": "An Android certificate fingerprint identifies a signing certificate using a hash algorithm. SHA-1 and SHA-256 fingerprints of the same certificate look.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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”.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Google 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. The reset is an.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Compatibility Before Upgrading",
      "description": "Signing-key rotation is a planned identity transition, not simply replacing a keystore file. Android and Google Play provide mechanisms that can preserve.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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-22",
      "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 a Signing Keystore: Two Different Systems",
      "description": "Android Keystore API and an Android signing keystore are different systems. The runtime Keystore protects cryptographic keys used by an installed app. A.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A common design is to generate a Keystore-protected key.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Instead of Assuming It",
      "description": "A key generated through Android Keystore is not automatically guaranteed to be protected by the strongest hardware available on every device. Check the.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. JavaScript tooling does not remove the need for a stable upload credential, a correct release.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Without Losing User Data Blindly",
      "description": "INSTALL_FAILED_UPDATE_INCOMPATIBLE commonly indicates that the incoming package cannot update the installed app under its current identity, often because.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Alignment changes the APK's bytes; changing protected content after modern APK signing can invalidate the.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. They often.",
      "category": "Signing & App Identity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not a substitute for TLS, hostname validation or.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "android:usesCleartextTraffic=\"true\" permits cleartext traffic in participating Android network components; it does not encrypt HTTP or make an insecure.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "Build an Android Network Security Configuration with Narrow Trust Rules",
      "description": "An Android Network Security Configuration defines app-specific trust and cleartext policies declaratively. A useful configuration is small enough to.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Treating Zero Detections as Proof",
      "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.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Its detection count is a starting point for investigation, not a probability.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The goal of an initial triage is to produce testable observations: suspicious.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 and Cannot Tell You",
      "description": "Android static analysis covers several different activities: checking source code, inspecting a compiled APK and reviewing dependency metadata. Choosing.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 a Verifiable Scope",
      "description": "The most useful question when evaluating mobile security testing services is not “how many vulnerabilities will you find?” It is “what evidence will you.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Any Endpoint",
      "description": "An Android penetration test needs a written scope before anyone probes an app or its backend. The APK is only one part of the system: accounts, APIs, SDK.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "A mobile app security checklist is useful only when each item has evidence and an owner. “Encryption enabled” is too vague to close a review; naming the.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. For an Android app, use it to turn.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Risk Categories into Android Checks",
      "description": "The OWASP Mobile Top 10 is a risk-awareness resource. It helps teams discuss recurring classes of mobile security problems, but it is not a complete.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 OWASP Resource",
      "description": "MASVS, MASTG and the Mobile Top 10 answer different questions. MASVS helps define expected controls, MASTG helps test them, and the Mobile Top 10 helps.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Build Flags to Runtime Evidence",
      "description": "An Android APK security review should establish what actually shipped, then identify which observations need runtime or backend testing. A source-code.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Reproducible Analysis Notebook",
      "description": "Reverse engineering an APK you own is most productive when it starts with a narrow question: which dependency shipped, why a resource is missing, or what.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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-22",
      "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. Opening the archive,.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The important questions are what the credential authorizes, whether it is.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Intended Entry Points",
      "description": "An exported Android component is reachable from outside the app under the applicable platform rules. Exporting is sometimes necessary, but it should be a.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "A secure Android WebView starts with a narrow trust model: which content may load, which origins may interact with native code, and which navigation leaves.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Excluding a.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Library Name Detection",
      "description": "An SDK or tracker audit needs more than a list of library names. Identify the versions that ship, the features enabled, the data actually collected and the.",
      "category": "Security & Reverse Engineering",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Build 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.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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>. It allows network access under platform rules and does not.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 and Retry Handling",
      "description": "A runtime permission flow needs three outcomes: already granted, newly granted and denied. It also needs a useful fallback. Showing a permission dialog.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A manifest declaration describes intended access; a stored boolean describes.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Manifest Declarations vs Current Grants",
      "description": "To inspect app permissions, distinguish three things: permissions declared in the APK, permissions currently granted on a device, and operations the app.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "Build a 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. Counting permissions is not enough: one.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Declare the capability only when the feature genuinely needs an.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not a universal permission to obtain a phone.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Separate Calls, State and Call Logs",
      "description": "Android phone permissions are not one interchangeable group. Reading phone state, placing a call and accessing call logs have different purposes and.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not a general method for forcing an.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 “Run in Background” Permission",
      "description": "Android has no universal “run in background” permission that makes arbitrary work run forever. The correct implementation depends on what the work does,.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Are Not a Portable API",
      "description": "“Autostart permission” usually refers to a manufacturer-specific device setting, not one portable Android permission that every app can request. Treat it.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It protects sensitive system.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A storage permission does not.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Versions",
      "description": "Android external-storage permissions must be interpreted by device version, target SDK and the kind of data being accessed. Adding READ_EXTERNAL_STORAGE.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Decide whether the app needs a selected.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Declaring BIND_ACCESSIBILITY_SERVICE is part of protecting.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It can describe a denied runtime grant, a special-access setting, a privileged.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Request the relevant activity-recognition permission only when the app uses an API that requires.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 on Android: Permission, Channels and Delivery",
      "description": "On Android versions requiring POST_NOTIFICATIONS, notification delivery involves more than a manifest entry. The app's runtime permission, notification.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. For an attachment, avatar or one-off.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. First determine whether a picker, MediaStore or.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 and Explain the Core Feature",
      "description": "Background location is a separate, sensitive capability. Request it only when the app has a genuine feature that needs location while the user is not.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "An Android location feature should remain useful when the user grants approximate rather than precise location, unless precision is truly necessary for the.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Split the Version Paths",
      "description": "Bluetooth permissions on Android depend on the operation and platform version. Scanning, connecting and advertising are separate capabilities. A manifest.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A video recorder may need.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Most deferrable synchronization and maintenance tasks should not.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Actual 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. Choose the type,.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is separate from whether an intent can.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The merger error is usually telling you.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Setting every affected.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A Gradle build type named release or a filename containing “production” is not.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Verified Android App Links help associate a web domain with an app, but they do not authorize a user.",
      "category": "Manifest & Permissions",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. In an Android.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Explain What Entered Your Build",
      "description": "A transitive dependency enters your build because another dependency requires it. Removing a direct declaration does not necessarily remove the library.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Read the tree for a specific configuration; a.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Find the first actionable.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Before inventing task names,.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. AGP, Gradle, the build JDK, Kotlin integration.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. As checked on 22 September.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Confusing them can produce a build that works when two tasks.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 a Multi-Module Project",
      "description": "Android build dependencies belong in the module and configuration that use them. Plugin dependencies, application libraries and test libraries are.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Putting applicationId or an.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It improves consistency, but it does not by itself force every resolved.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Updating a globally installed Gradle binary does not necessarily change the.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Adding the.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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-22",
      "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. A reported match needs applicability review: package.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Run it for the relevant module and variant so manifest, resource.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Android Lint understands Android resources and APIs, Kotlin analyzers can enforce.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Code can be neatly formatted and still leak an.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Adding factories, repositories and abstractions everywhere.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Their configuration languages overlap, but.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The switch is not merely a file-size preference: it changes.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is most effective alongside code optimization, but resources.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Analysis Cost, Do Not Hide Secrets",
      "description": "Android app obfuscation makes packaged code harder to read by renaming and transforming it. It raises analysis cost; it does not prevent a determined.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Choose the Correct Pipeline",
      "description": "ProGuard is a Java bytecode shrinker, optimizer and obfuscator. For a modern Android application, R8 is normally the AGP-integrated optimizer; installing.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Start from the failing.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Adding -dontwarn can.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Android Stack Trace with the Matching Mapping File",
      "description": "Retrace needs the mapping file from the exact optimized release that produced the crash. A mapping from a newer rebuild can generate plausible-looking but.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The declaration nearest the error is not necessarily.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. This is different from requesting two versions of the same module: Gradle can.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It improves.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Without Trusting the First Download Blindly",
      "description": "Gradle dependency verification checks downloaded artifacts against trusted checksums or signatures. Its weakest moment is often the initial trust decision:.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is different from the build cache, which reuses task.",
      "category": "Gradle & Code Quality",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Correct App Identity",
      "description": "Firebase setup starts with the Android application's actual package identity, not the project folder name. Registering the wrong applicationId can leave a.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Treat that as a dated verified value, not a promise.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Check the actual.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Firebase Crashlytics in Gradle and Prove a Test Crash Arrives",
      "description": "Crashlytics setup is complete only when a controlled crash from the intended build reaches the correct Firebase app with readable information. Adding a.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. They solve different.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 and Turn It Off",
      "description": "Firebase DebugView is useful for checking development analytics events quickly. It is not evidence that production attribution, consent handling or every.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Instrumenting every method.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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-22",
      "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. A Dart initialization call alone cannot compensate for the.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A JavaScript package installation can succeed while the.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "App Check cost planning requires separating the Firebase feature, the attestation provider and the backend operations being protected. “App Check is free”.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Custom Backend",
      "description": "X-Firebase-AppCheck carries an App Check token to a custom backend. Reading the header is not verification: the server must validate the token with a.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not a permanent certificate.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "A Play Integrity integration has three parts: the Android client requests evidence, the backend validates the returned token, and the backend applies a.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Adding it does not automatically connect the correct Cloud.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Without Reducing Them to One Boolean",
      "description": "A Play Integrity response is structured evidence, not a single universal “safe device” boolean. Interpret each documented field in the context of the.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Firebase App Check Debug Tokens Without Shipping a Bypass",
      "description": "The App Check debug provider is a development mechanism, not a production attestation provider. A registered debug token can authorize development traffic,.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Legitimate Traffic",
      "description": "Enable App Check enforcement after measuring legitimate traffic and validating supported release paths. Turning it on before older supported app versions.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Finding one in an.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Changing a file on a remote website does not.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 APK Configuration",
      "description": "A Firebase Security Rules audit should start from the data operations each user is allowed to perform. Finding a Firebase URL in an APK is not enough to.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Crashes: Diagnose the Delivery Path",
      "description": "When Crashlytics does not show a crash, diagnose the delivery path before reinstalling libraries repeatedly. The report may target another Firebase app, be.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A mapping upload from a different flavor.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Obtaining a valid token without checking its relationship to.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Current Kotlin integrations should use the supported.",
      "category": "Firebase & App Integrity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Increasing the app's.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Replacing every access with a safe call can stop the.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A screenshot saying.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It helps inspect supported app network traffic, but an.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 App Performance Testing: Build a Repeatable Device Matrix",
      "description": "Android performance testing needs a repeatable workload and device matrix. A single fast run on a developer's flagship phone cannot establish acceptable.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "Android app memory cannot be summarized accurately by one number labelled “RAM.” Java/Kotlin heap, native allocations, graphics memory and proportional.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Monitoring identifies which users and releases are affected; profiling explains what.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Measured Bottleneck",
      "description": "Optimize the measured bottleneck, not the most fashionable part of the stack. A slow screen caused by image decoding will not necessarily improve after.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Start by determining what the main thread was waiting for.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Showing a shell quickly while.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. They do not remove.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Find the work that made a particular frame late before replacing UI components or adding.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A rising chart alone is not enough: caches, delayed cleanup and.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The failing allocation is often.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Work, Network and Wake-Lock Evidence",
      "description": "Android battery drain is often the accumulated cost of work that runs too frequently or continues after it is useful. Start with wake locks, background.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Compare definitions before.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Lower-end devices, resource pressure and rare scheduling.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 for One Reproduction Without Losing the Cause",
      "description": "Logcat filtering should remove noise without deleting the event that explains the failure. A filter showing only the app's final exception can hide an.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The cause can be a missing permission, wrong caller identity, restricted API,.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The target may be absent, the action/data combination may not match, or an.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Disabling the check does not make.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The class may be missing from the artifact, renamed or removed by.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Detect Binary Dependency Mismatches",
      "description": "NoSuchMethodError usually indicates a binary compatibility mismatch: compiled code calls a method that the runtime class definition does not provide. It is.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Its value comes from controlled setup and.",
      "category": "Performance & Crash Debugging",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Not a Secret Store",
      "description": "A Flutter APK is a distributable client, not a secret vault. Dart obfuscation can make names harder to interpret, but privileged credentials and.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A Java decompiler can.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is different from targetSdk, which participates in Android behavior.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The release must have the correct package, upload key, version, current.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A result from one scrolling demo does not establish which.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Size Analysis, Not a Debug APK Comparison",
      "description": "Measure Flutter app size using a release build and a defined distribution target. Comparing a debug APK with a device-specific Play download exaggerates.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It does not encrypt assets, remove all strings or make embedded credentials safe,.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Use an Android App Bundle for a Play.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Find the first meaningful Android or.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 JavaScript Bundle",
      "description": "A React Native release APK must contain the JavaScript or Hermes bytecode and assets needed to run without the development server. A build that launches.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It does not upload the app to Google Play, create every.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. To install a build directly on a device or emulator, configure an APK-producing.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Without Confusing Upload with Release",
      "description": "EAS Submit uploads an Android build to Google Play using the configured submission workflow. Upload completion is not the same as policy approval,.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. JavaScript code.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not simply a React Native screen rendered.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Seeing that bytecode does not mean an.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Required ABIs",
      "description": "React Native APK size includes the JavaScript bundle, native engine, native modules, Android resources and assets. Reducing only JavaScript text may have.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Android Exception",
      "description": "A React Native native-module crash may surface in JavaScript while the underlying failure is an Android exception, JNI problem or incompatible native.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Creating a new keystore because a build machine.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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-22",
      "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 Android Build Error",
      "description": "“Gradle build failed” is usually Unity's final wrapper message, not the root cause. The meaningful error often appears earlier in the editor/build log and.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Changes What Is Recoverable",
      "description": "Unity APK analysis depends strongly on the scripting backend. Managed assemblies from a Mono build and native output from IL2CPP present different recovery.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Extracting packaged assets and code cannot reliably recreate the original editor project,.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Asset and Native-Library Evidence",
      "description": "Unity Android size optimization starts with the build report and packaged contributors, not a blanket instruction to lower every quality setting. Textures,.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Choose a backend based on the supported target, plugin.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Reflection, serialization and runtime-selected types can require explicit.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It changes the asset lifecycle, so the game must.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Updating Unity alone.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A symbol archive from the same source but.",
      "category": "Flutter, React Native & Unity",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It does not specify the oldest Android version allowed to install it, and.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Checklist",
      "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. Existing-app.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "Google Play's target-API deadline does not require setting minSdk to the same Android version. minSdk controls the oldest platform your app supports;.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Some Android changes apply to every app on a new OS; others activate when.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It can describe an OS minimum, missing hardware, unsupported CPU architecture, incomplete.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A manifest with a low minSdk is.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not generated correctly by selecting “no.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 or Update 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. Updating the URL in Console does not update the.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The public developer display name can differ from.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. As checked on 22 September 2026, the next published milestone is 30 September 2026, initially covering.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. They are not a marketing age range chosen to.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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-Based Appeal",
      "description": "An app rejection, an app suspension and a developer-account termination are different enforcement actions. Before drafting an appeal, identify the exact.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Those actions have.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A long copied checklist becomes unreliable when.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The actionable evidence is the cited policy, affected.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. An empty list of active issues does not establish that every future.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. The essential question is whether the team can identify the shipped.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Assemble a Review-Ready App",
      "description": "A Google Play submission includes more than a signed bundle. The account, app content declarations, listing assets, review access, release track and.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 the Review Gates",
      "description": "Submitting an Android app to Google Play is a sequence of reviewable states: create the app record, complete required content, prepare a release, resolve.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Personal Accounts",
      "description": "As checked on 22 September 2026, Google's published requirement for personal Play developer accounts created after 13 November 2023 is a closed test with.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A vendor's generic guide may describe.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Logging out,.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "Google 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-22",
      "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 Measurable Stop Conditions",
      "description": "A staged rollout limits how quickly an update reaches eligible users; it does not make a faulty release harmless. Users who already received the update can.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 and Reliable Instructions",
      "description": "Google Play reviewers need reliable access to every restricted part of the app. A valid password is insufficient when the account requires a one-time code,.",
      "category": "Google Play Publishing",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. It is not a runtime permission.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 and Permitted Use",
      "description": "Android's advertising ID is a user-resettable advertising identifier, not a durable account key. It can be unavailable or deleted, and applications must.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. They use different dependency coordinates.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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: Avoid 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. Their similar prefixes hide an important.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Test.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Each network can require an adapter, a compatible SDK version, account-side configuration, privacy.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A plugin imported.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 and Unused Adapters",
      "description": "A mobile ads SDK audit should identify what ships, when it starts and what data or permissions it introduces. Searching source code for one AdMob import.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Showing a form once and storing a.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "AdMob's Data Safety disclosure is not simply “advertising ID collected: yes or no.” The relevant Mobile Ads SDK can handle interaction, diagnostic, network.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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": "Use Ad Inspector to Separate SDK Integration Issues from Ad Availability",
      "description": "Ad Inspector helps investigate an ads integration, but it does not guarantee that a production request will receive an ad. Its value is separating SDK.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Repeating.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. These are ceilings, not.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. A phrase with demand in Google Ads Keyword Planner is not.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Changing the icon, screenshots, description, price and.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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, TalkBack and Manual Testing",
      "description": "No single Android accessibility tool can determine whether users can complete every important task. Combine on-device assistance, automated checks and.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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 Release Checklist",
      "description": "An Android accessibility test plan should follow user tasks through success, error and recovery states. Checking only the first screen misses barriers such.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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. Measure the interactive area and its spacing, not.",
      "category": "Ads, ASO & Accessibility",
      "author": "APKLint",
      "inLanguage": "en",
      "dateModified": "2026-09-22",
      "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
    }
  ]
}