# io.github.TecniForgeMaryam/androidapi-mcp (npm · androidapi-mcp)

Send SMS & WhatsApp, verify OTPs, manage contacts, and control Android devices via AndroidAPI.net.

- Trust score: 60/100 (medium)
- Change this week: +22
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `androidapi-mcp`: 60/100 (this document), [markdown](https://verifymcp.io/servers/tecniforgemaryam-androidapi-mcp/androidapi-mcp.md), [page](https://verifymcp.io/servers/tecniforgemaryam-androidapi-mcp/androidapi-mcp)

## Channel facts

- Registry: `npm`
- Package: `androidapi-mcp`
- Version: `1.0.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 86/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (94 of 98), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: no source repository is declared.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 31 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2653 tokens (~51/item across 52 items; 52 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 86/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 58% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add tecniforgemaryam-androidapi-mcp -- npx -y androidapi-mcp
```

### Codex

```bash
codex mcp add tecniforgemaryam-androidapi-mcp -- npx -y androidapi-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tecniforgemaryam-androidapi-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "androidapi-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add tecniforgemaryam-androidapi-mcp --command npx --arg -y --arg androidapi-mcp
```

### Hermes

```yaml
mcp_servers:
  tecniforgemaryam-androidapi-mcp:
    command: "npx"
    args: ["-y", "androidapi-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "tecniforgemaryam-androidapi-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "androidapi-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 59, +45)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [functional regression] Security disclosure: unverified → fail
- [functional improvement] License: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-07-31 (score 14, −24)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 38)

First indexed and scored.

## MCP tools (52)

### `androidapi_get_credits` (~26 tokens)

Get remaining credit balance (and currency) in your AndroidAPI.net account.

### `androidapi_get_subscription` (~23 tokens)

Get your current AndroidAPI.net subscription package name and usage stats.

### `androidapi_get_earnings` (~21 tokens)

Get your partner earnings from AndroidAPI.net.

### `androidapi_get_contacts` (~59 tokens)

List saved contacts (paginated). Returns id, name, phone, and group info.

Input parameters:

- `limit` (number): Results per page (default 10, max 100).
- `page` (number): Page number (default 1).

### `androidapi_create_contact` (~83 tokens)

Create a new contact and assign it to one or more groups.

Input parameters:

- `groups` (string, required): Comma-separated group IDs. Get IDs from androidapi_get_groups.
- `name` (string, required): Full name of the contact.
- `phone` (string, required): Phone number in E.164 (+923012345678) or local (03012345678) format.

### `androidapi_delete_contact` (~30 tokens)

Permanently delete a contact by its ID.

Input parameters:

- `id` (number, required): Contact ID to delete.

### `androidapi_get_groups` (~31 tokens)

List contact groups (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_create_group` (~27 tokens)

Create a new contact group.

Input parameters:

- `name` (string, required): Name of the group.

### `androidapi_delete_group` (~30 tokens)

Delete a contact group by its ID.

Input parameters:

- `id` (number, required): Contact group ID to delete.

### `androidapi_get_unsubscribed` (~36 tokens)

List contacts that have unsubscribed (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_delete_unsubscribed` (~33 tokens)

Remove an unsubscribed contact record by ID.

Input parameters:

- `id` (number, required): Unsubscribed contact ID.

### `androidapi_send_otp` (~234 tokens)

Send a one-time password (OTP) to a phone number via SMS or WhatsApp. Use {{otp}} in the message body to embed the generated code automatically.

Input parameters:

- `account` (string): [WhatsApp only] WhatsApp account unique ID.
- `device` (string): [SMS, devices mode] Linked device unique ID.
- `expire` (number): OTP expiry in seconds (default 300 = 5 min).
- `gateway` (string): [SMS, credits mode] Gateway ID or partner device ID.
- `message` (string, required): OTP message text. Must contain {{otp}} where the code should appear.
- `mode` (string): [SMS only] 'devices' = linked Android device; 'credits' = gateway balance.
- `phone` (string, required): Recipient phone number in E.164 format (e.g. +923012345678).
- `priority` (number): [WhatsApp only] 1 = send immediately, 2 = normal queue.
- `sim` (number): [SMS, devices mode] SIM slot number.
- `type` (string, required): Delivery channel.

### `androidapi_verify_otp` (~45 tokens)

Verify an OTP that was entered by the user. Returns success if the OTP is valid and not expired.

Input parameters:

- `otp` (string, required): OTP code entered by the user.

### `androidapi_send_sms` (~166 tokens)

Send a single SMS to one recipient. Spintax supported in the message body.

Input parameters:

- `device` (string): [devices mode] Device unique ID.
- `gateway` (string): [credits mode] Gateway or partner device ID.
- `message` (string, required): Message body. Spintax supported.
- `mode` (string, required): 'devices' = linked Android device; 'credits' = gateway/balance.
- `phone` (string, required): Recipient phone number (E.164 or local format).
- `priority` (number): [devices mode] 0/1 = high priority (immediate), 2 = normal queue.
- `shortener` (number): URL shortener ID to apply to links.
- `sim` (number): [devices mode] SIM slot.

### `androidapi_send_sms_bulk` (~147 tokens)

Send an SMS campaign to multiple phone numbers and/or contact groups. Spintax and shortcodes are supported.

Input parameters:

- `campaign` (string, required): Campaign name shown in the campaign manager.
- `device` (string)
- `gateway` (string)
- `groups` (string): Comma-separated group IDs. Required if 'numbers' is empty.
- `message` (string, required): Message body. Spintax and shortcodes supported.
- `mode` (string, required)
- `numbers` (string): Comma-separated phone numbers. Required if 'groups' is empty.
- `priority` (number)
- `shortener` (number)
- `sim` (number)

### `androidapi_get_sms_sent` (~33 tokens)

List sent SMS messages (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_sms_received` (~33 tokens)

List received SMS messages (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_sms_pending` (~38 tokens)

List SMS messages currently pending in the send queue (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_sms_message` (~36 tokens)

Retrieve a single SMS message by its ID.

Input parameters:

- `id` (number, required): Message ID.
- `type` (string, required)

### `androidapi_get_sms_campaigns` (~33 tokens)

List SMS campaigns (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_start_sms_campaign` (~28 tokens)

Resume or start a paused SMS campaign.

Input parameters:

- `campaign` (number, required): Campaign ID.

### `androidapi_stop_sms_campaign` (~26 tokens)

Pause a running SMS campaign.

Input parameters:

- `campaign` (number, required): Campaign ID.

### `androidapi_delete_sms_sent` (~25 tokens)

Delete a sent SMS message record.

Input parameters:

- `id` (number, required)

### `androidapi_delete_sms_received` (~25 tokens)

Delete a received SMS message record.

Input parameters:

- `id` (number, required)

### `androidapi_delete_sms_campaign` (~23 tokens)

Delete an SMS campaign.

Input parameters:

- `id` (number, required)

### `androidapi_get_rates` (~36 tokens)

Get available SMS gateways and partner device rates. Use the returned IDs as 'gateway' when sending SMS in 'credits' mode.

### `androidapi_send_whatsapp` (~235 tokens)

Send a single WhatsApp message to one recipient. Supports text, media (image/audio/video), and document attachments via URL.

Input parameters:

- `account` (string, required): WhatsApp account unique ID. Get from androidapi_get_wa_accounts.
- `document_name` (string): [document] Filename with extension, e.g. report.pdf.
- `document_type` (string): [document] Required with document_url.
- `document_url` (string): [document] Direct URL to pdf/xls/xlsx/doc/docx/xml.
- `media_type` (string): [media] Required with media_url.
- `media_url` (string): [media] Direct URL to image, gif, mp4, mp3, or ogg.
- `message` (string, required): Message text or caption. Spintax supported.
- `priority` (number): 1 = send immediately, 2 = normal queue.
- `recipient` (string, required): Recipient phone (E.164) or WhatsApp group address.
- `shortener` (number): URL shortener ID.
- `type` (string): Message type (default: text).

### `androidapi_send_whatsapp_bulk` (~169 tokens)

Send a WhatsApp campaign to multiple recipients or contact groups. Supports text, media, and document messages. Spintax and shortcodes supported.

Input parameters:

- `account` (string, required): WhatsApp account unique ID.
- `campaign` (string, required): Campaign name.
- `document_name` (string)
- `document_type` (string)
- `document_url` (string)
- `groups` (string): Comma-separated contact group IDs. Required if 'recipients' empty.
- `media_type` (string)
- `media_url` (string)
- `message` (string, required)
- `recipients` (string): Comma-separated phones or group addresses. Required if 'groups' empty.
- `shortener` (number)
- `type` (string): Default: text.

### `androidapi_get_wa_accounts` (~35 tokens)

List linked WhatsApp accounts (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_wa_sent` (~35 tokens)

List sent WhatsApp chats (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_wa_received` (~35 tokens)

List received WhatsApp chats (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_wa_pending` (~39 tokens)

List WhatsApp messages currently pending in the queue (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_wa_message` (~36 tokens)

Retrieve a single WhatsApp message by its ID.

Input parameters:

- `id` (number, required)
- `type` (string, required)

### `androidapi_get_wa_campaigns` (~35 tokens)

List WhatsApp campaigns (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_get_wa_groups` (~35 tokens)

List WhatsApp groups that belong to a linked account.

Input parameters:

- `unique` (string, required): WhatsApp account unique ID.

### `androidapi_get_wa_group_contacts` (~46 tokens)

List all members of a specific WhatsApp group.

Input parameters:

- `gid` (string, required): WhatsApp group ID.
- `unique` (string, required): WhatsApp account unique ID.

### `androidapi_validate_whatsapp_phone` (~54 tokens)

Check whether a phone number is registered on WhatsApp.

Input parameters:

- `phone` (string, required): Phone number in E.164 format.
- `unique` (string, required): WhatsApp account unique ID to use for the check.

### `androidapi_link_whatsapp_account` (~59 tokens)

Generate a QR code to link a brand-new WhatsApp account. Returns a QR image URL and a status link to poll until scanning is complete.

Input parameters:

- `sid` (number): Optional WhatsApp server ID. Omit to auto-select.

### `androidapi_relink_whatsapp_account` (~58 tokens)

Re-generate the QR code to reconnect an existing (disconnected) WhatsApp account.

Input parameters:

- `sid` (number): Optional WhatsApp server ID.
- `unique` (string, required): WhatsApp account unique ID to relink.

### `androidapi_get_wa_servers` (~21 tokens)

List available WhatsApp servers for linking accounts.

### `androidapi_start_wa_campaign` (~28 tokens)

Resume a paused WhatsApp campaign.

Input parameters:

- `campaign` (number, required): Campaign ID.

### `androidapi_stop_wa_campaign` (~28 tokens)

Pause a running WhatsApp campaign.

Input parameters:

- `campaign` (number, required): Campaign ID.

### `androidapi_delete_wa_sent` (~27 tokens)

Delete a sent WhatsApp chat record.

Input parameters:

- `id` (number, required)

### `androidapi_delete_wa_received` (~27 tokens)

Delete a received WhatsApp chat record.

Input parameters:

- `id` (number, required)

### `androidapi_delete_wa_campaign` (~25 tokens)

Delete a WhatsApp campaign.

Input parameters:

- `id` (number, required)

### `androidapi_delete_wa_account` (~34 tokens)

Remove a linked WhatsApp account from the system.

Input parameters:

- `unique` (string, required): WhatsApp account unique ID.

### `androidapi_get_devices` (~32 tokens)

List linked Android devices (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_delete_notification` (~27 tokens)

Delete an Android notification record by ID.

Input parameters:

- `id` (number, required): Notification ID.

### `androidapi_send_ussd` (~98 tokens)

Send a USSD / MMI request from a linked Android device (e.g. check balance with *123#). Use androidapi_get_devices to get valid device IDs.

Input parameters:

- `code` (string, required): USSD/MMI code, e.g. *123# or *100*1#.
- `device` (string, required): Linked device unique ID.
- `sim` (number, required): SIM slot number (1 or 2).

### `androidapi_get_ussd` (~35 tokens)

List USSD request history (paginated).

Input parameters:

- `limit` (number)
- `page` (number)

### `androidapi_delete_ussd` (~32 tokens)

Delete a USSD request record by ID.

Input parameters:

- `id` (number, required): USSD request ID.

### `androidapi_get_shorteners` (~41 tokens)

List available URL shorteners you can use in SMS and WhatsApp campaigns. Use the returned ID as the 'shortener' parameter when sending messages.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/tecniforgemaryam-androidapi-mcp/androidapi-mcp#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 59
- 2026-08-01: 14
- 2026-07-31: 14
- 2026-07-30: 38
- 2026-07-28: 38
- 2026-07-27: 38

## Links

- npm package: https://www.npmjs.com/package/androidapi-mcp
- Socket report: https://socket.dev/npm/package/androidapi-mcp
- Changelog RSS feed: https://verifymcp.io/servers/tecniforgemaryam-androidapi-mcp/androidapi-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/tecniforgemaryam-androidapi-mcp/androidapi-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/tecniforgemaryam-androidapi-mcp/androidapi-mcp
