⚡ PARTNER INVITE ACTIVE [] — Automatic Referral Attribution + Free Cloud Phone Runtime Credit Applied on Signup
// DEVELOPER, REST API, CLI & MCP PORTAL

TapClank Developer Documentation

Programmatically orchestrate 100/100 OEM-certified ARM64 Android 15 cloud phones, zero-CDP local WebKit browsers, and Cloudflare R2 cold-storage snapshots via REST (https://api.tapclank.com), Rust CLI (lark), or 36 native MCP tools.

CONTROL PLANE
https://api.tapclank.com

Cloudflare Workers + D1 (tapclank-db) + Durable Objects (PhoneSessionDO) + R2 (tapclank-storage).

SELF-SERVE CONSOLE
https://tapclank.com/app

Generate tc_live_* API keys, inspect 100/100 OEM audits, schedule Cron workflows, and import competitor fleets.

Authentication, Scoped API Keys & VA Group RBAC

Every request to https://api.tapclank.com/v1/* authenticates via either a 30-day HMAC-SHA256 session JWT (Authorization: Bearer <jwt>) or a SHA-256 hashed workspace key (X-API-Key: tc_live_...). Workspace members carry one of four roles: owner, admin, manager, or operator (restricted strictly to allowed_groups — unauthorized group access returns HTTP 403 FORBIDDEN_GROUP_ACCESS).

tc_live_* Scoped API Key Auth
# 1. Generate a scoped tc_live_* API key (or copy from /app Console -> Team & Security)
curl -s -X POST https://api.tapclank.com/v1/auth/api-keys \
  -H "Authorization: Bearer $JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Claude-MCP-Agent","scopes":["read","operator","admin"]}'

# 2. Authenticate any REST endpoint via X-API-Key (or Authorization: Bearer tc_live_...)
curl -s https://api.tapclank.com/v1/analytics/overview \
  -H "X-API-Key: tc_live_98f2c1a4e7b0..."

Claude Desktop & Cursor MCP Configuration

TapClank ships a built-in Model Context Protocol server over stdio (lark mcp / tapclank mcp) exposing 36 tools across local stealth browsers, cloud phones, R2 hibernation, dynamic proxy geo-alignment, and competitor profile imports.

claude_desktop_config.json
{
  "mcpServers": {
    "tapclank": {
      "command": "lark",
      "args": ["mcp"],
      "env": {
        "TAPCLANK_API_URL": "https://api.tapclank.com",
        "TAPCLANK_API_KEY": "tc_live_YOUR_SCOPED_API_KEY"
      }
    }
  }
}
.cursor/mcp.json
{
  "mcpServers": {
    "tapclank-studio": {
      "command": "/usr/local/bin/tapclank",
      "args": ["mcp"],
      "env": {
        "TAPCLANK_API_URL": "https://api.tapclank.com",
        "TAPCLANK_API_KEY": "tc_live_YOUR_SCOPED_API_KEY",
        "LARK_NODE_URL": "http://127.0.0.1:8200"
      }
    }
  }
}

Complete MCP Tool Catalog (All 42 Native Tools)

Includes the full local browser & cloud phone suite plus the 10 Phase 11 Cloudflare R2, Proxy Geo Re-Alignment, Distributed VA Lock, Competitor Importer, and Cron Scheduler tools.

# MCP Tool Name Subsystem Input Schema Description
01 container_list Local Browser {} List local WebKit antidetect browser containers with running status
02 container_create Local Browser { name, group?, proxy?, note? } Create a zero-CDP local WebKit browser profile bound to SOCKS5/HTTP proxy
03 container_update Local Browser { id, name?, group?, proxy? } Hot-swap proxy, group, or metadata on an existing browser container
04 container_start Local Browser { id, url? } Spawn native deeplite WebKit kernel with OS NSEvent trusted input
05 container_stop Local Browser { id } Gracefully close browser kernel and flush encrypted cookie delta
06 container_delete Local Browser { id } Erase local container and associated R2 state bundle
07 goto Local Browser { id, url } Navigate running container and await semantic DOM readiness
08 snapshot Local Browser { id, max_chars? } Token-budgeted accessibility snapshot with @ref handles
09 click Local Browser { id, target } Trusted OS-level NSEvent click (isTrusted: true) by @ref or CSS selector
10 type Local Browser { id, text, target?, pacing? } Human-paced typing with realistic cadence and typo recovery
11 eval Local Browser { id, js } Execute isolated JS expression without Runtime.enable CDP leak
12 task_run Browser RPA { id, steps, dom? } Execute multi-step browser RPA JSON graph synchronously
13 task_add Browser RPA { run } Enqueue scheduled browser RPA job with retry & backoff policy
14 task_cancel Browser RPA { id } Cancel queued or active browser task run
15 task_detail Browser RPA { id } Inspect step execution report and extracted variables
16 task_list Browser RPA {} List all browser RPA queue runs and statuses
17 phone_list Cloud Phone {} List ARM64 cloud phones with storage tier (hot_nvme / cold_r2) and UTC burn
18 phone_create Cloud Phone { name, group?, brand?, timezone?, locale?, proxy? } Provision 100/100 OEM-certified Android 15 phone from 1,290-model catalog
19 phone_start Cloud Phone { id } Start cloud phone (auto-hydrating from R2 if cold_r2) & arm $0.005/min DO
20 phone_stop Cloud Phone { id } Stop cloud phone and pause per-minute billing immediately
21 phone_tier Cloud Phone { id, tier } Switch Smart Stream Tier (headless 0fps | grid 360p@12 | focused 720p@60)
22 phone_copilot Cloud Phone { id, event } Inject Biometric Touch + 17-byte SensorChannel tremor (tap/swipe/scroll/key)
23 phone_sync_input Cloud Phone { target_phone_ids?, event, variance? } Broadcast input across N phones with 15–180ms timing variance & 6px jitter
24 phone_camera_inject Cloud Phone { phone_id, source, spec? } Stream MP4, still image, or SMPTE pattern into POSIX vcam.pipe FIFO
25 phone_camera_status Cloud Phone { phone_id } Read live FPS and injected frame count on virtual camera pipe
26 phone_camera_stop Cloud Phone { phone_id } Stop virtual camera feed injection cleanly
27 phone_tiktok Social RPA { id, task } Run TikTok state machine (warmup, publish_video, carousel, login_2fa, live)
28 phone_workflow Social RPA { id, task } Run typed multi-app workflow (IG, YT, Reddit, X, FB, MultiPlatform) or GAL
29 phone_workflow_catalog Social RPA { platform?, category?, slug?, limit? } Search all 63 server-side RPA templates across 10 social platforms
30 phone_rpa_task Social RPA { id, slug, parameters? } Dispatch any of the 63 canonical RPA templates by slug
31 phone_audit Stealth Audit { phone_id } Run 10-category 100-Point OEM Telemetry & Competitor Parity Auditor
32 doctor Diagnostics {} Verify local kernel, UNIX sockets, permissions, and cloud connectivity
33 phone_hibernate R2 / SAAS Cloudflare R2 & SaaS { id, name? } Offload stopped phone to Cloudflare R2 (cold_r2, $0 egress) & free node NVMe
34 phone_wake R2 / SAAS Cloudflare R2 & SaaS { id, target_node_id?, auto_start? } Hydrate cold_r2 phone onto healthiest ARM64 node with SHA-256 verification
35 phone_snapshot R2 / SAAS Cloudflare R2 & SaaS { id, name? } Create immutable named Time-Machine checkpoint in Cloudflare R2
36 phone_restore R2 / SAAS Cloudflare R2 & SaaS { id, snapshot_id? } Rollback cloud phone /data state to any prior R2 snapshot
37 phone_clone R2 / SAAS Cloudflare R2 & SaaS { id, name?, group_name?, proxy_url? } Clone Gold Master phone with brand-new Luhn IMEI, Android ID, serial & MAC
38 phone_align_proxy R2 / SAAS Cloudflare R2 & SaaS { id, timezone, proxy_url? } Dynamically re-align SIM MCC/MNC, GPS, Wi-Fi APs & contacts to new proxy geo
39 browser_lock R2 / SAAS Cloudflare R2 & SaaS { id, action: 'lock'|'unlock', force? } Acquire/release distributed D1 VA profile lock (prevents 409 cookie corruption)
40 browser_sync_state R2 / SAAS Cloudflare R2 & SaaS { id, direction: 'push'|'pull', state? } Push/pull AES-GCM / SHA-256 verified cookies & LocalStorage via Cloudflare R2
41 import_competitor_profiles R2 / SAAS Cloudflare R2 & SaaS { source, profiles } Batch migrate GeeLark, AdsPower, Multilogin, MoreLogin, or GoLogin exports
42 cloud_schedule_workflow R2 / SAAS Cloudflare R2 & SaaS { phone_id, template_slug, cron_expr, auto_hibernate? } Schedule Cloudflare Cron Sleep-Wake-Hibernate autonomous RPA runs

Cloudflare R2 Hibernate, Wake, Checkpoint & Gold-Master Clone API

TapClank decouples stored phone capacity from active NVMe drives. Hibernating a phone writes its portable state bundle to tapclank-storage (snapshots/<org_id>/<phone_id>/<snap_id>.json) with SHA-256 verification and sets storage_tier = "cold_r2".

POST /v1/phones POST /v1/phones/:id/start POST /v1/phones/:id/stop POST /v1/phones/:id/hibernate POST /v1/phones/:id/wake POST /v1/phones/:id/snapshot POST /v1/phones/:id/restore POST /v1/phones/:id/clone POST /v1/phones/:id/migrate POST /v1/phones/:id/align-proxy
R2 Cold Hibernation & Gold-Master Cloning
# 1. Create a flagship Pixel 9 Pro Cloud Phone in Europe/Berlin
curl -s -X POST https://api.tapclank.com/v1/phones \
  -H "X-API-Key: $TC_KEY" -H "Content-Type: application/json" \
  -d '{"name":"DE-TT-GoldMaster","brand":"Google","model":"Pixel 9 Pro","timezone":"Europe/Berlin"}'

# 2. Offload stopped phone to Cloudflare R2 ($0.00 egress, frees local ARM64 NVMe)
curl -s -X POST https://api.tapclank.com/v1/phones/ph_01/hibernate \
  -H "X-API-Key: $TC_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Post-Warmup R2 Cold Vault"}'
# -> { "ok": true, "storage_tier": "cold_r2", "r2_key": "snapshots/org_.../ph_01/snap_....json" }

# 3. Clone Gold Master into a fresh account phone (synthesizes distinct Luhn IMEI, Android ID & MAC!)
curl -s -X POST https://api.tapclank.com/v1/phones/ph_01/clone \
  -H "X-API-Key: $TC_KEY" -H "Content-Type: application/json" \
  -d '{"name":"DE-TT-Clone-02","proxy_url":"socks5://user:pass@de.proxy.io:1080"}'

# 4. Wake cold_r2 phone onto healthiest ARM64 node with SHA-256 bundle verification
curl -s -X POST https://api.tapclank.com/v1/phones/ph_01/wake \
  -H "X-API-Key: $TC_KEY" -H "Content-Type: application/json" \
  -d '{"auto_start":true}'

Local Antidetect Browsers, 409 VA Lock & R2 Cookie Sync

Before launching a local deeplite WebKit container, acquire an atomic distributed lock via POST /v1/browsers/:id/lock. If another VA already holds the profile, Cloudflare D1 returns HTTP 409 PROFILE_LOCKED, preventing concurrent SQLite/IndexedDB session corruption.

POST /v1/browsers GET /v1/browsers POST /v1/browsers/:id/lock POST /v1/browsers/:id/unlock PUT /v1/browsers/:id/state GET /v1/browsers/:id/state

Sleep-Wake-Hibernate Cloudflare Cron RPA Scheduler

Cloudflare Cron Triggers (* * * * *) evaluate due scheduled_workflows every minute: automatically waking cold_r2 phones, executing any of the 63 server-side RPA templates, recording the workflow_runs receipt, and hibernating the phone back to R2 when auto_hibernate: true.

POST /v1/schedules GET /v1/schedules POST /v1/schedules/:id/run-now DELETE /v1/schedules/:id GET /v1/workflows/runs
POST /v1/schedules
# Schedule a Cloudflare Cron "Sleep -> Wake -> Run RPA -> Auto-Hibernate R2" job
curl -s -X POST https://api.tapclank.com/v1/schedules \
  -H "X-API-Key: $TC_KEY" -H "Content-Type: application/json" \
  -d '{
    "phone_id": "ph_01",
    "template_slug": "multi-platform-video",
    "cron_expr": "0 */6 * * *",
    "auto_hibernate": true,
    "params": {
      "video": "media://asset_01",
      "tiktok-title": "Built with TapClank 100/100 #ai #automation",
      "youtube-title": "Zero-Egress Cloud Phones Explained #shorts"
    }
  }'

# Trigger immediate execution and inspect run receipt
curl -s -X POST https://api.tapclank.com/v1/schedules/sched_01/run-now -H "X-API-Key: $TC_KEY"

Edge Proxy Geo-Exit Resolver & R2 Media / APK Vault

Manage SOCKS5/HTTP proxy pools (/v1/proxies), resolve exact carrier MCC/MNC + residential Wi-Fi SSIDs across 28+ regions (POST /v1/proxies/resolve-geo), and stage MP4 videos, APKs, or GAL flows in Cloudflare R2 (/v1/media) with zero-egress HMAC-signed node pull URLs (/v1/media/:id/download?token=...).

POST /v1/proxies GET /v1/proxies POST /v1/proxies/resolve-geo POST /v1/media GET /v1/media GET /v1/media/:id/download

1-Click Competitor Profile Importer

Send { "source": "geelark" | "adspower" | "multilogin" | "morelogin" | "gologin", "profiles": [...] } to POST /v1/import/profiles to batch-provision cloud phones and antidetect browser profiles with normalized proxies and R2 cookie state.

Billing Ledger, Subscriptions, Webhooks & 30% Lifetime Affiliate API

Per-minute phone sessions bill 500 millicents/min ($0.005/min) via PhoneSessionDO alarms, capped at 95,000 millicents/day ($0.95/day UTC). Referrers earn 30% (3000 bps) lifetime recurring credit on every referred top-up or webhook event.

POST /v1/billing/topup POST /v1/billing/subscribe POST /v1/billing/rental-pass GET /v1/billing/ledger GET /v1/affiliates/me POST /v1/affiliates/redeem GET /v1/audit-logs

TapClank Rust CLI (lark / tapclank)

CLI Reference
# Cloud Phone & R2 Cold Lifecycle
lark phone list
lark phone create --name "US-NY-01" --timezone "America/New_York" --proxy "socks5://127.0.0.1:1080"
lark phone start ph_01
lark phone audit ph_01                      # 100/100 OEM Telemetry Report
lark phone align-proxy ph_01 --timezone "Asia/Tokyo" --proxy "socks5://jp.proxy:1080"
lark phone snapshot ph_01 --name "Pre-Campaign"
lark phone hibernate ph_01                  # Offloads to Cloudflare R2 (cold_r2)
lark phone wake ph_01                       # Hydrates onto healthy ARM64 node
lark phone clone ph_01 --name "US-NY-Clone" # Fresh Luhn IMEI + MAC + Serial

# 1-Click Competitor Migration & MCP Server
lark import --source geelark --file ./geelark_export.json
lark mcp                                    # Starts 36-tool JSON-RPC stdio MCP server

Netcup / Ampere ARM64 Bare-Metal Node Bootstrap

Run bootstrap-netcup-node.sh on any Ubuntu 24.04 ARM64 server to configure binder_linux, pre-create direct character /dev/binder* nodes (mknod), install dual-mode LXC / private-cgroup Docker, and register lark-node with https://api.tapclank.com.

Bare-Metal ARM64 Node Provisioning
# 1. Provision Ubuntu 24.04 LTS ARM64 (Netcup VPS 8000 ARM G12.5 / Ampere Altra / RK3588S)
curl -fsSL https://tapclank.com/bootstrap-node.sh | sudo \
  LARK_CLOUD_URL="https://api.tapclank.com" \
  LARK_NODE_ID="eu-nbg-arm-01" \
  LARK_NODE_SECRET="your_hmac_node_secret" \
  CONTAINER_RUNTIME="lxc" \
  bash

# 2. Build neutralized Android 15 OEM base image (patches *redroid*.so -> *qcom*.so)
sudo ./deeplark/scripts/build-phone-image.sh android-oem:15-arm64