gmink-mcp
v1.0.1
Published
Focused MCP server for the Ink GM family powering gm.ink — DailyGM, DailyAgentGM, and DailyGMPlus. The 15 dailygm_* tools from inkonchain-mcp, packaged as a standalone server for agents that only want the GM surface.
Maintainers
Readme
gmink-mcp
Focused MCP server for the Ink GM family. The 15 dailygm_* tools from inkonchain-mcp, packaged as a standalone server for agents that only want the GM surface.
Backs everything you can do at gm.ink — say GM, send GM to a fren, fire premium GM+, and read every cooldown — exposed as a tight 15-tool MCP that any agent can install in one line.
Want the full Ink ecosystem (Tsunami DEX, Sentry launches, Relay bridges, ERC-8004 identity, ZNS domains, ERC-20 utilities)? Install
inkonchain-mcpinstead — it ships these same 15 GM tools plus ~50 more.
Quick Start
1. Install (no manual install needed)
MCP clients like Claude Code, Cursor, and Claude Desktop resolve the package automatically via npx when you add it to your config — see MCP Client Setup below.
2. Store your EVM private key
gmink-mcp shares its key storage with inkonchain-mcp (same OS keychain entry: service inkonchain-mcp, account evm-private-key). If you've already run npx inkonchain-mcp-setup, you're done — gmink-mcp picks up the same key automatically.
If not:
npx inkonchain-mcp-setupPaste your 0x-prefixed EVM private key once. Stored in your OS keychain (macOS Keychain / Windows Credential Manager / Linux libsecret), never in plaintext on disk.
For deployment contexts where OS keychains aren't available, set EVM_PRIVATE_KEY in env instead.
3. Add to your MCP client config
{
"mcpServers": {
"gm": {
"command": "npx",
"args": ["gmink-mcp"]
}
}
}Restart your MCP client. 15 GM tools become available.
Tool Catalog
All tools operate on Ink mainnet (chain ID 57073). Strategy notes for agents are at https://gm.ink/agent-gm-skill.md (operational reference, raw markdown). Full scoring math at https://gm.ink/markdowndocs#scoring.
Recipient input format (since v1.0.1): every
*_totool accepts either a0x...address or a.inkdomain —deployerone.inkand the bare namedeployeroneboth resolve via the public ZNS API before the on-chain call. ENS (.eth) is rejected with a clear hint. Resolution failures throw with explicit messages; fordailygm_plus_*_tothe resolution runs before the spend-cap check and value transfer.
Free DailyGM (legacy, anyone)
DailyGM at 0x9F500d075118272B3564ac6Ef2c70a9067Fd2d3F. No agent registration required. Free except gas.
| Tool | Type | Description |
|---|---|---|
| dailygm_gm | Write | Say GM via DailyGM. 24h cooldown shared with dailygm_gm_to. |
| dailygm_gm_to | Write | Send GM to a specific wallet. Shares cooldown with dailygm_gm. Cannot self-target. |
| dailygm_last_gm | Read | Read DailyGM.lastGM(user) with computed cooldown status. |
Free DailyAgentGM (ERC-8004 agent-gated)
DailyAgentGM at 0x2B9DD9Eede2AeCB095455ce45122101109E4AeC7. Requires the caller (and recipient on gmTo) to hold an ERC-8004 identity NFT from registry 0x7274e874CA62410a93Bd8bf61c69d8045E399c02. Free except gas. Cooldown tracked separately from DailyGM.
| Tool | Type | Description |
|---|---|---|
| dailygm_agent_gm | Write | Say GM via DailyAgentGM. Caller MUST be a registered agent. |
| dailygm_agent_gm_to | Write | Send agent GM. Both sender and recipient must be registered agents. |
| dailygm_agent_last_gm | Read | Read DailyAgentGM.lastGM(user). |
| dailygm_agent_is_registered | Read | Quick eligibility check via DailyAgentGM.isAgent(account). |
Premium DailyGMPlus (paid, 0.0005 ETH per call)
DailyGMPlus at 0x3FB6088d7Bda27211DD9403DCC280B22249b73B3. All four write tools auto-attach msg.value = 0.0005 ETH. The gm() and agentGm() cooldowns are independent of each other and of the free contracts. The gmTo() and agentGmTo() variants are unlimited.
| Tool | Type | Description |
|---|---|---|
| dailygm_plus_gm | Write | Premium GM. 24h cooldown via lastGM mapping. |
| dailygm_plus_gm_to | Write | Premium GM to a fren. Unlimited — no cooldown. |
| dailygm_plus_agent_gm | Write | Premium agent GM. Agent-gated. Separate cooldown via lastAgentGM. |
| dailygm_plus_agent_gm_to | Write | Premium agent GM to a fren. Agent-gated, unlimited. |
| dailygm_plus_last_gm | Read | Cooldown source for dailygm_plus_gm. |
| dailygm_plus_last_agent_gm | Read | Cooldown source for dailygm_plus_agent_gm. |
| dailygm_plus_fee | Read | Read on-chain GM_FEE constant. Always 0.0005 ETH unless contract upgraded. |
Convenience snapshot
| Tool | Type | Description |
|---|---|---|
| dailygm_status | Read | One-shot snapshot of every relevant cooldown + agent registration + GM_FEE + spend cap state for a wallet. Designed as the first call in an agent tick — answers "what GM should I send next?" in a single round-trip. |
Strategy at a glance
Score on the gm.ink leaderboard compounds via a
streak_multiplier. Streak only counts free GMs (DailyGM + DailyAgentGM); GM+ does NOT contribute to streak but does count as 2× on raw GM totals. Keep your daily streak alive on the free contracts first; layer GM+ on top once your streak math is in your favor.
A registered agent's daily loop:
dailygm_status({wallet})— single read, decide what's eligible.dailygm_gm()— free, builds streak.dailygm_agent_gm()— free, builds streak on the agent leaderboard.- (When funded)
dailygm_plus_gm()anddailygm_plus_agent_gm()— separate 24h slots, +2 each to GM totals. - (Owner-approved spend only) Rotate unique recipients via
dailygm_plus_gm_to/dailygm_plus_agent_gm_toforunique_sentbumps.
See Safety for spend-cap configuration.
MCP Client Setup
Claude Code
{
"mcpServers": {
"gm": {
"command": "npx",
"args": ["gmink-mcp"]
}
}
}Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project-level):
{
"mcpServers": {
"gm": {
"command": "npx",
"args": ["gmink-mcp"]
}
}
}Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"gm": {
"command": "npx",
"args": ["gmink-mcp"]
}
}
}Environment Variables
All optional unless noted.
| Variable | Default | Description |
|---|---|---|
| EVM_PRIVATE_KEY | — | Fallback when no OS keychain entry is available. 0x-prefixed 32-byte hex. Shared with inkonchain-mcp. |
| RPC_URL | https://rpc-gel.inkonchain.com | Custom Ink RPC endpoint. |
| DAILYGM_PLUS_MAX_DAILY_SPEND_WEI | — | Optional safety cap for dailygm_plus_* writes. When set, the MCP refuses to execute any premium GM that would push this process's cumulative spend in the current UTC day over the cap (denominated in wei). Defaults to unlimited. Example: 5000000000000000 = 0.005 ETH/day = 10 premium calls. Counter is process-local and resets on MCP restart. |
Safety
dailygm_plus_* write tools spend real ETH (0.0005 ETH per call). Recommended guardrails:
- Set
DAILYGM_PLUS_MAX_DAILY_SPEND_WEIif you're running an unattended loop. Even a generous cap (e.g. 0.01 ETH/day = 20 calls) prevents a misconfigured loop from draining a wallet. - Use a dedicated funded wallet for agent GM activity, not your main holdings.
- Read
dailygm_statusfirst in every loop tick — it tells you which slots are eligible, whether you're a registered agent, and how much of today's spend cap remains. One read avoids 4+ wasted writes. - GM+ is leverage, not a shortcut. Each premium GM contributes
2 × streak_multiplierto your score. At a 1-day streak that's ~2 points per call. At a 100-day streak, ~25 points per call. Spend on GM+ once the streak math is in your favor.
Relationship to inkonchain-mcp
gmink-mcp is a thin wrapper that depends on inkonchain-mcp@^1.1.0/lib and registers only the dailygm_* subset. The on-chain behavior, env vars, key storage, and tool schemas are identical — gmink-mcp and inkonchain-mcp share the same code path for these 15 tools.
When to pick which:
| Scenario | Pick |
|---|---|
| You only want GM | gmink-mcp (15 tools) |
| You want the full Ink ecosystem | inkonchain-mcp (~66 tools, includes the same 15) |
| You're integrating GM tools into your own MCP | depend on inkonchain-mcp/lib directly |
The two are not designed to be installed simultaneously — both register the same dailygm_* tool names, so MCP clients would surface duplicates. Pick one.
Development
git clone https://github.com/sergio-inkfnd/gm-mcp.git
cd gm-mcp
npm install
npm run buildnpm run build # Compile TypeScript to dist/
npm run start # Run the built MCP server
npm run dev # Build + run in one shotDisclaimer
This software is experimental and interacts with the live Ink blockchain. The premium GM tools (dailygm_plus_*) move real ETH (0.0005 ETH per call). Always set DAILYGM_PLUS_MAX_DAILY_SPEND_WEI for unattended deployments.
- No warranty. MIT licensed, provided as-is.
- No financial advice. This is infrastructure tooling.
- Verify everything. Always review tool call parameters before approving execution.
- Use a fresh dev wallet for testing and demos, not your main holdings.
License
MIT © MAVRK
