Skip to main content
Glama
730,291 tools. Updated 2026-10-31 20:15

"Using a mobile phone for remote control functionality" matching MCP tools:

  • **Retrofit a phone-control link onto an EXISTING channel.** Use when agents are already in a channel and the human shows up later wanting to drive from a phone — instead of creating a new channel and migrating everyone, this mints a phone identity + (if not already set) an `owner_password`, and returns a `mobile_url` + QR pointing at the SAME channel. Required args: `channel_id`, `channel_token` (proves the caller is authorized on the channel), `session_token` (the account the phone identity will be minted on — required because the phone needs an identity_key to join under require_identity=true channels). Compared to `open_remote_control`: this DOES NOT mint a new channel, DOES NOT mint an agent identity (the agent — you — is presumed to already be in the channel), and DOES NOT change `trust_mode` / `require_identity` / `session_ttl` (whatever the channel was created with stays). It only adds the phone affordance. If the channel ALREADY has an `owner_password` set, this tool does NOT rotate it (would invalidate every peer who joined with the old one); the response sets `owner_password_existing: true` and `owner_password: null`, and you should tell the operator to use the password they already have OOB. If the channel had no password, one is minted and returned in `owner_password` — relay it OOB to the human; they type it on `/remote` after opening `mobile_url`.
    ConnectorNo auth
  • Buy VPN access using the agent wallet balance. Deducts the plan price and returns the username, password and expiry instantly. plan is one of 7d, 15d, 30d, 90d, 180d, 365d - call list_vpn_plans first for the current prices and server countries. One payment, no auto-renewal, no account. Configs are fetched afterwards with get_vpn_config, or from the order page. Pass request_id for safe retries. This spends real balance - only call it once the user has confirmed. Not an eSIM: it carries no phone number and no mobile data.
    ConnectorNo auth
  • Export the exact previewed owned ticket to Jira or Linear, using expected_export_hash from preview_ticket_export and the same destination. Requires explicit integrations:write, tickets:write, and independent human approval of the complete preview. Persists the operation before possible remote writes. After an uncertain response, inspect list_ticket_provider_effects and reconcile the original intent; never blindly export again. Remote confirmation is observed, not atomic protection against concurrent remote writers.
    ConnectorNo auth
  • See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote pictures), and you get a picture plus anything that went wrong (script errors, failed promises, blocked requests, console errors). Use it after every write and before saying an interface is finished: reading the code tells you what you wrote, not what it renders. `size: "phone"` looks at it 390px wide — use it for anything meant for a phone, like a mobile app mockup. `steps` drive the page before and between pictures, so you can check every screen and that buttons work: `{click: "Plan"}` (by visible text or label, or a CSS selector like "#nav-plan"), `{type: {into: "textarea", text: "hi"}}`, `{press: "Enter"}`, `{wait: 500}`, and `{shot: "Plan screen"}` for a picture. With no steps you get one picture of the first screen. Check each tab of an app in ONE call: shot, click a tab, shot, click the next, shot. Flows don't run here: a flow call gets a placeholder reply, so you can see the chat send and answer without spending anything; tables and metrics read empty. Look for text that's too small or runs together, stray system fonts, emoji standing in for icons, and anything that doesn't look like the brand.
    ConnectorNo auth
  • See what an interface LOOKS like and DOES right now: the page RUNS from its current files under the same rules as the live page (no web fonts, no remote pictures), and you get a picture plus anything that went wrong (script errors, failed promises, blocked requests, console errors). Use it after every write and before saying an interface is finished: reading the code tells you what you wrote, not what it renders. `size: "phone"` looks at it 390px wide — use it for anything meant for a phone, like a mobile app mockup. `steps` drive the page before and between pictures, so you can check every screen and that buttons work: `{click: "Plan"}` (by visible text or label, or a CSS selector like "#nav-plan"), `{type: {into: "textarea", text: "hi"}}`, `{press: "Enter"}`, `{wait: 500}`, and `{shot: "Plan screen"}` for a picture. With no steps you get one picture of the first screen. Check each tab of an app in ONE call: shot, click a tab, shot, click the next, shot. Flows don't run here: a flow call gets a placeholder reply, so you can see the chat send and answer without spending anything; tables and metrics read empty. Look for text that's too small or runs together, stray system fonts, emoji standing in for icons, and anything that doesn't look like the brand.
    ConnectorNo auth
  • Proposes a change to ONE employee's first name, last name, email, phone/mobile, or home address - and STRUCTURALLY NOTHING ELSE - for Australian, New Zealand or United Kingdom organisations. It does NOT touch Xero itself, and never will on its own. This queues a pending change that a human must explicitly approve (your Xero MCP connector - the exact link is this response's own approvalUrl field) before Xero is touched at all; you have no way to approve it yourself. employeeId must come from list_xero_payroll_employees (never invented). Provide at least one of firstName, lastName, email, phone, mobile, or address - only the fields you provide change, everything else about the employee is left exactly as it is. For Australia, phone and mobile are two separate fields and both may be set independently. For New Zealand and the United Kingdom there is only ONE phone number field in Xero - use either phone or mobile (not both to two different values); doing so refuses before anything is drafted. This tool has NO field for bank details, tax numbers, tax settings, pay templates, salary or rates, KiwiSaver/super, date of birth, start date, or termination date - none of those can ever be changed through this connector, by design.
    ConnectorAPI key

Matching MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to drive a connected Android phone over ADB with 28 tools covering screenshots and UI inspection, taps/swipes/typing, app install and launch, file transfer, wireless pairing, and one-call scripted flows like tap-by-text and wait-for-text.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables controlling an Android device from an MCP client via ADB, including wireless debugging discovery, UI-tree inspection, and performing taps, swipes, typing, app actions, and shell commands without relying on screen coordinates.
    1 npm
    MIT

Matching MCP Connectors

  • City of Mobile GIS — Mobile, Alabama open geospatial data (ArcGIS).

  • Phone number validation MCP.

  • Sets whether the app lives on the web, as a mobile app, or both — read before go-live to shape which proofs it asks for (a web app's secret scan proves nothing about a phone bundle, so changing this clears any stored scan; go-live asks again). Before go-live it acts at once; once live, the founder approves it in the browser (request_app_lives).
    ConnectorNo auth
  • Start a LandingBoost scan of a public website: phone and desktop screenshots of up to 3 pages (homepage first; call suggest_pages to choose them, or homepage and pricing are picked automatically), measured mobile, copy and search checks, and new wording for the problems found. Returns a scan_id at once; the scan takes about a minute. Poll get_scan, then call get_actions. Counts toward the scan limit: use it for a new site or after big changes (a new page or layout). After a single fix, call recheck_page instead (free).
    ConnectorOAuth
  • The unit tests (code examples) for HMR. Always call `learn-hmr-basics` and `view-hmr-core-sources` to learn the core functionality before calling this tool. These files are the unit tests for the HMR library, which demonstrate the best practices and common coding patterns of using the library. You should use this tool when you need to write some code using the HMR library (maybe for reactive programming or implementing some integration). The response is identical to the MCP resource with the same name. Only use it once and prefer this tool to that resource if you can choose.
    ConnectorNo auth
  • Request a price-match review of a competitor's WRITTEN quote from a comparable licensed notary — it never sets our price automatically. Use when the customer found a cheaper offer. Requires: `competitor_name`, `competitor_price_usd`, `service` (e.g. office, mobile, apostille), `name`, and an email or phone. Returns a logged reference and, where computable, our comparable quote; the notary decides within one business day. Fails if the name or a valid contact is missing.
    ConnectorNo auth
  • PURPOSE: Step 1 of 2 of booking. Holds the chosen slot for 10 minutes and sends a 6-digit SMS code to the customer's Polish mobile. Returns confirmation_id and a summary to show verbatim. Does NOT create a booking. WHEN TO USE: Only after the customer explicitly said they want to book THIS slot, gave first and last name, street address with number and mobile phone, and accepted the terms. WHEN NOT TO USE: Not for price or date questions, not when the customer says "maybe" or only asks how much / when. Never guess or invent missing data - ask. REQUIRED: quote_id, slot_id (from check_availability), customer.name, customer.address, customer.phone, terms_accepted=true. Missing data -> error missing_required_fields with missing_fields[]. SIDE EFFECTS: one SMS to the phone + 10-minute slot hold. The identical call repeated returns the same confirmation_id, no new SMS. NEXT: ask the customer for the SMS code, then call create_booking.
    ConnectorNo auth
  • Review a saved hosted site draft using real desktop and mobile screenshots plus layout, visible control, image and runtime diagnostics. Use once near the end of a new build or substantial redesign. Fix clear issues, then use at most one follow-up review on the affected page. Skip for small copy or metadata edits. Pass the exact saved versionId and an optional existing page with query/hash. Uses the real site iframe bridge; experience players are labelled placeholders, sessions and paid effects are disabled. Does not save or publish.
    ConnectorAPI key
  • Pause a managed Live Activity stream and end its current activity if needed. Pausing can send a remote end and use the device's ActivityKit push budget; use it only for a genuine pause, not as update-rate control. Future set_live_activity_stream calls for the same key are ignored until resume_live_activity_stream is called.
    Connector
    Destructive
    OAuth
  • WRITE: top up mobile airtime for up to 25 phone numbers. Spends account credit immediately and cannot be reversed. Needs confirm=true after the user approved each number and amount. Amounts are in the given ISO currency (e.g. KES, UGX, TZS). Pass an idempotency_key to make a retry safe. Returns per-number status and requestId (use africastalking_find_airtime_transaction to follow up). POST /version1/airtime/send.
    Connector
    Destructive
    No auth
  • WRITE: send mobile data bundles to up to 25 phone numbers from your Africa's Talking data wallet. Spends wallet credit and cannot be reversed. Needs confirm=true after the user approved each number and bundle. product_name is your data product (created in the Africa's Talking dashboard). Pass an idempotency_key to make a retry safe. Returns per-number status and transactionId (see africastalking_find_mobile_data_transaction). POST bundles /mobile/data/request.
    Connector
    Destructive
    No auth
  • Validate & parse a phone number against the E.164 / ITU calling-code plan (keyless, offline). Detects the country, normalizes to E.164, and checks the national-number length is plausible. Pass an international number (e.g. "+33 1 23 45 67 89") OR a national number plus a `country` ISO code (e.g. phone="020 7946 0958", country="GB"). Does NOT determine carrier or mobile-vs-landline (that needs a keyed HLR lookup).
    ConnectorNo auth
  • Fetch public business page information from Facebook. Returns page details including name, category, address, phone, website, ratings, reviews, followers, and cover/profile photos. Provide exactly one of page_id, username, or url — prefer url when the user pasted any Facebook link (including mobile share links), since the tool resolves the canonical page automatically.
    ConnectorOAuth
  • Validate and analyze phone number: country, region, carrier, line type (mobile/landline/VoIP), timezone, formatted versions. Use to verify phone legitimacy and detect fraud risks. Requires E.164 format (+1234567890). Companion OSINT identity-investigation tools: username_lookup (social-platform handle correlation), email_disposable (throwaway-mail signal on associated email). Free: 30/hr, Pro: 500/hr. Returns {valid, country, region, carrier, carrier_status, line_type, timezone, formats}. carrier is omitted from the wire when libphonenumber has no mapping for the region (US/CA/GB and other MNP-restricted regions); always read carrier_status — 'known' means carrier is present, 'unsupported_region' means we cannot identify the carrier (do not infer the number lacks one).
    ConnectorNo auth
  • **One-call bootstrap for 'control me from your phone'.** Creates a private trusted channel + two identities (one for YOU, one for the human user's phone) and returns a mobile URL + QR + pre-formed shell commands so a single call wires up the whole phone→agent pipe. Use when the user says 'open a remote channel', 'let me control you from my phone', 'send me a pair link', 'open the remote control', or similar — this is the right tool over `create_channel` + `join` + manual listener setup. After this call, run the steps in the response in order: (1) `join` with the returned channel_id + token + agent.identity_key + owner_password — get back a session_id; (2) run `receiver_command_template` via your Bash tool (substituting <SID> with your session_id) — this starts the SSE listener detached in the background; (3) paste `monitor_command_template` LITERALLY into your Monitor tool to watch the inbox file; (4) run `selftest_command_template` via Bash — this writes a synthetic line to the inbox so your Monitor fires once and you confirm the wiring is correct before the operator sends anything from the phone. ⚠ NPX BOOTSTRAP: the first time `npx -y apuchat` runs on a machine, it downloads the package (30-60s) before listener output starts; during that window the SSE stream isn't connected yet. The selftest line bypasses the listener (it's a direct file append), so the Monitor fires immediately — that confirms file path + Monitor are correct even while the listener finishes its npx warm-up. Only after the selftest notification arrives should you tell the operator 'ready'. (5) Immediately after that, broadcast a one-liner greeting via `send` (to:'all', no `kind`) — e.g. `"hi, I'm @<your-callsign> — connected via remote control. Tell me what you need."`. The /remote phone UI seeds history on join, so when the human opens the URL they see you're alive and ready instead of an empty screen. (6) When a request from the phone will take more than a few seconds to fulfill, FIRST fire a `send` with `kind:'status'` and a short ack like `"on it, ~30s"` — the phone renders that as a transient `● working…` indicator that clears on your real reply, turning dead silence into a visible loading state. Do NOT ask the operator anything about 'persistence strategy' or 'how should I listen' — this tool exists precisely so you listen; the commands are pre-formed. Fall back to a `wait` loop only if you literally have no shell access.
    ConnectorNo auth
  • Opens a remote-control session and returns the link of the TokenizedBlock control panel: a visual dashboard (the block in the centre; Market, Trade, Brain and Chat tabs) for the user to open in their browser with their wallet. Give the link to the user. Then send commands with tblock_command and read what happened with tblock_panel_state. Commands are proposals: the block’s brain accepts or refuses each task, and only the user’s wallet signs.
    ConnectorNo auth
  • Create a new R3 project and save it to the user's account. Produces a complete, openable project — scene, world, camera, renderer, lighting, audio listener, music transport and OrbitControls (anyone who opens it can turn and zoom the view) — ready for components to be added. Pass `template` for a phone project (mobile-portrait / mobile-landscape) that fills the screen when published. Returns the project id, which every other project tool takes. r3_whoami confirms which account it is created in.
    ConnectorNo auth