Created
May 27, 2026 08:58
-
-
Save andykimisgreat/be22b54da24827c41a8030495d683337 to your computer and use it in GitHub Desktop.
$ORBIT Base MCP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Orbit Token Plugin | |
| > [!IMPORTANT] | |
| > ## STOP — COMPLETE BASE MCP ONBOARDING FIRST | |
| > | |
| > Before doing anything, you MUST: | |
| > 1. Call `get_wallets` to get the user's wallet address | |
| > 2. Confirm the user is on Base mainnet (chainId: 8453) | |
| > | |
| > The wallet address is REQUIRED for every mint call. | |
| Orbit Token (ORBIT) is a mintable ERC-20 token on Base mainnet. | |
| Mint price: **0.0000001 ETH (100 gwei) per ORBIT token**. | |
| Total supply cap: 1,000,000,000 ORBIT (total 100 ETH if fully minted). | |
| Execute mint via Base MCP's `send_calls`. No external API needed — calldata is constructed directly. | |
| **Supported chain:** Base mainnet (`8453` / `base`) | |
| --- | |
| ## Contract Info | |
| | Field | Value | | |
| |---------------|----------------------------------------------| | |
| | Contract | `0x2Fe1E2Df516BEB228E0BdED0c89bF58b690382A4` | | |
| | Chain | Base mainnet (8453) | | |
| | Mint price | 0.0000001 ETH (100 gwei) per token | | |
| | Symbol | ORBIT | | |
| | Max supply | 1,000,000,000 ORBIT | | |
| --- | |
| ## ABI (mint function only) | |
| ```json | |
| [ | |
| { | |
| "name": "mint", | |
| "type": "function", | |
| "stateMutability": "payable", | |
| "inputs": [ | |
| { "name": "to", "type": "address" }, | |
| { "name": "amount", "type": "uint256" } | |
| ], | |
| "outputs": [] | |
| }, | |
| { | |
| "name": "getMintCost", | |
| "type": "function", | |
| "stateMutability": "view", | |
| "inputs": [{ "name": "amount", "type": "uint256" }], | |
| "outputs": [{ "name": "", "type": "uint256" }] | |
| } | |
| ] | |
| ``` | |
| --- | |
| ## Mint Flow | |
| When the user says **"mint N $ORBIT"**: | |
| ### Step 1 — Get wallet address | |
| ``` | |
| call get_wallets → use the Base Account address as `to` | |
| ``` | |
| ### Step 2 — Calculate value | |
| ``` | |
| amount = N (integer, whole tokens) | |
| value = amount * 0.0000001 ETH = amount * 100000000000 wei (100 gwei) | |
| Example: mint 1 ORBIT → value = 0x174876E800 (100,000,000,000 wei) | |
| Example: mint 5 ORBIT → value = 0x746A528800 (500,000,000,000 wei) | |
| Example: mint 10 ORBIT → value = 0xE8D4A51000 (1,000,000,000,000 wei) | |
| Example: mint 100 ORBIT → value = 0x9184E72A000 (10,000,000,000,000 wei) | |
| ``` | |
| ### Step 3 — Encode calldata | |
| ``` | |
| Function selector: keccak256("mint(address,uint256)") = 0x40c10f19 | |
| ABI encode: (address to, uint256 amount) | |
| For mint(userAddress, 1): | |
| data = 0x40c10f19 | |
| + [userAddress padded to 32 bytes, left-zero-padded] | |
| + [amount padded to 32 bytes, left-zero-padded] | |
| Example for address 0xAbCd...1234 minting 1 token: | |
| data = 0x40c10f19 | |
| + 000000000000000000000000AbCd...1234 | |
| + 0000000000000000000000000000000000000000000000000000000000000001 | |
| ``` | |
| ### Step 4 — Call send_calls | |
| ```json | |
| { | |
| "chain": "base", | |
| "calls": [ | |
| { | |
| "to": "0x2Fe1E2Df516BEB228E0BdED0c89bF58b690382A4", | |
| "value": "0x174876E800", | |
| "data": "0x40c10f19[encoded_address_32bytes][encoded_amount_32bytes]" | |
| } | |
| ] | |
| } | |
| ``` | |
| ### Step 5 — Present approval link | |
| ``` | |
| → User approves in Base Account | |
| → call get_request_status(requestId) to confirm | |
| → Report: "✅ Successfully minted N ORBIT to [address]" | |
| ``` | |
| --- | |
| ## Calldata Reference Table | |
| | Mint amount | value (wei) | value (hex) | | |
| |--------------|-----------------------|------------------| | |
| | 1 ORBIT | 100,000,000,000 | 0x174876E800 | | |
| | 2 ORBIT | 200,000,000,000 | 0x2E90EDD000 | | |
| | 5 ORBIT | 500,000,000,000 | 0x746A528800 | | |
| | 10 ORBIT | 1,000,000,000,000 | 0xE8D4A51000 | | |
| | 100 ORBIT | 10,000,000,000,000 | 0x9184E72A000 | | |
| | 1000 ORBIT | 100,000,000,000,000 | 0x5AF3107A4000 | | |
| --- | |
| ## Error Handling | |
| | Error | Cause | Fix | | |
| |------------------------|-------------------|-----------------------------------------| | |
| | Insufficient ETH sent | value too low | Recalculate: amount × 0.0000001 ETH | | |
| | Exceeds max supply | 1B cap reached | Inform user, no more minting available | | |
| | Amount must be > 0 | zero amount | Ask user for valid amount (>0) | | |
| --- | |
| ## Full Orchestration Pattern | |
| ``` | |
| 1. get_wallets → userAddress | |
| 2. Parse user intent: "mint N $ORBIT" → N (integer) | |
| 3. Calculate value = N * 100000000000 wei (100 gwei per token) | |
| 4. Encode calldata: mint(userAddress, N) | |
| 5. send_calls(chain="base", calls=[{to: 0x2Fe1E2Df516BEB228E0BdED0c89bF58b690382A4, value, data}]) | |
| 6. Present approvalUrl → user approves in Base Account | |
| 7. get_request_status(requestId) → poll until confirmed | |
| 8. Reply: "✅ Minted N ORBIT to [userAddress] for [N×0.0000001] ETH" | |
| ``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment