{
  "markdown": "# Ashfields MCP Server\n\n[![MIT License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![npm](https://img.shields.io/npm/v/ashfields-mcp-server)](https://www.npmjs.com/package/ashfields-mcp-server)\n[![MCP](https://img.shields.io/badge/MCP-compatible-blue)](https://modelcontextprotocol.io)\n\n**The first MCP server that burns an ERC-20 token to mint an NFT. Approve $ASH, call mint() — 100,000 tokens permanently destroyed, fully on-chain animated SVG appears on Ethereum. No ETH payment. No browser. Two contract calls from any agent.**\n\n> **Ashfields** — 10,000 fully on-chain animated SVG NFTs. Minting burns 100,000 $ASH permanently. Earn $ASH by burning dead NFTs on [deadjpg.lol](https://deadjpg.lol).\n\n---\n\n## Installation\n\n```bash\ngit clone https://github.com/smoke711711/ashfields-mcp-server\ncd ashfields-mcp-server\nnpm install\n```\n\nOr via npx (no clone needed):\n\n```bash\nnpx ashfields-mcp-server\n```\n\n---\n\n## Requirements\n\n- Node.js 18+\n- A wallet with:\n  - Enough $ASH to mint (100,000 $ASH per token)\n  - A small amount of ETH for gas (~0.001 ETH per mint)\n\n---\n\n## Configuration\n\n```bash\nexport WALLET_PRIVATE_KEY=0xYOUR_PRIVATE_KEY\n# Optional — defaults to a public Ethereum node\nexport ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY\n```\n\n---\n\n## Add to Claude Desktop\n\nEdit `claude_desktop_config.json`:\n\n- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"ashfields\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/ashfields-mcp-server/index.js\"],\n      \"env\": {\n        \"WALLET_PRIVATE_KEY\": \"0xYOUR_PRIVATE_KEY\",\n        \"ETH_RPC_URL\": \"https://ethereum.publicnode.com\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop — the tools will appear automatically.\n\n---\n\n## Available Tools\n\n### `get_mint_info`\nReturns current mint status: price per token, total minted, remaining supply, whether minting is active, and contract addresses.\n\n| Arg | Type | Required |\n|-----|------|----------|\n| — | — | — |\n\n**Returns:** `{ mintActive, totalMinted, remainingSupply, pricePerToken, priceFormatted, maxPerTransaction, contracts }`\n\n---\n\n### `check_wallet`\nReturns the configured wallet address, $ASH balance, ETH balance, current $ASH allowance for the Ashfields contract, and how many tokens it can mint right now.\n\n| Arg | Type | Required |\n|-----|------|----------|\n| — | — | — |\n\n**Returns:** `{ walletAddress, ashBalance, ashAllowance, ethBalance, canMintThisTx, needsApproval }`\n\n---\n\n### `approve_ash`\nApproves the Ashfields contract to spend $ASH from the wallet. Waits for on-chain confirmation. Only needed if allowance is insufficient — `mint_ashfield` handles this automatically.\n\n| Arg | Type | Required | Description |\n|-----|------|----------|-------------|\n| `quantity` | number | yes | Tokens to approve for (1–5). Approves quantity × 100,000 ASH. |\n\n**Returns:** `{ status, approved, forTokens, wallet, txHash, etherscan }`\n\n---\n\n### `mint_ashfield`\nFull mint flow: checks allowance, auto-approves if needed, mints, waits for confirmation. Returns minted token IDs and OpenSea link. Burns 100,000 $ASH per token permanently (sent to 0xdead).\n\n| Arg | Type | Required | Description |\n|-----|------|----------|-------------|\n| `quantity` | number | yes | Tokens to mint (1–5 per transaction). |\n\n**Returns:** `{ status, minted, ashBurned, tokenIds, wallet, approvalTx, mintTx, etherscan, opensea }`\n\n**Example response:**\n```json\n{\n  \"status\": \"success\",\n  \"minted\": 2,\n  \"ashBurned\": \"200,000 ASH\",\n  \"tokenIds\": [\"8377\", \"220\"],\n  \"approvalTx\": \"0xfc33...\",\n  \"mintTx\": \"0xe2e0...\",\n  \"etherscan\": \"https://etherscan.io/tx/0xe2e0...\",\n  \"opensea\": \"https://opensea.io/collection/ashfields-lol\"\n}\n```\n\n---\n\n### `trigger_distribute`\nCalls `distribute()` on the RoyaltyDistributor contract. Permissionless — any wallet can trigger this at any time. Splits accumulated royalty ETH: 1% creator · 1% $ASH team · 8% Uniswap buyback → burned to 0xdead. Requires ≥ 0.005 ETH in the distributor.\n\n| Arg | Type | Required |\n|-----|------|----------|\n| — | — | — |\n\n**Returns:** `{ status, txHash, etherscan, note }`\n\n---\n\n## Example Agent Prompt\n\n> \"Check my wallet balance, verify I have enough $ASH to mint 2 Ashfields, then mint them and return the token IDs and OpenSea links.\"\n\n---\n\n## Contract Addresses (Ethereum Mainnet)\n\n| Contract | Address |\n|----------|---------|\n| Ashfields NFT (ASHF) | `0x068FB5Ac232462f642F34B2bAa81750Cc2F00DAA` |\n| $ASH Token | `0x7e6aed913DEAA38A486514AD75Bdf8E48Fa74a17` |\n| RoyaltyDistributor | `0xF3b4063958dB5814E31aA745FbbfD4c0006E52A6` |\n\n---\n\n## Security\n\n- Private key is read from environment variables only — never passed as a tool argument\n- Server communicates via stdio — no network port is opened\n- Only the configured wallet can sign transactions\n- `trigger_distribute()` is permissionless by contract design — safe for any wallet to call\n\n---\n\n## Machine-Readable Spec\n\n```bash\ncurl https://ashfields-mint.vercel.app/api/mint-info\n```\n\n---\n\n## Links\n\n- [Mint site & MCP docs](https://ashfields-mint.vercel.app/mcp)\n- [OpenSea collection](https://opensea.io/collection/ashfields-lol)\n- [Etherscan — Ashfields contract](https://etherscan.io/address/0x068FB5Ac232462f642F34B2bAa81750Cc2F00DAA)\n- [deadjpg.lol — earn $ASH](https://deadjpg.lol)\n\n---\n\n## License\n\nMIT © 2025 smoke711711\n",
  "bytes": 5410,
  "sha": "961201d628bd1be46541e49cd46c81569dad692b65f8f97909508c5b2c08a1c6",
  "repo_slug": "smoke711711/ashfields-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_smoke711711_ashfields_mcp_serv_8ec60b4e/readme"
}