Join the Agent Deck Discord Server!
Discord에서 Agent Deck 커뮤니티 확인, 357명과 자유 음성·텍스트 채팅 이용
지갑 주소를 트위터·파캐스터 프로필로 변환, 8개 EVM 체인 지원, 485만 지갑 인덱스 기반
Turn wallet addresses into Twitter and Farcaster profiles across eight EVM chains: Ethereum, Base, Robinhood Chain, Arbitrum, Polygon, Optimism, BNB Chain and HyperEVM. Backed by a 4.85M-wallet index.
소셜TypeScript · JavaScriptGitHub @starl3xx온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기walletlink.social: resolve EVM wallet addresses to the X and Farcaster accounts their owners published, and resolve a handle back to its wallets. REST API, MCP server and an x402 rail, across eight onchain networks.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Turn wallet addresses into the people behind them, and reach them where they already are
It also runs backwards: give it an X handle or a Farcaster username and it returns the wallets attached to that person.
The number most tools quote is the one that flatters them. Two numbers matter here, and conflating them will make you plan a campaign you cannot run.README 전문 보기 ↗A remote MCP server with eight tools, drawing the same credits as the REST API. There is nothing to install:
https://walletlink.social/api/mcp
claude mcp add --transport http walletlink https://walletlink.social/api/mcp --header "Authorization: Bearer wts_live_YOUR_KEY"Authorization: Bearer header. Keys are free for any signed-in account.Listing the tools needs no credential. The MCP page has the config block and what a connection can reach, and the docs have a config for each client.
Wallet list in (CSV · contract address · paste)
├─ Resolve against an index of 4.8M+ wallet identities
├─ Farcaster: complete protocol coverage, refreshed daily
├─ X handles: attested first, labeled always, never inferred
├─ Rank by holdings × follower reach
└─ Export CSV, or an X list ready to import
It also runs backwards: give it an X handle or a Farcaster username and it returns the wallets attached to that person.
The number most tools quote is the one that flatters them. Two numbers matter here, and conflating them will make you plan a campaign you cannot run.
| Question | Answer |
|---|---|
| Wallets with an X or Farcaster account | 16-46% by chain |
| What tools that match wallets to social accounts typically publish | low single digits |
The chain decides this more than the collection does: Base sits at the top of that range because Base is where Farcaster lives, Ethereum near the bottom. The measured per-chain table lives in the coverage docs. Use your chain’s figure, not an average.
Having an account and reaching it are different claims. Of 482,968 X handles resolved, 70.1% are live, 19.7% suspended and 10.2% are names nobody holds. Matches carry that answer wherever the handle has been resolved.
| Network | Nature of the match |
|---|---|
| Farcaster | Complete. Every account and its addresses, refreshed daily. Matching is deterministic, so a miss is real information rather than missing information. |
| X | Attested first, labeled always. Over 99.7% of X matches are links the wallet owner published themselves: a Farcaster verification, an onchain ENS record, an attested-social sign-in, or a manually verified record. Anything else is correlated and labeled so in its evidence class, so a match always tells you how it was established. Nothing is inferred from display names, bios or timing. |
Coverage would be higher if we guessed. Contacting the wrong person is worse than contacting fewer people.
| Three ways in | CSV upload, contract import (holders fetched for you), or pasted addresses |
| Eight chains | Ethereum, Base, Robinhood Chain, Arbitrum, Polygon, Optimism, BNB Chain, HyperEVM, NFTs and tokens on all eight |
| Priority scoring | holdings × log₁₀(Farcaster + X followers + 1), weighting reach and stake together |
| Agent detection | 13,622+ known AI agent wallets, flagged only where the owner attested nothing that says otherwise |
| Reverse lookup | X handle or Farcaster username back to wallets |
| Public API | Included with every pack, drawing the same credits; self-serve keys |
| MCP server | Eight tools at /api/mcp, OAuth or the same key, same balance; listed in the MCP registry |
| Onchain rail | $1 Agent pack for USDC on Base at /api/x402/buy, no account; key recovery by wallet signature |
| Exports | Full CSV sorted by priority, or a plain handle list for an X list import |
Credit packs, bought once and metered in matches. A match is a wallet resolved to an X handle or a Farcaster account; a wallet that resolves to nothing costs nothing. Credits last 12 months from purchase. There are no subscriptions.
| Pack | Price | Matches | Fits |
|---|---|---|---|
| Free | $0 | 100 per rolling 30 days | Trying it on a real list |
| Trial | $29 | 250 | One list, once |
| Campaign | $99 | 1,500 | A launch or an airdrop |
| Scale | $299 | 6,000 | Several lists, or one large one |
| Index | $899 | 25,000 | Agencies and repeat work |
Every pack includes the same features; packs differ only in how many matches they hold. lib/packs.ts is the source of truth: the pricing modal, the checkout, the comparison pages and the schema.org offers all read from it.
Three doors into the same index, drawing the same match balance. The full reference, including credit costs, rate limits and error codes, is at docs.walletlink.social; the README does not restate it.
REST. Keys are self-serve from the account menu for any signed-in account, including one on the free allowance. A call draws credits only for wallets that resolve, so the key and the balance are separate questions.
curl https://walletlink.social/api/v1/wallet/0xd8da...96045 \
-H "Authorization: Bearer wts_live_YOUR_KEY"
MCP. https://walletlink.social/api/mcp, eight tools over the same endpoints, with a bearer key or an OAuth 2.1 connection. Listed in the official MCP registry as social.walletlink/wallet-identity. The design rationale (why the access token is an api_keys row, why the server bills nothing of its own) lives in the header of app/api/mcp/route.ts.
The skill file. https://walletlink.social/skill.md, for an agent that installs a capability from a URL rather than a config block: the tools, what each costs, how to authenticate, how to read a result. Generated from the same constants and canonical sentences as everything else, so it cannot quote a price the product does not charge.
Onchain rail. POST /api/x402/buy sells a $1 Agent pack for USDC on Base with no account, no card and no email: pay, and the response carries a fresh API key. /api/x402/recover reissues a key to the wallet that paid, on a signed challenge.
Apify. Wallet to Twitter & Farcaster Lookup wraps the REST API as a marketplace Actor, for people who buy tooling by browsing rather than by reading docs. Free to run, and it takes the caller’s own key, so it spends the same free allowance and the same packs. Source in integrations/apify-actor/.
CSV / contract / paste
↓
lib/csv-parser.ts ──── detects wallet + holdings columns
↓
/api/jobs ──────────── creates a job; lib/job-processor.ts runs it in chunks, the client polls
↓
┌─ social_graph ─────── fresh rows and persisted negatives short-circuit
├─ wallet_cache ─────── 7-day TTL, negatives included
└─ resolution pipeline identity sources, then optional ENS text records
↓
social_graph ─────────── positives and negatives persisted
↓
ResultsTable ─────────── virtualized, sortable, exportable
Negatives are persisted deliberately. “Checked, nothing there” is an answer worth keeping, and it is what stops the pipeline paying repeatedly to rediscover the same absence.
| Layer | Tech |
|---|---|
| Framework | Next.js 16, App Router |
| Database | Neon PostgreSQL, Drizzle ORM |
| Styling | Tailwind CSS v4 |
| UI | Radix primitives |
| Background jobs | Vercel Cron (/api/jobs/worker) |
| Payments | Stripe |
| Docs | Mintlify at docs.walletlink.social |
| Hosting | Vercel |
app/
api/v1/ public API (wallet, batch, reverse, stats, usage)
api/developer/ API key management
api/cron/ scheduled ingest and refresh
vs/ competitor comparison pages
components/ UI, including ApiKeysModal and DocsChat
lib/ resolution pipeline, chains, plans, rate limiting
docs-site/ published Mintlify docs ← customer-facing
docs/ internal runbooks ← never published
docs-site/ and docs/ are deliberately separate. docs/ holds operational runbooks and is not the Mintlify content root.
This repo is public deliberately. The product’s core claim is that every match carries the class of evidence behind it and none of it is inferred, and public code is what makes that claim checkable. What stays out is equally deliberate: docs/ is internal and never published, and operational secrets live in a private ops repo.
npm install
cp .env.example .env.local # fill in what you need
npm run dev
Open localhost:3000. The app runs without a database; caching, history and the API need one. .env.example documents every variable: DATABASE_URL enables anything stateful, the Stripe keys enable payments, and identity-source credentials are listed beside their entries.
npm run dev # dev server
npm run build # production build (typechecks as part of the build)
npm run typecheck # tsc --noEmit, the faster standalone check
npm run preflight # every CI gate that needs no database, no Chrome and no secrets
npm run lint # ESLint
npm run format # Prettier (CI enforces formatting)
npm run db:push # refuses; schema changes are hand-written SQL, see CLAUDE.md
npm run db:studio # Drizzle Studio
npm run check:<guard> runs one gate alone (palette, design, contrast, og, invariants, figures, height); package.json names them all.
Changes go through a branch and a PR, never straight to main. The PR template asks for an explicit docs decision and CI enforces it: a PR touching the public API surface fails unless docs-site/ moves with it, or carries the no-docs-needed label.
See CLAUDE.md for conventions, including house style (sentence case headings, curly apostrophes, “onchain” as one word).
Report a vulnerability privately, never in a public issue. SECURITY.md has the channels, the scope, the testing rules and what to expect; the preferred channel is a private report on GitHub. The same contacts are published for machines at /.well-known/security.txt.
See CHANGELOG.md.
AGPL-3.0. See LICENSE.
made with 🌠 by @starl3xx