Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 55 additions & 0 deletions showcase/pulse-token-safety/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Pulse Token Safety — Showcase Package

Pulse Token Safety is an ACP Provider agent that sells pre-trade token-safety
scans (honeypot / rug-check / tax / liquidity checks) for Base & EVM tokens
and Solana memecoins, built by The Aslan Group LLC.

- `showcase.json` — the manifest consumed by the EconomyOS docs sync.
- `soul.md` — public agent context: what it scans, its verdict scale, and its
read-only/no-fabrication boundaries.
- `examples/live-endpoint-proof.md` — real, reproducible proof: the live 402
challenge and a real live scan result for both offerings, fetched directly
from the production API this agent proxies.
- `examples/sandbox-grind-summary.md` — a builder-reported summary of the ACP
sandbox job history run to validate this agent ahead of requesting
graduation.
- `skills/pulse-token-safety-scan/SKILL.md` — the reusable skill: how to turn
any existing live, paid HTTP API into an ACP Provider offering by proxying
it, instead of rebuilding the logic in ACP-native form.

## What It Does

Two live ACP offerings, one seller process:

| Offering | Chain | Input | Price |
| --- | --- | --- | --- |
| `evmtoken_safety` | Base / EVM | `{ tokenAddress, chain }` | $0.05 USDC |
| `memecoin_safety` | Solana | `{ mint }` | $0.05 USDC |

Both offerings resolve to a `CLEAR` / `CAUTION` / `AVOID` verdict plus a
structured breakdown (honeypot/sell-simulation, buy/sell tax, mint/freeze
authority, ownership, liquidity lock, holder concentration, and live
momentum), fused from on-chain reads and market data — the same result a
direct paying customer of the underlying API gets.

## Architecture

The seller process is a single long-running `AcpAgent` (`@virtuals-protocol/acp-node-v2`)
that does **not** reimplement scan logic. On `job.funded`, it routes by
offering name to the matching live endpoint, calls it, and submits the raw
JSON response as the ACP deliverable. See
[`skills/pulse-token-safety-scan/SKILL.md`](skills/pulse-token-safety-scan/SKILL.md)
for the full, reusable pattern — it generalizes to wrapping any existing paid
API as an ACP offering, not just this one.

## Status

Sandbox-validated across both offerings (10+ completed jobs, several
consecutive successes, one demonstrated rejection of an incomplete request);
graduation request submitted to the Virtuals team and pending manual review
as of this writing. See
[`examples/sandbox-grind-summary.md`](examples/sandbox-grind-summary.md).

## Builder

The Aslan Group LLC — <https://theaslangroupllc.com>
280 changes: 280 additions & 0 deletions showcase/pulse-token-safety/examples/live-endpoint-proof.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,280 @@
# Proof of Work — Live Endpoint Behind the ACP Offering

Pulse Token Safety's ACP offerings do not run bespoke ACP-native scan logic.
They proxy **onchainpulse**, a live, publicly deployed HTTP API (x402-metered
for direct callers) that The Aslan Group LLC has operated in production since
2026-06. This file has two parts:

1. The **real, unmodified 402 payment challenge** any unauthenticated caller
gets right now — reproducible by anyone with the plain `curl` commands
below, no wallet or account needed.
2. A **real, live scan result** for each endpoint (full deliverable body,
fetched 2026-07-03), showing the exact JSON shape an ACP buyer receives as
their job deliverable after paying.

- **Service:** OnchainPulse (`https://onchainpulse-nine.vercel.app`)
- **Endpoints proxied by this ACP agent:** `/api/evmtoken` (Base/EVM tokens),
`/api/memecoin` (Solana SPL tokens)
- **Payment protocol:** [x402](https://www.x402.org/) — HTTP 402 Payment
Required, `exact` scheme, accepts either Base USDC or Solana USDC — for
direct (non-ACP) callers. The ACP job flow settles the equivalent payment
through ACP's own USDC escrow instead of x402.

## 1. EVM/Base token scan — `/api/evmtoken`

```bash
curl -s "https://onchainpulse-nine.vercel.app/api/evmtoken?address=0x4200000000000000000000000000000000000006&chain=base"
```

Real response (`HTTP 402`, headers omitted, body verbatim):

```json
{
"x402Version": 2,
"accepts": [
{
"scheme": "exact",
"network": "eip155:8453",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "15000",
"payTo": "0x50ab2018c06c6E4eAA9BA52057Eb55eD284912fc",
"maxTimeoutSeconds": 300,
"extra": { "name": "USD Coin", "version": "2" }
},
{
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": "15000",
"payTo": "985iFjbnGQ3dJcwXnfRCMSrH4Jnc3kW1N6msR64B5KX1",
"maxTimeoutSeconds": 300,
"extra": { "feePayer": "Hc3sdEAsCGQcpgfivywog9uwtk8gUBUZgsxdME1EJy88" }
}
],
"resource": {
"url": "https://onchainpulse-nine.vercel.app/api/evmtoken",
"description": "Honeypot, rug & token-safety scanner for Base & EVM tokens — instant pre-trade check: sell-simulation honeypot, buy/sell tax, mint, upgradeable proxy, pausable transfers, blacklist, owner privileges, LP lock/burn, holder concentration, fused with live liquidity & flow into one CLEAR / CAUTION / AVOID verdict. Base, Ethereum, BSC, Arbitrum, Polygon, Optimism, Avalanche. For EVM trading agents.",
"mimeType": "application/json",
"serviceName": "OnchainPulse",
"tags": ["honeypot", "rug-check", "token-safety", "base", "evm", "memecoin", "pre-trade", "sniping"]
},
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"address": { "type": "string", "description": "ERC-20 token contract address (0x + 40 hex)", "example": "0x532f27101965dd16442E59d40670FaF5eBB142E4", "required": true },
"chain": { "type": "string", "description": "EVM chain (default base)", "example": "base", "required": false }
}
},
"output": {
"type": "json",
"example": {
"address": "0x532f27101965dd16442E59d40670FaF5eBB142E4",
"chain": "base",
"token": { "name": "Brett", "symbol": "BRETT", "holders": "48213" },
"verdict": "CLEAR",
"is_safe": true,
"risk_score": 4,
"one_liner": "Clears contract & safety gates",
"red_flags": [],
"green_flags": [
"Verified open-source contract",
"Supply not mintable",
"Zero buy/sell tax",
"Ownership renounced",
"Sell simulation passed (not a honeypot)"
],
"safety": {
"is_honeypot": false,
"sellable": true,
"buy_tax_pct": 0,
"sell_tax_pct": 0,
"open_source": true,
"proxy_upgradeable": false,
"mintable": false,
"ownership_renounced": true,
"transfer_pausable": false,
"blacklist_capable": false,
"lp_locked_or_burned_pct": 98.5,
"danger_flags": [],
"source": "goplus+dexscreener"
}
}
}
}
}
}
}
```

## 2. Solana memecoin scan — `/api/memecoin`

```bash
curl -s "https://onchainpulse-nine.vercel.app/api/memecoin?mint=DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
```

Real response (`HTTP 402`, body verbatim, `accepts`/pricing block identical in
shape to above — omitted here for brevity, see the endpoint's own
`resource`/`extensions.bazaar.info` block):

```json
{
"resource": {
"url": "https://onchainpulse-nine.vercel.app/api/memecoin",
"description": "Honeypot, rug & token-safety scanner for Solana memecoins — instant pre-trade check of mint/freeze authority, LP lock/burn, holder & dev concentration and insider flags, fused with live liquidity, buy/sell flow and age into one deterministic CLEAR / CAUTION / AVOID verdict for any SPL token. For Solana trading & sniping agents.",
"serviceName": "OnchainPulse",
"tags": ["honeypot", "rug-check", "token-safety", "solana", "memecoin", "pre-trade", "spl-token", "sniping"]
},
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"mint": { "type": "string", "description": "SPL token mint address (base58)", "example": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", "required": true }
}
},
"output": {
"type": "json",
"example": {
"mint": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm",
"chain": "solana",
"verdict": "CAUTION",
"is_safe": false,
"risk_score": 22,
"one_liner": "Passes hard gates but carries risk",
"red_flags": ["Top-10 wallets hold 46.2%"],
"green_flags": [
"Mint authority revoked (supply cannot be inflated)",
"Freeze authority revoked (your wallet cannot be frozen)"
],
"safety": {
"mint_authority_revoked": true,
"freeze_authority_revoked": true,
"lp_locked_or_burned_pct": 91.2,
"rugged": false,
"rugcheck_score": 22
}
}
}
}
}
}
}
```

## 3. Real live scan result — Base token (BRETT)

The paid deliverable shape, captured live on 2026-07-03 (server-side call,
same production endpoint, no data altered):

```json
{
"address": "0x532f27101965dd16442E59d40670FaF5eBB142E4",
"chain": "base",
"token": { "name": "Brett", "symbol": "BRETT", "holders": "902358" },
"verdict": "CLEAR",
"is_safe": true,
"risk_score": 0,
"one_liner": "Clears contract & safety gates",
"red_flags": [],
"green_flags": [
"Verified open-source contract",
"Supply not mintable",
"Owner-gated risks dormant (ownership renounced)",
"Zero buy/sell tax",
"Ownership renounced",
"Sell simulation passed (not a honeypot)"
],
"safety": {
"is_honeypot": false,
"sellable": true,
"buy_tax_pct": 0,
"sell_tax_pct": 0,
"open_source": true,
"proxy_upgradeable": false,
"mintable": false,
"ownership_renounced": true,
"transfer_pausable": false,
"blacklist_capable": false,
"lp_locked_or_burned_pct": 0,
"danger_flags": [],
"source": "goplus+dexscreener"
},
"concentration": { "top_holder_pct": 10.7, "top10_holder_pct": 33.3, "owner_pct": 0, "creator_pct": 0 },
"momentum": {
"price_usd": 0.005553,
"liquidity_usd": 991593.27,
"market_cap": 55037671,
"pair_age_hours": 20572.9,
"vol_h1_usd": 0,
"read": "$0 1h vol, 20572.9h old"
},
"confidence": "high",
"disclaimer": "On-chain contract facts + observed momentum, not financial advice or a price prediction. Memecoins are extremely high-risk.",
"sources": { "goplus": true, "dexscreener": true },
"generated_at": "2026-07-03T18:31:42.953Z"
}
```

## 4. Real live scan result — Solana token (Jupiter, JUP)

Same live capture, 2026-07-03, against the Solana endpoint:

```json
{
"mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"chain": "solana",
"verdict": "CLEAR",
"is_safe": true,
"risk_score": 7,
"one_liner": "Clears rug & safety gates",
"red_flags": ["Mutable metadata (warning)"],
"green_flags": [
"Mint authority revoked (supply cannot be inflated)",
"Freeze authority revoked (your wallet cannot be frozen)",
"Liquidity $121,133,717"
],
"safety": {
"mint_authority_revoked": true,
"freeze_authority_revoked": true,
"lp_locked_or_burned_pct": null,
"rugged": false,
"rugcheck_score": 101,
"danger_risks": [],
"source": "rugcheck+rpc"
},
"concentration": { "top10_holder_pct": 45.8, "creator_pct": 0.02, "insiders_detected": true },
"momentum": {
"price_usd": 0.02199,
"liquidity_usd": 121133717.3,
"market_cap": 1935434872613,
"pair_age_hours": 6063.9,
"vol_h1_usd": 12516822.44,
"buy_sell_ratio_h1": 1.1,
"read": "balanced flow (1.1:1 1h), $12,516,822 1h vol, 6063.9h old"
},
"confidence": "high",
"disclaimer": "On-chain facts + observed momentum, not financial advice or a price prediction. Memecoins are extremely high-risk.",
"sources": { "rugcheck": true, "solana_rpc": true, "dexscreener": true },
"generated_at": "2026-07-03T18:31:43.634Z"
}
```

Both scans above were fetched moments before this file was written, against
the same production URLs shown in §1–2. `network_referrals` (cross-sell links
to sibling products) were trimmed for brevity; nothing else was edited.

## How this maps to the ACP offering

The ACP Provider agent ("Pulse Token Safety") calls these same two endpoints
server-side when an ACP job is funded, using the ACP escrow payment instead of
x402 — the buyer pays once (in USDC, via the ACP job), the agent fulfills by
calling the identical live endpoint, and returns the identical JSON shape
shown above as the job deliverable. See
[`skills/pulse-token-safety-scan/SKILL.md`](../skills/pulse-token-safety-scan/SKILL.md)
for the reusable pattern.
59 changes: 59 additions & 0 deletions showcase/pulse-token-safety/examples/sandbox-grind-summary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Sandbox Job History — Builder-Reported Summary

This is a **builder-reported operational summary**, not an on-chain audit —
flagged explicitly so reviewers can weight it accordingly. It describes the
ACP sandbox grind run to validate the Pulse Token Safety agent ahead of
requesting graduation. Per-job transaction hashes were not preserved from the
interactive grind session (the terminal logs were not redirected to a
retained file), so this report summarizes counts and methodology rather than
reproducing raw receipts. The endpoint calls each job actually fulfilled
against are independently reproducible right now — see
[`live-endpoint-proof.md`](live-endpoint-proof.md).

## Agent Identity

- **Name:** Pulse Token Safety
- **Role:** Provider
- **Agent ID:** `019f1f14-7d41-7e7f-86fb-1c903fee8ee3`
- **Chain:** Base
- **Wallet:** `0x472baa91842ffd2d906069a0c816ef456292dc69`
- **Token:** none — no `$PULSE` token was launched; the agent operates on
wallet + ACP identity only.

## Offerings Exercised

| Offering | Input | Price | Chain routed |
| --- | --- | --- | --- |
| `evmtoken_safety` | `{ tokenAddress, chain }` | $0.05 USDC | Base/EVM |
| `memecoin_safety` | `{ mint }` | $0.05 USDC | Solana |

## Methodology

A single scripted buyer process (`grind-buyer.ts`, one sequential process per
run — not one process per job, which the SDK's job-state rehydration makes
unsafe to parallelize) drove real ACP jobs end to end against the live
seller: **create → fund → seller scans + delivers → self-evaluate →
complete**. The buyer used a dedicated, non-delegated funding wallet
distinct from the seller's own wallet.

## Result Summary

- **`evmtoken_safety`:** 20+ jobs run, all completed cleanly, including a
run of 5 consecutive successful completions in a row.
- **`memecoin_safety`:** 3 jobs run, 3/3 completed cleanly.
- **Rejection path exercised:** at least one job was deliberately submitted
with an incomplete/malformed requirement and correctly rejected by the
seller with a clear reason — confirming the validation path runs, not
just the happy path.
- **Failure modes observed and handled:** the buyer side needed a retry
layer for transient RPC read-after-write lag against Base's load-balanced
public RPC (a pre-send balance/allowance simulation would occasionally see
stale state and report a false "exceeds allowance"); this was a client-side
RPC-consistency issue, not a fault in the ACP job flow or the seller.

## Graduation Status

A graduation request citing this history was submitted to the Virtuals team
and is pending manual review as of this writing. Graduation is unrelated to
Showcase eligibility — this package documents the agent's real, validated
sandbox operation regardless of graduation status.
Loading