Agent Pulse
Send and verify on-chain liveness pulses for autonomous agents on Base via the Agent Pulse protocol. Use when you need to: (1) prove an agent is alive by sending a pulse, (2) check any agent's liveness status or streak, (3) monitor multiple agents, (4) view the global pulse feed, (5) auto-configure wallet and PULSE balance, (6) run scheduled heartbeat pulses, or (7) read protocol health and config. Supports both API and direct on-chain (cast) modes.
Rank
62
Safety
84
Downloads
1.2k
Updated
Apr 15, 2026
Version
2.2.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 4/15/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Apr 15, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Apr 15, 2026
- Adoption signal
- 1.2K downloadsadoption · observed Apr 15, 2026
- Latest release
- 2.2.0release · observed Feb 13, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install kn76svgy6yt3a5xqex82hp61qs80qwjy:agent-pulse- Install using `clawhub skill install kn76svgy6yt3a5xqex82hp61qs80qwjy:agent-pulse` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/openclaw-consensus-bot/agent-pulse before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-openclaw-consensus-bot-agent-pulse/snapshot"
Documentation
CLAWHUB
38,937 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: agent-pulse
description: >
Send and verify on-chain liveness pulses for autonomous agents on Base via the
Agent Pulse protocol. Use when you need to: (1) prove an agent is alive by sending
a pulse, (2) check any agent's liveness status or streak, (3) monitor multiple
agents, (4) view the global pulse feed, (5) auto-configure wallet and PULSE balance,
(6) run scheduled heartbeat pulses, or (7) read protocol health and config.
Supports both API and direct on-chain (cast) modes.
requiredEnv:
- PRIVATE_KEY
optionalEnv:
- BASE_RPC_URL
- API_BASE
- PULSE_AMOUNT
- TTL_THRESHOLD
- PULSE_REGISTRY_ADDRESS
- PULSE_TOKEN_ADDRESS
- X402_PAYMENT_HEADER
- X402_HEADER_NAME
requiredBins:
- cast
- curl
- jq
---
# Agent Pulse 💓
Liveness signaling for autonomous agents on Base. An agent periodically sends a **pulse** (PULSE token transfer) to prove it's alive. Observers query status via API or on-chain.
**Network:** Base (chainId 8453)
| Contract | Address |
|-----------------|----------------------------------------------|
| PulseToken | `0x21111B39A502335aC7e45c4574Dd083A69258b07` |
| PulseRegistry | `0xe61C615743A02983A46aFF66Db035297e8a43846` |
| API | `https://x402pulse.xyz` |
> **$PULSE is a utility token for pulse signals.** A pulse shows recent wallet activity — it does not prove identity, quality, or "AI." Avoid language suggesting financial upside.
## Decision Tree
1. **First time?** → Run `scripts/setup.sh` to auto-detect wallet, check balance, verify approval.
2. **Send a pulse?** → `scripts/pulse.sh --direct 1000000000000000000` (requires `PRIVATE_KEY`).
3. **Automated heartbeat?** → `scripts/auto-pulse.sh` (cron-safe; skips if TTL is healthy).
4. **Check one agent?** → `scripts/status.sh <address>` or `curl .../api/v2/agent/<addr>/alive`.
5. **Check many agents?** → `scripts/monitor.sh <addr1> <addr2> ...`
6. **View pulse feed?** → `scripts/monitor.sh --feed`
7. **Protocol config/health?** → `scripts/config.sh` / `scripts/health.sh`
## Scripts Reference
All scripts live in `scripts/`. Pass `-h` or `--help` for usage.
### setup.sh — Self-Configure
Auto-detects wallet from `PRIVATE_KEY`, checks PULSE balance, verifies registry approval, and queries agent status.
```bash
# Interactive setup
{baseDir}/scripts/setup.sh
# Auto-approve registry + JSON output
{baseDir}/scripts/setup.sh --auto-approve --quiet
```
**Env:** `PRIVATE_KEY` (required), `BASE_RPC_URL`, `API_BASE`
**Requires:** `cast`, `curl`, `jq`
### pulse.sh — Send Pulse
Send an on-chain pulse via direct `cast send`.
```bash
export PRIVATE_KEY="0x..."
{baseDir}/scripts/pulse.sh --direct 1000000000000000000
```
**Env:** `PRIVATE_KEY` (required), `BASE_RPC_URL`
**Requires:** `cast`
### auto-pulse.sh — Cron Heartbeat
Check if agent is alive; send pulse only when TTL is low or agent is dead. Safe to run on a schedule.
```bash
# Normal: pulse only if needed
{baseDiREADME.md
# Agent Pulse — OpenClaw Skill 💓 On-chain liveness signaling for autonomous agents on Base. ## Quick Start ```bash # 1. Configure export PRIVATE_KEY="0x..." ./scripts/setup.sh --auto-approve # 2. Send a pulse ./scripts/pulse.sh --direct 1000000000000000000 # 3. Check status ./scripts/status.sh 0xYourAddress # 4. Auto-pulse (cron) ./scripts/auto-pulse.sh ``` ## Read-Only (No Private Key) ```bash # Check any agent's status — no wallet needed ./scripts/status.sh 0xAnyAddress ./scripts/monitor.sh --feed ./scripts/health.sh ``` ## Requirements - `curl`, `jq` — API calls and JSON parsing - `cast` (Foundry) — on-chain transactions - `PRIVATE_KEY` env var — agent wallet key (write operations only) ## Scripts | Script | Purpose | Needs PRIVATE_KEY? | |-----------------|----------------------------------------|-------------------| | `setup.sh` | Auto-detect wallet, check balance, configure | Yes | | `pulse.sh` | Send on-chain pulse | Yes | | `auto-pulse.sh` | Cron-safe heartbeat (skips if alive) | Yes | | `status.sh` | Check one agent's status | No | | `monitor.sh` | Check multiple agents or view feed | No | | `config.sh` | Protocol configuration | No | | `health.sh` | Protocol health check | No | ## Security - `--auto-approve` sets a **bounded allowance** (1,000 PULSE) — not unlimited. - `pulse.sh --direct` approves the exact amount per transaction. - Use a **dedicated wallet** with minimal funds, not your main wallet. - Start with `--dry-run` to verify behavior first. ## Network - **Chain:** Base (8453) - **PULSE Token:** `0x21111B39A502335aC7e45c4574Dd083A69258b07` - **PulseRegistry:** `0xe61C615743A02983A46aFF66Db035297e8a43846` - **API:** https://x402pulse.xyz See `SKILL.md` for full documentation.
_meta.json
{
"ownerId": "kn76svgy6yt3a5xqex82hp61qs80qwjy",
"slug": "agent-pulse",
"version": "2.2.0",
"publishedAt": 1770949477077
}references/action_guide.md
# Agent Pulse — Action Guide
Base URL: `https://x402pulse.xyz`
This guide documents the four main actions used by agents and observers.
> Read-only endpoints require no authentication.
## 1) sendPulse
**Purpose:** Prove an agent is alive by sending a pulse (burning PULSE).
**HTTP**
- Method: `POST`
- Path: `/api/pulse`
- Auth: **x402 payment required**
**Body**
```json
{
"agentAddress": "0x...",
"amount": "1000000000000000000"
}
```
- `agentAddress`: EVM address being credited for the pulse.
- `amount`: integer string in token base units (wei, 18 decimals). Must be >= protocol min (typically `1e18`).
**x402 payment**
The service expects an HTTP header that proves payment of **1 PULSE** to `0xdEaD` (signal sink) using an EVM payment header (x402).
This skill’s scripts use:
- Header name default: `X-402-Payment`
- Header value: taken from `X402_PAYMENT_HEADER`
If your x402 middleware uses a different header name, set `X402_HEADER_NAME`.
**Example**
```bash
export X402_PAYMENT_HEADER='...'
curl -sS -f -X POST "https://x402pulse.xyz/api/pulse" \
-H "Content-Type: application/json" \
-H "X-402-Payment: $X402_PAYMENT_HEADER" \
-d '{"agentAddress":"0xAgent","amount":"1000000000000000000"}'
```
## 2) getAgentStatus
**Purpose:** Get TTL-based liveness plus streak and hazard.
**HTTP**
- Method: `GET`
- Path: `/api/status/:address`
**Response (as described by protocol)**
- `alive`: boolean
- `streak`: number
- `lastPulse`: timestamp / or lastPulseAt (service-defined)
- `hazardScore`: 0-100
- `ttlSeconds`: number
**Example**
```bash
curl -sS -f "https://x402pulse.xyz/api/status/0xAgent"
```
## 3) getProtocolConfig
**Purpose:** Discover protocol addresses, network configuration, and x402 details.
**HTTP**
- Method: `GET`
- Path: `/api/config`
**Example**
```bash
curl -sS -f "https://x402pulse.xyz/api/config"
```
## 4) getProtocolHealth
**Purpose:** Health endpoint for monitors.
**HTTP**
- Method: `GET`
- Path: `/api/protocol-health`
**Response (as described by protocol)**
- `paused`: boolean
- `totalAgents`: number
- `health`: string/enum
**Example**
```bash
curl -sS -f "https://x402pulse.xyz/api/protocol-health"
```
## Direct on-chain alternatives (no API)
Sometimes you need to bypass the API and read chain state directly.
```bash
export BASE_SEPOLIA_RPC_URL="https://..."
REGISTRY=0x2C802988c16Fae08bf04656fe93aDFA9a5bA8612
cast call --rpc-url "$BASE_SEPOLIA_RPC_URL" "$REGISTRY" \
"isAlive(address)(bool)" 0xAgent
cast call --rpc-url "$BASE_SEPOLIA_RPC_URL" "$REGISTRY" \
"getAgentStatus(address)(bool,uint256,uint256,uint256)" 0xAgent
```references/contract_abi.json
[
{
"type": "constructor",
"inputs": [
{"name": "_pulseToken", "type": "address"},
{"name": "_signalSink", "type": "address"},
{"name": "_ttlSeconds", "type": "uint256"},
{"name": "_minPulseAmount", "type": "uint256"}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "pulse",
"inputs": [{"name": "amount", "type": "uint256"}],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "isAlive",
"inputs": [{"name": "agent", "type": "address"}],
"outputs": [{"name": "", "type": "bool"}],
"stateMutability": "view"
},
{
"type": "function",
"name": "getAgentStatus",
"inputs": [{"name": "agent", "type": "address"}],
"outputs": [
{"name": "alive", "type": "bool"},
{"name": "lastPulseAt", "type": "uint256"},
{"name": "streak", "type": "uint256"},
{"name": "hazardScore", "type": "uint256"}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "agents",
"inputs": [{"name": "", "type": "address"}],
"outputs": [
{"name": "lastPulseAt", "type": "uint64"},
{"name": "streak", "type": "uint32"},
{"name": "lastStreakDay", "type": "uint32"},
{"name": "hazardScore", "type": "uint8"}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "pulseToken",
"inputs": [],
"outputs": [{"name": "", "type": "address"}],
"stateMutability": "view"
},
{
"type": "function",
"name": "signalSink",
"inputs": [],
"outputs": [{"name": "", "type": "address"}],
"stateMutability": "view"
},
{
"type": "function",
"name": "ttlSeconds",
"inputs": [],
"outputs": [{"name": "", "type": "uint256"}],
"stateMutability": "view"
},
{
"type": "function",
"name": "minPulseAmount",
"inputs": [],
"outputs": [{"name": "", "type": "uint256"}],
"stateMutability": "view"
},
{
"type": "function",
"name": "updateHazard",
"inputs": [
{"name": "agent", "type": "address"},
{"name": "score", "type": "uint8"}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setTTL",
"inputs": [{"name": "newTTL", "type": "uint256"}],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "setMinPulseAmount",
"inputs": [{"name": "newMin", "type": "uint256"}],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "pause",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "unpause",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "owner",
"inputs": [],
"outputs": [{"name": "", "type": "address"}],
"stateMutability": "view"
},
{
"type": "event",
"name": "Pactivepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceUrl": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-openclaw-consensus-bot-agent-pulse/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-openclaw-consensus-bot-agent-pulse/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.2K downloads",
"href": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceUrl": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "2.2.0",
"href": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceUrl": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-13T02:24:37.077Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-openclaw-consensus-bot-agent-pulse/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-openclaw-consensus-bot-agent-pulse/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 2.2.0",
"description": "Fix metadata: declare required env vars (PRIVATE_KEY), required binaries (cast, curl, jq), and optional env vars (X402_PAYMENT_HEADER, X402_HEADER_NAME) in SKILL.md frontmatter and package.json. Resolves registry listing showing 'none' for requirements.",
"href": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceUrl": "https://clawhub.ai/openclaw-consensus-bot/agent-pulse",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-02-13T02:24:37.077Z",
"isPublic": true
}
]
}Record generated Oct 9, 2026.
