Skip to main content
Glama
429,620 tools. Updated 2026-08-10 00:18

"Android" matching MCP tools:

  • Public (no auth): informational pricing reference. Returns monthly SaaS subscriptions (Basic / Professional / Enterprise — $15/$30/$70 per month) and one-time app-build packages (Starter $399 Android-only, Pro $699 Android+iOS, Full $999 Android+iOS+source code). All plans include unlimited drivers / users / admins; Cabgo never charges commission per trip. **Informational only.** Do not generate or return a payment URL from this tool. When the operator wants to purchase, direct them to visit https://www.cabgo.app/empezar in their browser — all checkout happens on cabgo.app externally via Stripe, not inside this conversation.
    Connector
  • Type text into the focused field on Android. CRITICAL: call this AFTER device_tap / device_tap_by_text completes — do NOT issue the focusing tap and this type in parallel, or the type will race the focus change and land in the previously-focused field (observed on a banking-app login: username+password concatenated into username box). method="keys" (default): decompose ASCII to keycode events (DOWN/UP with shift) — most reliable; non-ASCII chars (CJK/emoji) auto-fall-back to IME injection for that segment. method="ime": IME injection only — full UTF-8 in one shot, but Samsung IMEs intercept `.`/`@`/`_` as autocomplete/action shortcuts and may trigger system gestures. method="shell": shell `input text` — slowest, and Samsung IME drops `@`/`.`/`_`. Optional clearFirst wipes the field first; pressKey sends a keycode after typing.
    Connector
  • List, open, switch and close browser tabs on the device — one tool for what would otherwise be several. `list` works on BOTH iOS Safari and Android Chrome and returns a pageId per tab; pass that pageId to any other webpage_* tool to act on that specific tab, on either platform. `new`, `select` and `close` are ANDROID ONLY and error on iOS rather than pretending — Safari can list and drive tabs remotely but cannot open or close them, and needs no switching since pageId already targets one directly. Stale tabs accumulate across sessions and clutter the list: close what you are done with.
    Connector
  • Materializes a free Cabgo workspace for the operator and queues an Android build of their branded app. No payment, no card, no checkout — the workspace is free to create and operate. Call ONLY when the user explicitly wants to create / launch / spin up / set up a new app for their business — verbs like 'create', 'launch', 'build me', 'set up an app for'. Do NOT call this for setup / installation / connector questions (use cabgo_install_instructions). Ask the user 2 things: (1) what type of business — taxi / food delivery / gas distribution? (2) what brand name for their app? Optionally city + brand color. **The connected OAuth user becomes the owner automatically** — no email or name is needed in the body. **A single user can own multiple tenants** — calling this again creates a NEW workspace rather than erroring. Branding tweaks happen via other Cabgo tools after creation. Any plan / billing / subscription management is done by the operator on https://www.cabgo.app — never through this tool.
    Connector
  • Configure a specific **agent's** PWA branding and install experience (applies to that agent's `/s/` standalone chat pages — what gets installed to the home screen is one agent's entry page, so each agent is its own app). - `agent`: the agent name whose install branding to configure (required). - `icon_source_url`: public URL of one master image (PNG/JPG/WebP ≥192×192, ideally a square logo). The server derives the full set: browser-tab favicon(48) + install icons 192/512 + Android maskable(512). Non-square images are centre-cropped. Once set, "Add to Home Screen" installs this agent's own icon. - `install_prompt`: prompt style — `banner` (a dismissible slim bar inside the chat page, default), `card` (a card shown on first visit; more visible, more intrusive), `off` (no prompt). Android/Chrome uses the system install dialog; iOS automatically switches to a "Share → Add to Home Screen" illustrated guide. Icon/prompt params optional, settable independently. Returns the final config (icon URLs + install_prompt). Full walkthrough in the Cookbook's configure-branding.
    Connector
  • Full daily panchang for a date and place — computed by the same panchang-core engine the HinduCalendar Android app ships, so the values are identical to the app (not an approximation). Returns the five limbs at sunrise (tithi, nakshatra, yoga, karana, vaar) each with its END TIME, paksha, lunar month in both amavasyant and purnimant conventions (with adhik maas flag), Vikram/Shaka/Kali/Gujarati samvat years, samvatsara names, ritu (season), ayana (Uttarayan/ Dakshinayan), sun/moon rashi with next-transit time, and sunrise/sunset/ moonrise/moonset. This is also the Gregorian→Hindu date converter: the masa + paksha + tithi + samvat fields ARE the Hindu date. (For Hindu→Gregorian, use the Kaalshodh MCP server's find_matching_dates.) Example questions: "what is the tithi today in Delhi?", "when does Ekadashi end tomorrow?", "what is today's date in Vikram Samvat?", "which Hindu month is it?". Args: date: Gregorian date, YYYY-MM-DD. Default location is Ujjain; pass lat/lon/tz for other places. lat, lon: Location in decimal degrees. tz: IANA timezone name ("Asia/Kolkata") or a numeric UTC offset in hours ("5.5"). ayanamsa: "Lahiri" (default) or "Sayan". lang: Language for names — "en", "hi", and the app languages (mr, gu, bn, ta, te, kn, ml, sa) plus "en-iast".
    Connector

Matching MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server for Android dev workflows that exposes Gradle, Manifest, and ProGuard context to Claude, with a library of skills for tasks like AGP upgrade and R8 audit.
    3
    MIT

Matching MCP Connectors

  • Tap at (x,y) coordinates on a device screen. Coordinates are in DEVICE TAP-COORD SPACE (the "Tap-coord space" dims printed in the device_screenshot footer; same space as device_page_source bounds). First call starts a device control session (~3s). COORDINATE SOURCES — in priority order: 1. PRIMARY: device_page_source bounds [L,T][R,B] (or the "Labeled elements" block bundled with device_screenshot) → tap center = ((L+R)/2, (T+B)/2). NO scaling. Pixel-exact. 2. FALLBACK ONLY (element not in page_source — image-only widget / custom Canvas): visual estimate from the screenshot pixels, scaled with the formula below. VISUAL → TAP COORDINATE FORMULA (Android): scale = device_width / rendered_chat_width tap_x = visual_x × scale tap_y = visual_y × scale where `device_width` is the "Tap-coord space" width from the device_screenshot footer and `rendered_chat_width` is the "Image" width from the same footer. Both axes share one scale (aspect preserved). The footer prints concrete values per device — never assume any constant. Skipping the scale on a visual estimate is the #1 cause of taps landing in the wrong place — the agent sees a downscaled image but device_tap expects full-resolution tap-space coords.
    Connector
  • Capture network requests made by a page running on the device over a time window via CDP. Enables the Network domain and collects request/response/loadingFinished/loadingFailed events. LIVE-WINDOW collector: only captures requests made AFTER it attaches — to capture a navigation/reload/fetch, pass triggerJs (fired inside the window) rather than triggering it from a separate tool call (which races the attach and returns 0 records). Returns { records, bodiesOmitted? } in summary format, or a HAR 1.2 document when format="har". Each record: { requestId, method, url, requestHeaders?, status?, statusText?, mimeType?, resourceType?, responseHeaders?, encodedDataLength?, state, errorText?, startTimestamp?, endTimestamp?, body?, bodyTruncated?, bodyError? }. Set includeBodies=true to fetch response bodies for completed text-like responses (json|text|xml|javascript|html|css|svg|x-www-form-urlencoded); per-body cap: 10 000 chars (bodyTruncated=true when hit); total cap: 200 000 chars (excess records counted in bodiesOmitted). Body fetch failures set bodyError on that record. Set throttle to emulate network conditions for the capture window only (cleared in a finally block): slow-3g (latency 2000ms, 400kbps down/up), fast-3g (latency 563ms, 1.6Mbps down / 750kbps up), offline. When throttle was active, a top-level throttle field appears in the output. Set blockUrls (URL patterns) to block matching requests, or extraHeaders to inject request headers (e.g. Authorization), for the capture window only — both cleared afterward. Returns at most `limit` records (default 100, most-recent first) so heavy pages stay within the token budget — filter with urlSubstring / onlyErrors; total/returned appear when records were dropped. Default window: 5 000 ms. Maximum: 30 000 ms. Omit pageId to auto-select the visible/active page.
    Connector
  • Click an element in the device browser, by CSS selector or by a `ref` from a page-elements listing — works on BOTH iOS Safari and Android Chrome, auto-detected from the udid. Scrolls the element into view, waits for it to stop moving, and checks it is actually clickable — visible, non-zero-size, enabled, and not covered by anything — retrying until timeoutMs before it gives up. Then taps its center. On iOS the DEVICE taps its own screen at that position, so the page receives a real, fully trusted touch — pointerdown, touchstart, mousedown and click, exactly as from a finger — which also satisfies sites that gate on trusted input. On Android the tap is delivered as a TOUCH through the browser, so elements listening for pointer events respond as well as those listening for click. Falls back to mouse events, then a plain `.click()`, if a step is unsupported, and the response reports which was used via `via`. ERRORS rather than reporting success when the element never becomes clickable; pass force:true to skip the checks and dispatch at its coordinates anyway — which works for anything that still occupies a box, but NOT for a display:none or zero-size element, where there is no point to aim at and force fails too. When a selector matches several elements the first VISIBLE one wins, not the first in document order. This is COORDINATE-based. Android events are synthesized by the browser (isTrusted:false); iOS taps are real device input (isTrusted:true) whenever `via` comes back as "nativeTap".
    Connector
  • Public (no auth): returns the REAL operator checklist for publishing (most assets are auto-generated — bundle id, screenshots, descriptions, policies — so the operator only provides API access). For Play: invite console@cabgo.app + decide update-or-new + (if updating) upload keystore. For App Store: upload the API key alone (no invitation needed). Pass platform='android'|'ios'|'both' (default both).
    Connector
  • Get the link to download the Eveoy shopper app (iOS / Android). Use this when the user wants to: - Download or install the Eveoy app - Become an Eveoy shopper - Find the app store link Trigger phrases include: "get the eveoy app", "download eveoy", "how do I become a shopper", "app store link", "install the app". Returns: { url, platforms, notes }. Returns the canonical get-app page, which routes to the correct store per device. Do NOT use this for: brand/business questions (use ask_eveoy) or pricing (use get_pricing). Cost: free. Latency: <50ms. Read-only. Idempotent.
    Connector
  • Change the Android device's system language and locale (persistent, affects every app, survives reboot). Uses a bundled locale-change helper with reflection into ActivityManagerNative.updateConfiguration. For per-app testing without changing the whole device, prefer device_launch_app_in_language. Caveats: Samsung One UI / MIUI may re-apply their own locale after a few seconds; Android 14+ requires hidden_api_policy=1 (set automatically); MDM-managed devices may refuse the CHANGE_CONFIGURATION grant.
    Connector
  • Collect console logs, exceptions, and log entries from a page running on the device for a time window. Enables Runtime and Log domains, then listens for Runtime.consoleAPICalled, Runtime.exceptionThrown, and Log.entryAdded events. Returns a normalized array of { level, text, url?, lineNumber? } entries. This is a LIVE-WINDOW collector: it only captures events fired AFTER it attaches, so triggering the logging from a SEPARATE tool call races the ~1-3s attach latency and is silently missed. To capture logs from an action, pass triggerJs (runs inside the window). Default window: 3 000 ms. Maximum: 15 000 ms. Omit pageId to auto-select the visible/active page.
    Connector
  • Poll for an element to appear (and optionally become visible) in the device browser by CSS selector — works on BOTH iOS Safari and Android Chrome. Polls every 250ms inside a single CDP session (no reconnect per tick) until found or timeoutMs elapses. Returns { found, waitedMs } rather than throwing on timeout, so callers can branch on the result. When the selector matches several elements, ANY of them satisfying the test counts as found — so a control duplicated across responsive breakpoints is reported visible when the on-screen copy is.
    Connector
  • Hover the pointer over an element in the device browser page, by CSS selector or by a `ref` from a page-elements listing (iOS Safari or Android Chrome, auto-detected). Scrolls it into view and dispatches a mouseMoved to its center — use it to reveal hover menus/tooltips before webpage_click. On iOS the event is isTrusted:false. Throws if the target does not resolve.
    Connector
  • Get the visible text (innerText, trimmed) of an element in the device browser page, by CSS selector or by a `ref` from a page-elements listing (iOS Safari or Android Chrome, auto-detected). For reading a label/status/result after an action. Throws if the target does not resolve. For full HTML use webpage_get_dom; for many elements at once use webpage_snapshot, or ios_safari_elements / android_devtools_elements.
    Connector
  • Expire all NON-HttpOnly cookies visible to the current page origin in the device browser (iOS Safari or Android Chrome, auto-detected), via document.cookie. LIMITATION: cannot clear HttpOnly or other-origin cookies (that needs the CDP Network domain, unavailable on the iOS bridge). Returns { cleared } — the count of cookies expired.
    Connector
  • List the Chrome/WebView mock/abort routes currently registered for this device, in match order (first match wins). WEB CONTENT ONLY: this intercepts requests made by browser/WebView pages. Requests made by native app code are NOT intercepted and never will be by this tool. Nothing device-wide is changed and no certificate is installed — the effect is scoped to the page.
    Connector
  • Read the page as a structured tree of what is on it — works on BOTH iOS Safari and Android Chrome. START HERE before acting: each line is `role "name" [ref=eN]`, and that ref goes straight into webpage_click / webpage_type / webpage_hover, so you never have to guess a CSS selector or read markup. Refs address the live element, so they survive markup that shifted and reach elements no selector can. Shows only what is actually visible by default, and marks disabled / checked / expanded state and current field values. Pass interactiveOnly:true for just the things you can act on, or a selector to scope it to one region of a large page.
    Connector
  • Send a raw DevTools-protocol command to the browser page on a device and return its reply — the escape hatch for capabilities no dedicated tool wraps yet (Emulation, Performance, CSS, Animation, DOM mutation, …). Works on BOTH iOS Safari and Android Chrome, auto-detected from the udid. `method` is "Domain.command" (e.g. "Emulation.setGeolocationOverride"); `params` is that command's parameter object. Scope is the BROWSER — this reaches web content only, never the device or native apps. Prefer a dedicated tool when one exists: they handle setup ordering, lifecycle and teardown that a bare command does not. IMPORTANT, iOS: the two engines do NOT implement the same protocol — Android is full CDP, iOS is WebKit's dialect. Chrome-only domains fail with -32601 "domain was not found" (Accessibility, Emulation, and Page.captureScreenshot are all absent on iOS), and a `*.enable` on iOS reports success without proving the domain exists, so never treat it as a capability probe — probe with a real method.
    Connector