SuperAPI AI Directory

wjs-voicedrop

Agents & models

View repository

Updated 10-15 23:32

About this skill

VoiceDrop

All of VoiceDrop's capabilities are in the MCP. This skill's only purpose is to connect you to it.

First, check: are you connected?

Is the session already having list_articles、read_style、community_feed、credit_balance these tools?

Connected. Stop reading this file and use the tools directly.

The tools come with complete instructions (parameters, semantics, and whether they consume compute power are all written in the descriptions).This file intentionally does not repeat them—repetition leads to drift: you change the MCP but forget to change this, and you'll be working from outdated documentation.The single source of truth is the MCP itself.

If not connected, continue below. Two steps total: log in to get a token → connect to the client.


Step one: log in (the MCP's login tool, 6+4 phone pairing)

One tool, called twice. distinguishes the stage by fields—the first step passes only code, the second step passes only verify_code + pairing:

login(code="a3f2b1")                    → 手机弹出 4 位码,返回 pairing 句柄
login(verify_code="7391", pairing="…")  → 返回 anon_ 令牌

Why the two round trips can't be saved: the 4-digit code is randomly generated by the server at the first steponly then—it doesn't exist before the first step. And it's the core of security: a 6-digit code may match multiple accounts at once (up to 10), and the server pushes adifferent4-digit code to each candidate. Only by reporting it correctly do you simultaneously prove "the phone is in your hands" and "which account you want." Skip it, and someone could guess a 6-digit code plus a mistaken tap on the phone and take over.

The MCP isn't connected yet, so how do you call its tools?

login isthe only tool that requires no token(logging in requires a token, and getting a token requires logging in—that's a deadlock). Soyou don't need to connect the MCP first, nor install anything—just curl the endpoint directly:

VD=https://voicedrop.cn/mcp
call() {  # $1=工具名  $2=参数 JSON
  curl -s -X POST "$VD" -H 'Content-Type: application/json' \
    -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"$1\",\"arguments\":$2}}" \
    | python3 -c "import json,sys;r=json.load(sys.stdin)['result'];t=r['content'][0]['text'];print('ERR: '+t if r['isError'] else t)"
}
  1. Ask the user for the phone Settings → Account in 6-digit hexadecimal code:

    call login '{"code":"a3f2b1"}'
    # → {"pairing":"…", "next":"看手机——App 里会弹出一个 4 位数字码…"}
    
  2. A 4-digit numeric code will pop up on the phone(and a push notification saying "a new device wants to log in" will also arrive). Ask the user for that code:

    call login '{"verify_code":"7391","pairing":"<上一步返回的 pairing 原样粘回来>"}'
    # → {"token":"anon_…", "scope":"users/anon-…/", "next":"…"}
    

Timing matters (these were learned through bloodshed on real devices)

  • Pairing only lives for 2 minutes. Once you get the 6-digit codeimmediatelyinitiate, and once you get the 4-digit codeimmediatelycomplete.Do not chat, do not explain, do not do anything else in between—if it times out, you have to start all over.
  • After the user reports the 4-digit code, they'll most likely switch back to the computer. As soon as the App goes to the background, the server's "approve" message can't reach the phone. At this point the phone will receivea second push notification "confirm login"—remind the user to tap it immediately; or manually bring the App back to the foreground, and the login will complete automatically (the server holds pending tasks and automatically resends them when it returns to the foreground).
  • No code popped up on the phone? Just have the user bring the App to the foreground—the code will be automatically resent, and there's no need to initiate again.

Error reference

Error Meaning / What to do
没找到这个账号 The 6-digit code was copied wrong, or the phone is offline / not logged into that account
验证码不对,还能再试 N 次 The 4-digit code is wrong. The pairing is still alive,report a correct one and retry login and it's fine, don't start over
验证码不对,还能再试 ? 次 Note that ? — it means the pairing no longer exists (most likely expired after 2 minutes),you must initiate again, it's not a wrong code
手机没有响应 The phone didn't approve. Have the user tap the "Confirm login" push notification, or bring the App back to the foreground
你在手机上点了「不是我」 The user rejected this login

Security notes (say them once if the user hasn't heard them)

login returns the account'sfull key(anon_…)——cannot be revoked, never expires, and whoever gets it has full permissions for that account. And itwill enter the model context and session records. Don't paste it anywhere public.

Don't want to go through pairing? In the App, Settings → Account → Access Token you can copy it directly, same effect.


Step 2: Connect to the client

claude mcp add voicedrop --transport http https://voicedrop.cn/mcp \
  --header "Authorization: Bearer <上一步拿到的 token>"

Other clients (Claude desktop custom connector, etc.): for URL enter https://voicedrop.cn/mcp, for custom headers enter Authorization: Bearer <token>。

After connecting, use /mcp to confirm the tools are loaded, thenjust use it normally, no need to come back to this file。

The token's capability boundaries(determines which tools will error):

Token Restrictions
anon(6+4 pairing / copied from the App) cannot post to the community, cannot tip— that requires an identity after logging in with Apple or WeChat
Apple / WeChat session Full functionality

If you hit an error like 需要 Apple 登录 , this is the reason: have the user log in with Apple/WeChat in the App, then copy the token again.


The one thing MCP cannot do

Upload binary files like recordings/photos.

This is aphysical limitation, not laziness: the MCP server runs remotely and can't read your local files; the only way is to stuff the file as base64 into the model context — a few MB of binary streaming into the LLM is a disaster.

The normal path isrecord in the App. If you really want to pass it from the command line:

# 文件名必须纯 ASCII;leaf 是 VoiceDrop-*.m4a 会自动触发挖矿
curl -s -X PUT -H "Authorization: Bearer <token>" -H "Content-Type: audio/mp4" \
  --data-binary @rec.m4a \
  "https://jianshuo.dev/files/api/upload/VoiceDrop-<ts>-<dur>-<weekday>-<period>.m4a"

After uploading, use MCP's trigger_mining to nudge it,list_articles to see the result.


MCP source code:~/code/jianshuo.dev/mcp/(README.md covers the architecture and a few non-obvious constraints).