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.
Install
mkdir -p .claude/skills/agent-pulse && curl -L -o skill.zip "https://mcp.directory/api/skills/download/3558" && unzip -o skill.zip -d .claude/skills/agent-pulse && rm skill.zipInstalls to .claude/skills/agent-pulse
About this skill
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
- First time? → Run
scripts/setup.shto auto-detect wallet, check balance, verify approval. - Send a pulse? →
scripts/pulse.sh --direct 1000000000000000000(requiresPRIVATE_KEY). - Automated heartbeat? →
scripts/auto-pulse.sh(cron-safe; skips if TTL is healthy). - Check one agent? →
scripts/status.sh <address>orcurl .../api/v2/agent/<addr>/alive. - Check many agents? →
scripts/monitor.sh <addr1> <addr2> ... - View pulse feed? →
scripts/monitor.sh --feed - 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.
# 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.
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.
# Normal: pulse only if needed
{baseDir}/scripts/auto-pulse.sh
# Force pulse regardless of TTL
{baseDir}/scripts/auto-pulse.sh --force
# Check without sending
{baseDir}/scripts/auto-pulse.sh --dry-run
Env: PRIVATE_KEY (required), BASE_RPC_URL, PULSE_AMOUNT (default 1e18), TTL_THRESHOLD (default 21600s = 6h)
Exit codes: 0 = success or skipped, 1 = error
status.sh — Agent Status
{baseDir}/scripts/status.sh 0xAgentAddress
config.sh / health.sh — Protocol Info
{baseDir}/scripts/config.sh # addresses, network, x402 config
{baseDir}/scripts/health.sh # paused status, total agents, health
monitor.sh — Multi-Agent Monitor
# Check specific agents
{baseDir}/scripts/monitor.sh 0xAddr1 0xAddr2 0xAddr3
# From file (one address per line)
{baseDir}/scripts/monitor.sh -f agents.txt
# JSON output
{baseDir}/scripts/monitor.sh --json 0xAddr1 0xAddr2
# Global pulse feed
{baseDir}/scripts/monitor.sh --feed
API Quick Reference
| Endpoint | Method | Auth | Description |
|---|---|---|---|
/api/v2/agent/{addr}/alive | GET | None | Alive check + TTL |
/api/status/{addr} | GET | None | Full status + streak |
/api/pulse-feed | GET | None | Recent pulse activity |
/api/config | GET | None | Protocol configuration |
/api/protocol-health | GET | None | Health and paused state |
/api/pulse | POST | x402 | Send pulse via API |
Direct On-Chain (cast)
export BASE_RPC_URL="https://mainnet.base.org"
# Read: is agent alive?
cast call --rpc-url "$BASE_RPC_URL" \
0xe61C615743A02983A46aFF66Db035297e8a43846 \
"isAlive(address)(bool)" 0xAgent
# Read: full status tuple
cast call --rpc-url "$BASE_RPC_URL" \
0xe61C615743A02983A46aFF66Db035297e8a43846 \
"getAgentStatus(address)(bool,uint256,uint256,uint256)" 0xAgent
# Write: approve + pulse (requires PRIVATE_KEY)
cast send --rpc-url "$BASE_RPC_URL" --private-key "$PRIVATE_KEY" \
0x21111B39A502335aC7e45c4574Dd083A69258b07 \
"approve(address,uint256)(bool)" \
0xe61C615743A02983A46aFF66Db035297e8a43846 1000000000000000000
cast send --rpc-url "$BASE_RPC_URL" --private-key "$PRIVATE_KEY" \
0xe61C615743A02983A46aFF66Db035297e8a43846 \
"pulse(uint256)" 1000000000000000000
Error Handling
| Error | Cause | Fix |
|---|---|---|
BelowMinimumPulse | Amount < minPulseAmount (default 1e18) | Use ≥ 1000000000000000000 |
| ERC20 transfer failure | Missing approval or low PULSE balance | Run setup.sh --auto-approve |
whenNotPaused | Registry paused | Wait; check health.sh |
| 401/402/403 | Missing payment for paid endpoints | Use direct on-chain mode |
| 5xx | Transient API error | Retry with backoff |
Read-Only Mode (No Private Key)
These commands work without PRIVATE_KEY — no wallet or signing required:
# Check any agent's status
{baseDir}/scripts/status.sh 0xAnyAgentAddress
# Monitor multiple agents
{baseDir}/scripts/monitor.sh 0xAddr1 0xAddr2
# View global pulse feed
{baseDir}/scripts/monitor.sh --feed
# Protocol configuration
{baseDir}/scripts/config.sh
# Protocol health
{baseDir}/scripts/health.sh
Security
Required Credentials
| Env Var | Required For | Default |
|---|---|---|
PRIVATE_KEY | Write ops (pulse, approve) | (none — read-only without it) |
BASE_RPC_URL | All on-chain calls | https://mainnet.base.org |
API_BASE | API calls | https://x402pulse.xyz |
PULSE_AMOUNT | Pulse amount (wei) | 1000000000000000000 (1 PULSE) |
TTL_THRESHOLD | Auto-pulse skip threshold | 21600 (6 hours) |
PULSE_REGISTRY_ADDRESS | Override registry | 0xe61C... |
PULSE_TOKEN_ADDRESS | Override token | 0x2111... |
X402_PAYMENT_HEADER | x402 payment proof for API pulse | (none — use direct on-chain mode without it) |
X402_HEADER_NAME | Custom x402 header name | X-402-Payment |
Approval Behavior
setup.sh --auto-approvesets a bounded allowance of 1,000 PULSE (not unlimited). This is enough for ~1,000 pulses before re-approval is needed.pulse.sh --directapproves the exact amount per transaction (no excess allowance).- The PulseRegistry contract can only call
transferFromduringpulse()— it cannot arbitrarily drain tokens.
Best Practices
- Never log, print, or commit
PRIVATE_KEY. - Use a dedicated wallet with only the PULSE tokens needed — not your main wallet.
- Start with
--dry-runmode to verify behavior before sending real transactions. - Verify contract addresses and chainId before signing transactions.
- Test with small amounts first.
References
- Action guide:
references/action_guide.md— detailed API patterns and examples - Contract ABI:
references/contract_abi.json— PulseRegistry full ABI
More by openclaw
View all skills by openclaw →You might also like
flutter-development
aj-geddes
Build beautiful cross-platform mobile apps with Flutter and Dart. Covers widgets, state management with Provider/BLoC, navigation, API integration, and material design.
drawio-diagrams-enhanced
jgtolentino
Create professional draw.io (diagrams.net) diagrams in XML format (.drawio files) with integrated PMP/PMBOK methodologies, extensive visual asset libraries, and industry-standard professional templates. Use this skill when users ask to create flowcharts, swimlane diagrams, cross-functional flowcharts, org charts, network diagrams, UML diagrams, BPMN, project management diagrams (WBS, Gantt, PERT, RACI), risk matrices, stakeholder maps, or any other visual diagram in draw.io format. This skill includes access to custom shape libraries for icons, clipart, and professional symbols.
ui-ux-pro-max
nextlevelbuilder
"UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient."
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
nano-banana-pro
garg-aayush
Generate and edit images using Google's Nano Banana Pro (Gemini 3 Pro Image) API. Use when the user asks to generate, create, edit, modify, change, alter, or update images. Also use when user references an existing image file and asks to modify it in any way (e.g., "modify this image", "change the background", "replace X with Y"). Supports both text-to-image generation and image-to-image editing with configurable resolution (1K default, 2K, or 4K for high resolution). DO NOT read the image file first - use this skill directly with the --input-image parameter.
fastapi-templates
wshobson
Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.
Related MCP Servers
Browse all serversSend and receive WhatsApp messages directly from Claude and other AI assistants. Search conversations, manage contacts,
Boost productivity on macOS with Apple Native Tools—search contacts, manage notes, and message easily in your favorite p
Use Mac Messages, the top iMessage app for PC, to send and read iMessages from your desktop with contact and group chat
Phone Control (Android ADB): Remotely manage Android phones with ADB—make calls, send texts, launch apps, manage contact
Connect your free email services or Mailchimp for seamless automation. Manage emails efficiently with IMAP and SMTP supp
A2A Bridge enables agent discovery and task management by bridging Google's protocol with MCP, supporting shortest path
Stay ahead of the MCP ecosystem
Get weekly updates on new skills and servers.