{
  "markdown": "# M2M Sentinel SDK & MCP Server\n\nOfficial multi-language client library, **Model Context Protocol (MCP) server**, and **Coinbase AgentKit ActionProvider** for M2M Sentinel — deterministic EVM bytecode capability observations and common-proxy resolution for autonomous applications operating on Base. Callers own transaction policy.\n\n[![npm version](https://img.shields.io/npm/v/m2m-sentinel-sdk.svg)](https://www.npmjs.com/package/m2m-sentinel-sdk)\n[![PyPI version](https://img.shields.io/pypi/v/m2m-sentinel.svg)](https://pypi.org/project/m2m-sentinel/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Smithery](https://smithery.ai/badge/m2m-sentinel-sdk)](https://smithery.ai/server/m2m-sentinel-sdk)\n\n---\n\n## ⚡ 1. Model Context Protocol (MCP) Server\n\nConnect M2M Sentinel directly to **Claude Desktop**, **Cursor**, **Windsurf**, or any MCP-compliant LLM agent.\n\n### Option A: 1-Click via Smithery\n```bash\nnpx -y @smithery/cli mcp add M2M-Sentinel/m2m-sentinel-sdk --client claude\n```\n\n### Option B: Local Stdio (`claude_desktop_config.json`)\n```json\n{\n  \"mcpServers\": {\n    \"m2m-sentinel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"m2m-sentinel-sdk\"],\n      \"env\": {\n        \"M2M_SENTINEL_API_KEY\": \"\"\n      }\n    }\n  }\n}\n```\n\n### Option C: Remote Streamable HTTP\n* **Current MCP endpoint**: `https://api.m2msentinel.com/mcp`\n* **Legacy HTTP+SSE compatibility**: `https://api.m2msentinel.com/sse` with messages at `https://api.m2msentinel.com/messages`\n\n---\n\n## 🤖 2. Coinbase AgentKit Integration\n\n```typescript\nimport { AgentKit } from \"@coinbase/agentkit\";\nimport { m2mSentinelActionProvider } from \"m2m-sentinel-sdk\";\n\nconst agentKit = await AgentKit.from({\n  walletProvider,\n  actionProviders: [\n    m2mSentinelActionProvider({\n      apiKey: process.env.M2M_SENTINEL_API_KEY\n    })\n  ]\n});\n```\n\n---\n\n## 📦 3. JavaScript / TypeScript Client\n\n```bash\nnpm install m2m-sentinel-sdk\n```\n\n```javascript\nconst { M2MSentinelClient } = require('m2m-sentinel-sdk');\n\nconst client = new M2MSentinelClient();\n\nasync function main() {\n  const audit = await client.auditContract('0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913');\n  console.log('Proxy Detected:', audit.audit.proxyResolution.isProxy);\n  console.log('Proxy Target:', audit.audit.proxyResolution.targetAddress);\n  console.log('Capabilities:', audit.audit.verdict.executableCapabilities);\n  console.log('Evidence:', audit.audit.dissection.capabilities);\n}\n\nmain().catch(console.error);\n```\n\n---\n\n## 🐍 4. Python Client\n\n```bash\npip install m2m-sentinel\n```\n\n```python\nfrom m2m_sentinel import M2MSentinelClient\n\nclient = M2MSentinelClient()\naudit = client.audit_contract(\"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\")\nprint(\"Proxy detected:\", audit[\"audit\"][\"proxyResolution\"][\"isProxy\"])\nprint(\"Proxy target:\", audit[\"audit\"][\"proxyResolution\"].get(\"targetAddress\"))\nprint(\"Capabilities:\", audit[\"audit\"][\"verdict\"][\"executableCapabilities\"])\nprint(\"Evidence:\", audit[\"audit\"][\"dissection\"][\"capabilities\"])\n```\n\n---\n\n## Transaction-specific preflight example\n\nThe public repository includes a standalone, mock-only transaction boundary\nexample at [`examples/transaction_preflight.js`](examples/transaction_preflight.js).\nFrom this repository root, run:\n\n```bash\nnode examples/transaction_preflight.js\n```\n\nIt observes one caller-supplied Base transaction, passes the observation to a\ncaller-owned policy, and reaches only a mock signing/send callback. It refuses\nto continue on unverified evidence, unresolved execution, an observation\nmismatch, or a missing Diamond selector mapping. It never signs or sends a\ntransaction; optional live mode uses only a caller-supplied API-key header and\nremains the caller's responsibility.\n\n---\n\n## 💳 5. Autonomous x402 Micropayments (Headless M2M)\n\n```typescript\nimport { x402SignerClient } from \"m2m-sentinel-sdk\";\n\nconst client = new x402SignerClient({\n  walletSigner: myAgentWallet,\n  baseUrl: \"https://api.m2msentinel.com\"\n});\n\nconst result = await client.request(\"/v1/audit/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\");\n```\n\n---\n\n## 📜 License\nMIT License. Copyright (c) 2026 M2M Sentinel.\n",
  "bytes": 4128,
  "sha": "a2a65db5bdda0e84b6557ae99c1d77d2189a86013016871025e49cf4f0acbb48",
  "repo_slug": "m2m-sentinel/m2m-sentinel-sdk",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_m2m_sentinel_m2m_sentinel_sdk_f8d64018/readme"
}