# M2M Sentinel

> Base bytecode capability observations, proxy resolution, gas, DEX, and transfer telemetry.

- name: io.github.M2M-Sentinel/m2m-sentinel-sdk
- version: 1.2.5
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.M2M-Sentinel%2Fm2m-sentinel-sdk
- tools: https://api.protogrid.dev/v1/servers/io.github.M2M-Sentinel%2Fm2m-sentinel-sdk/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "m2m-sentinel-sdk": {
      "type": "http",
      "url": "https://api.m2msentinel.com/mcp",
      "headers": {
        "x-api-key": "${X_API_KEY}",
        "PAYMENT-SIGNATURE": "${PAYMENT_SIGNATURE}"
      }
    }
  }
}
```

Placeholders to fill: `${X_API_KEY}`, `${PAYMENT_SIGNATURE}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-44d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 96/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 785 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 1 resolved packages
- n/a `deps.mcp_sdk_version`: the official MCP SDK is not in the dependency graph
- pass `deps.resolvable`: @m2msentinel/sdk@1.2.5 resolved: 1 packages

- tools: 6, about 785 tokens to load them all
- tool set hash: cde65a84a86968a1e6e395219e8dc08f
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.M2M-Sentinel/m2m-sentinel-sdk.svg)](https://protogrid.dev/servers/io.github.M2M-Sentinel/m2m-sentinel-sdk)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- npm @m2msentinel/sdk@1.2.5: resolved, 0 dependencies

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://api.m2msentinel.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)
- https://api.m2msentinel.com/sse (sse, auth api_key ${X_API_KEY}, reachable false, uptime30d 0)

## Packages

- npm @m2msentinel/sdk@1.2.5 secrets: M2M_SENTINEL_API_KEY

## Tools (6)

- `m2m_audit_contract`: Inspect static bytecode capabilities (e.g. mint, pause, freeze, upgradeability slots), common proxy target resolution, and coverage index for a single Base contract address. Factual capability observation only, not a safety or exploitability guarantee. Distinguishable from m2m_get_service_status (infrastructure status) and legacy score-only endpoints.
- `m2m_get_dex_liquidity`: Fetch aggregate pool reserve, depth, and volume metrics across tracked Base DEX liquidity pools. Reports tracked-pool metrics only and does not filter by individual trading pair; contrast with m2m_get_token_price, which observes token spot prices.
- `m2m_get_gas_metrics`: Fetch current Base gas price in wei/gwei with RPC provenance for the upstream observation. Read-only telemetry; does not inspect contract code, return token/DEX pricing, or authorize or submit transactions.
- `m2m_get_service_status`: Fetch operational status, upstream Base RPC quorum status, and persistence availability for M2M Sentinel infrastructure. Does not return blockchain or market telemetry.
- `m2m_get_token_price`: Fetch the median Base DEX spot price in USD across up to five deepest indexed pools, with contract address, decimals, and pool provenance for one allowlisted token symbol (e.g. USDC, WETH, AERO). Does not return historical price series; contrast with m2m_get_dex_liquidity, which returns aggregate pool reserve depth rather than an asset price.
- `m2m_get_whale_signals`: Fetch up to 50 tracked recent high-value ERC-20 transfer signals on Base with transaction hashes, token/sender/receiver addresses, amounts, and valuation provenance. Observes large on-chain transfer events without query parameter limits; does not inspect contract bytecode or query DEX pricing.
