Create BitBadges collections (tokens, NFTs, stablecoins) using MCP tools. Use when user wants to create collections, smart tokens, NFTs, or needs to generate BitBadges transaction JSON.
Build BitBadges collections using the bitbadges-builder-mcp server tools.
| Tool | Purpose |
|---|---|
build_smart_token | Create IBC-backed smart token (stablecoin, wrapped asset) |
build_fungible_token | Create ERC-20 style fungible token |
build_nft_collection | Create NFT collection with minting config |
generate_backing_address | Compute backing address for IBC denom |
generate_approval | Build approval structures |
generate_permissions | Build permission presets |
generate_alias_path |
| Build alias path for liquidity pools |
lookup_token_info | Get token info by symbol or IBC denom |
validate_transaction | Validate JSON against critical rules |
get_current_timestamp | Get timestamp for time-dependent configs |
get_skill_instructions | Get instructions for specific skill |
get_master_prompt | Get complete critical rules |
| Symbol | Decimals | Use For |
|---|---|---|
| USDC | 6 | USD stablecoin |
| ATOM | 6 | Cosmos Hub |
| OSMO | 6 | Osmosis |
| BADGE | 9 | Native BitBadges |
User: "Create a 1:1 backed USDC stablecoin with 100 USDC/day spend limit"
1. Call `lookup_token_info` with query "USDC"
→ Get IBC denom, decimals, backing address
2. Call `build_smart_token` with:
- ibcDenom: "USDC"
- creatorAddress: [user's address]
- name: "Wrapped USDC"
- symbol: "wUSDC"
- dailyWithdrawLimit: "100000000" (100 USDC in 6 decimals)
3. Call `validate_transaction` to verify
4. Return JSON for user to broadcast
User: "Create an NFT collection of 1000 items at 5 BADGE each"
1. Call `build_nft_collection` with:
- creatorAddress: [user's address]
- name: "My NFT Collection"
- totalSupply: "1000"
- mintPrice: "5000000000" (5 BADGE in 9 decimals)
- mintPriceDenom: "ubadge"
- tradable: true
2. Call `validate_transaction` to verify
3. Return JSON for user to broadcast
User: "Create a swappable token called MYTOKEN"
1. Call `build_fungible_token` with:
- creatorAddress: [user's address]
- name: "My Token"
- symbol: "MYTOKEN"
- swappable: true
- decimals: "9"
2. Call `validate_transaction` to verify
3. Return JSON for user to broadcast
"1" not 1{ "start": "1", "end": "18446744073709551615" }"18446744073709551615""All" - Any address"Mint" - Mint address"!Mint" - Except Mint"bb1..." - Specific address"!bb1..." - Except address"!Mint:bb1..." - Smart Token unbacking formatfromListId: "Mint" approvalsallowBackedMinting: true requiredmustPrioritize: true requiredoverridesFromOutgoingApprovals: true for backing addresses (recommended — backing addresses auto-set their approvals, so it works either way)overridesFromOutgoingApprovals: false for unbacking (sender is a regular user)overridesFromOutgoingApprovals: truefromListId: "Mint"tokenIds fieldWhen converting user amounts to base units:
If validation fails, common issues:
"1" not 1overridesFromOutgoingApprovals: true for MintAlways return:
{
"messages": [
{
"typeUrl": "/tokenization.MsgUniversalUpdateCollection",
"value": { ... }
}
]
}