New:Socket for Asana Is Now Available.Learn more
Get Started

@three-ws/avatar-agent

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@three-ws/avatar-agent

3D AI Agent Avatar — MCP server that spawns a textured GLB avatar, inspects/validates/optimizes any 3D model, gives the agent a Solana wallet + a voice, and ships full pump.fun powers (atomic Jito-bundled launches + creator-fee collection). Powered by thr

Source
npmnpm
Version
1.0.0
Version published
Weekly downloads
24
-70.73%
Maintainers
1
Weekly downloads
 
Created
Source

3D AI Agent Avatar

The MCP server for 3D + AI agents. Inspect, validate, and optimize any GLB. Spawn a textured 3D avatar with a Solana wallet, a voice, and full pump.fun powers — including atomic Jito-bundled launches and creator-fee collection.

npm license node mcp

Registry name: io.github.nirholas/3D-AI-Agent-Avatar · npm: @three-ws/avatar-agent

A single MCP server that's two things at once:

  • A general-purpose 3D toolkitinspect_glb, validate_glb, optimize_glb, viewer_url work on any GLB/glTF model, no avatar required. Powered by @gltf-transform/core + Khronos's official gltf-validator.
  • A full 3D agent in a box — spawn a textured GLB avatar, give it a voice (OpenAI TTS), a Solana wallet, and pump.fun trading powers (Jupiter swaps, atomic Jito-bundled launches, creator-fee collection).

Install it once. Your Claude / Cursor / Continue / Cline can now:

  • Inspect any GLB — meshes, materials, textures, animations, bounding box, vertex + triangle counts.
  • Validate any GLB against the Khronos glTF 2.0 spec (the same engine behind gltf.report).
  • Optimize a GLB — dedup, prune, weld, Draco-compress; get the smaller file back inline.
  • Build a viewer URL for any GLB so humans see it in WebGL with one click.
  • Spawn a 3D avatar from the curated defaults (default, cz) or any GLB URL.
  • Dress it — hats, glasses, earrings, poses.
  • Generate a fresh avatar from a text prompt via Replicate (Hunyuan-3D).
  • Give it a voice — OpenAI TTS, 11 voices.
  • Hand it a Solana wallet — vanity-grind a three… address in milliseconds.
  • Read live pump.fun data — Jupiter price, Dexscreener volume, pump.fun meta, holders.
  • Buy any token — Jupiter swap, optionally inside a sniper-resistant Jito bundle.
  • Launch a coin atomically — separate funder + creator wallets, both txs in the same block.
  • Collect creator fees atomically — collect + drain to a safe wallet in one tx.
  • Resolve names — ENS (.eth) and SNS (.sol).

Built and maintained by three.ws. Atomic pump.fun pieces are ported from nirholas/atomic.

Quick start (Claude Desktop / Cursor / Continue)

Add this to your MCP config:

{
	"mcpServers": {
		"3d-ai-agent-avatar": {
			"command": "npx",
			"args": ["-y", "@three-ws/avatar-agent"],
			"env": {
				"SOLANA_RPC_URL": "https://api.mainnet-beta.solana.com",
				"OPENAI_API_KEY": "sk-...",
				"THREE_MINT": "<the $three CA on pump.fun>"
			}
		}
	}
}

Restart your client. Ask it: "Inspect https://three.ws/avatars/cz.glb, then spawn CZ, give him shades, and read me the latest snapshot for $three."

Two 30-second demos

3D toolkit demo (no avatar required)

You ▸ Inspect this GLB: https://three.ws/avatars/cz.glb — how many triangles?
      Then validate it against the Khronos spec and optimize it with Draco.

Runs:

  • inspect_glb({ url }) → mesh/material/animation breakdown + triangle count + bbox
  • validate_glb({ url }) → official Khronos report
  • optimize_glb({ url, draco: true }) → dedup → prune → weld → Draco, returns the smaller GLB inline

Avatar agent demo

You ▸ Spawn cz, give him shades, mint him a "three"-prefixed wallet,
     pull a snapshot of $three, and have him say "we're so back."

Behind the scenes the MCP runs:

  • spawn_avatar({ preset: "cz", voice: "onyx" }) → returns a sessionId + viewer URL
  • dress_avatar({ sessionId, accessoryIds: ["glasses-shades"] })
  • wallet_create({ sessionId, vanityPrefix: "three" }) → base58 pubkey starting with three…
  • pump_snapshot({ token: "three" }) → live Jupiter price, Dexscreener volume, holders
  • speak({ sessionId, text: "we're so back" }) → mp3 base64 the client plays

Tool surface (20 tools)

3D toolkit (works on any GLB)

ToolWhat it does
inspect_glbMesh / material / animation / skin breakdown + bounding box + vertex & triangle counts. @gltf-transform/core.
validate_glbRun Khronos's official gltf-validator on a GLB; errors, warnings, infos, hints with JSON pointers.
optimize_glbDedup → prune → weld → optional Draco. Returns optimized bytes inline + before/after sizes.
thumbnail_glbRender any GLB to a PNG via three.ws's hosted three-light rig + auto-framing camera. Same pipeline as OG cards. Returns base64 PNG inline.
viewer_urlBuild a three.ws/viewer?... URL + ready-to-paste iframe snippet for any GLB or avatar session. Supports background, auto-rotate, camera preset OR explicit orbit, AR mode, dimensions.

Avatar

ToolWhat it does
list_avatarsCatalog of default GLB avatars (default, cz), accessories, and pose presets.
list_animationsLive fetch of three.ws's 24 pose presets (T-pose, wave, thinker, jump, dance, warrior2, …) grouped by category.
spawn_avatarCreate an avatar session from a preset or custom GLB URL. Returns sessionId.
dress_avatarApply accessories + pose to a session.
render_avatarRender a posed avatar to a PNG — pose preset + camera orbit (theta/phi/radius) + ARKit-52 facial expression. Same rig + lighting as the three.ws customizer's save-snapshot.
generate_avatarText/image-to-3D via Replicate. New session preloaded with the generated GLB.

Voice

ToolWhat it does
speakOpenAI TTS — synthesize speech in the avatar's voice. Returns base64 audio.

Wallet

ToolWhat it does
wallet_createGenerate a Solana keypair. Optional vanity grinder (vanityPrefix: "three").
wallet_balanceRead SOL + all SPL token balances (incl. Token-2022).
wallet_sendSend SOL on mainnet. Execution action.

pump.fun

ToolWhat it does
pump_snapshotLive market snapshot: price, volume, holders, meta. Pass target: "three" for $three.
pump_buyJupiter swap, direct or Jito-bundled (funder→buyer transfer + swap atomic). Execution action.
pump_launchAtomic launch via Jito bundle: separate funder + creator wallets, both txs same block. Uploads metadata to pump.fun IPFS if no URI is supplied. Execution action.
pump_collect_feesAtomic collect: collectCoinCreatorFee + drain to safe wallet in one tx inside a Jito bundle — leaked-creator-key resistant. Execution action.

Identity

ToolWhat it does
ens_sns_resolveResolve .eth (ENS) and .sol (Bonfida SNS) names to addresses with reverse + favorite-domain lookups.

Environment variables

VariableRequired forNotes
SOLANA_RPC_URLAll Solana opsDefaults to https://api.mainnet-beta.solana.com. Bring your own (Helius/QuickNode/Triton) for production.
ETH_RPC_URLens_sns_resolveOptional — falls back to ethers' default public providers.
HELIUS_API_KEYpump_snapshot (enhanced)Adds exact supply + DAS data.
OPENAI_API_KEYspeakUsed directly against api.openai.com/v1/audio/speech.
REPLICATE_API_TOKENgenerate_avatar
REPLICATE_TEXT_TO_AVATAR_MODELgenerate_avatarPin a commercial-OK version, e.g. latest tencent/hunyuan-3d-3.1.
SOLANA_SECRET_KEYwallet_send / pump_buy default signerPer-call secret args override. Treat like cash.
THREE_MINTpump_snapshot / pump_buy shorthandSet so tools accept target: "three".

Atomic pump.fun, briefly

The pump_launch and pump_collect_fees tools wrap the pattern from nirholas/atomic. Two things matter:

Launch: the create tx's payerKey is the creator wallet, not the funder — so the on-chain creator field (which receives pump.fun creator fees forever) is the creator wallet. But the creator doesn't need to hold SOL: the funder transfers rent + tip in Tx1 of the same Jito bundle. Either both land or neither does.

Collect: even if a creator key is shared / leaked, the collect-and-drain runs as a single tx inside a Jito bundle. No competing collector can interleave a tx between collectCoinCreatorFee and the drain, even with the same key.

If you start hitting Bundles must write lock at least one tip account, the Jito tip account list has rotated — refresh src/lib/jito.js.

Running locally

npm install @three-ws/avatar-agent
npx three-avatar-agent             # MCP stdio server
npx @modelcontextprotocol/inspector npx three-avatar-agent   # GUI

Or clone this repo:

git clone https://github.com/nirholas/three.ws.git
cd three.ws/packages/avatar-agent-mcp
npm install
npm start

Safety

pump_buy, pump_launch, pump_collect_fees, and wallet_send all execute real on-chain transactions and move real funds. The MCP makes no judgment about the input — if your client tells it to send 100 SOL to a random address with a valid signer, it will. Configure your client's tool-approval flow accordingly.

Secrets are never logged or persisted. Secrets returned by wallet_create are returned ONCE — store them yourself.

License

MIT © 2026 three.ws

Powered by the Model Context Protocol, the @nirholas/pump-sdk, and Jito's Block Engine.

Keywords

mcp

FAQs

Package last updated on 22 May 2026

Related posts