RoundWatch

Durable Algorand USDC payment monitoring for autonomous workflows.

Should I use this

Quality & Safety

B
Description quality
100%
Schema completeness
83%
Naming quality
50%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • LOWTool 'roundwatch.service_info' doesn't follow camelCase/snake_casein roundwatch.service_info
  • LOWTool 'roundwatch.prepare_watch' doesn't follow camelCase/snake_casein roundwatch.prepare_watch
  • LOWTool 'roundwatch.prepare_recovery' doesn't follow camelCase/snake_casein roundwatch.prepare_recovery
  • LOWTool 'roundwatch.get_watch' doesn't follow camelCase/snake_casein roundwatch.get_watch

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~831Tokens (tool definitions)
~1.6 KBTypical response size
Moderate attention impact (0.65% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "roundwatch": {
      "url": "https://roundwatch-api.onrender.com/mcp"
    }
  }
}

Remote endpoints

https://roundwatch-api.onrender.com/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢roundwatch.service_info

Return the live RoundWatch network, x402 service contract, USDC asset, price, limits, and documentation links. Read-only and free.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢roundwatch.prepare_watch(idempotencyKey, expectedSender, expectedReceiver, atomicAmount, invoiceNote)

Validate one expected future Algorand USDC payment and return the exact RoundWatch HTTP/x402 request to create a durable watch. This tool does not settle the x402 payment and does not create the watch by itself.

Input Schema

{
  "type": "object",
  "properties": {
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128,
      "description": "Stable key that identifies this watch request and prevents duplicates."
    },
    "expectedSender": {
      "type": "string",
      "minLength": 58,
      "maxLength": 58,
      "description": "Checksum-valid nonzero Algorand address expected to send the future payment. The Algorand zero address is rejected for new watch creation."
    },
    "expectedReceiver": {
      "type": "string",
      "minLength": 58,
      "maxLength": 58,
      "description": "Checksum-valid Algorand address expected to receive the future payment."
    },
    "atomicAmount": {
      "type": "string",
      "pattern": "^[1-9]\\d*$",
      "description": "Exact watched USDC amount in atomic units. Algorand USDC uses 6 decimals."
    },
    "invoiceNote": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "Optional exact UTF-8 Algorand transaction note, maximum 128 UTF-8 bytes."
    }
  },
  "required": [
    "idempotencyKey",
    "expectedSender",
    "expectedReceiver",
    "atomicAmount"
  ],
  "additionalProperties": false
}
🟢roundwatch.prepare_recovery(idempotencyKey, expectedSender, expectedReceiver, atomicAmount, invoiceNote, ...)

Validate and return the exact free HTTP request used to recover an existing watch after a paid create may have succeeded but the caller lost the returned watchId. Confirmed-settlement watches remain recoverable even after terminal expiry or post-activation indeterminate completion. This tool never signs, pays, or retries the paid create.

Input Schema

{
  "type": "object",
  "properties": {
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128,
      "description": "The exact original idempotency key from the paid create attempt."
    },
    "expectedSender": {
      "type": "string",
      "minLength": 58,
      "maxLength": 58,
      "description": "The exact original expected future-payment sender."
    },
    "expectedReceiver": {
      "type": "string",
      "minLength": 58,
      "maxLength": 58,
      "description": "The exact original expected future-payment receiver."
    },
    "atomicAmount": {
      "type": "string",
      "pattern": "^[1-9]\\d*$",
      "description": "The exact original watched USDC amount in atomic units."
    },
    "invoiceNote": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128,
      "description": "The exact original optional invoice note, if one was supplied."
    },
    "servicePayer": {
      "type": "string",
      "minLength": 58,
      "maxLength": 58,
      "description": "Public Algorand address that signed the original x402 RoundWatch service payment."
    }
  },
  "required": [
    "idempotencyKey",
    "expectedSender",
    "expectedReceiver",
    "atomicAmount",
    "servicePayer"
  ],
  "additionalProperties": false
}
🟢roundwatch.get_watch(watchId)

Read the durable state and any verified on-chain evidence for an existing RoundWatch watch ID. Read-only and free.

Input Schema

{
  "type": "object",
  "properties": {
    "watchId": {
      "type": "string",
      "minLength": 1,
      "description": "Durable watch ID returned after successful activation."
    }
  },
  "required": [
    "watchId"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded3 tools