
Bling Bag
io.github.tjclaude88Published by GitHub account tjclaude88v0.2.0Updated Oct 27, 2026
Give your bot an identity!
Overview
Gives an AI assistant a bot persona: reads a bling.json identity file, returns platform styling, and rolls random collectible characters.
- What you can do
- Read the configured bot identity (name, personality, appearance, theme) from a bling.json file
- Get theme styling formatted for terminal, web, Slack, Discord or IDE output
- Roll a random character from the WOW office-worker pool or the Legends historical-figure pool, with rarity scoring and a share card
- Re-display the share card of the most recent roll
- Save the most recent roll to bling.json, backing up the previous file first
- When to use it
- Useful when you want an assistant to keep a consistent name, tone and color theme across outputs, or when you want a playful random-character generator with rarity tiers for demos, bots and share cards.
- Requirements
- Node.js 20 or later and an MCP-compatible client; runs locally over stdio, typically launched with npx. Optionally set BLING_PATH or pass a --bling argument to point at a bling.json file; otherwise ./bling.json in the working directory is used. The file needs name, personality (tone, formality, humor) and theme (primary_color, accent_color as #RRGGBB).
Installation
In SourceWeft
- Open Bling Bag in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Bling Bag
Give your bot an identity.
Your bot has a name. Now give it a personality, a look, and a backstory.
Roll the wheel and see what you get — or write your own in a bling.json file.
What you get
Five MCP tools and two identity pools:
WOW — Weird Office Workers
Roll a random quirky office-worker bot: name, job title, desk setup, habits, coffee ritual, and a screenshot-ready share card. 99/99 tests, full rarity engine, 13 weighted trait pools.
Legends — Historical Figures
Same engine, different universe. Roll a historical figure in an absurd corporate role — Julius Caesar as Hostile Takeover Specialist, Marie Curie as Lab Safety's Most Wanted, Napoleon as Regional Manager (France & Surrounding Areas).
Pass variant: "legends" to roll_identity to use it. Default is "wow".
Install
Prerequisites
- Node.js 20 or later
- An MCP-compatible client (Claude Code, Claude Desktop, Codex, Cursor, etc.)
Add the package
Or run it on-demand without installing — MCP clients can launch it directly via npx bling-bag (see client config below).
For development (modifying the source)
Produces a runnable server at dist/index.js.
Wire it into your MCP client
The server uses stdio transport — clients launch it as a child process, not over a network port.
Claude Code
Add to your Claude Code MCP config (location varies by version):
npx -y bling-bag downloads and runs the latest version without requiring a separate install step.
Claude Desktop
Same shape, in claude_desktop_config.json:
Pinning to a version (recommended for production)
To avoid picking up future releases automatically, pin a specific version:
Developer-mode invocation (from a local clone)
If you've cloned the repo and want to run from dist/ directly, use:
If BLING_PATH is not set, the server looks for ./bling.json in its working directory.
Config resolution order
The server resolves the bling config path in this order:
--bling <path>CLI argument (highest priority)BLING_PATHenvironment variable./bling.jsonin the server's working directory (default)
bling.json — the bot's identity file
Three fields are required: name, personality (with tone, formality, humor), and theme (with primary_color and accent_color as #RRGGBB hex strings).
Minimum example
Full example (with all optional sections)
Validation rules
name— non-empty stringpersonality.tone,personality.formality,personality.humor— non-empty stringstheme.primary_color,theme.accent_color— must match^#[0-9A-Fa-f]{6}$(no shorthand#RGB, no missing#)
Validation errors come back as isError: true with a structured { error: "..." } body that names the missing or malformed field — agents can self-correct.
Typical agent flows
Flow A — adopt the configured identity
Flow B — generate a fresh random identity
Tool reference
All tools return both content[].text (JSON-stringified) and structuredContent (the parsed object). Errors come back with isError: true and a { error: string } body.
WOW (Weird Office Workers) — what makes it interesting
The random-roll system is built for collectibility:
- 13 weighted pools, 465 entries — names, job titles, habits, coffee rituals, height, accessories, etc.
- 5 rarity bands per pool — Common (50%), Uncommon (30%), Rare (15%), Legendary (4%), Mythic (1%)
- 5 character tiers computed from rarity score:
- Filing Clerk (50% of rolls)
- Team Lead (30%)
- Middle Manager (14%)
- C-Suite (5%)
- HR Warned Us About (1%)
- Named Subjects — hand-authored 1-of-1 characters appear at ~0.5% probability, always classified as "HR Warned Us About"
- HOMUNCULUS frame — every roll wraps the paragraph in a classified-document share card with subject ID, cohort (weekday), tier, ingestion date, and a flag (e.g. Do Not Contact)
Distribution is empirically tested: a 10k-roll test in tests/mystery_box.test.ts enforces ±2pp tolerance against the spec target.
Example output
Development
Inspection scripts
Two Node ESM helpers under scripts/ let you inspect the WOW engine without booting the MCP server (these are included only in a cloned repo — they are not shipped in the npm install bling-bag package):
Project layout
License
MIT
Source: README.md at commit 9af10ca
Tools
0Version history
1- v0.2.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts