io.github.philpof102-svg/xsignal
x402 pay-per-call data tools for Base agents. Flagship get_intent ABSTAINS instead of guessing.
Open source Repository Open in the app JSON README (API)
About
x402 pay-per-call data tools for Base agents. Flagship get_intent ABSTAINS instead of guessing.
Details
- Kind
- MCP servers
- Topic
- Finance & crypto
- Publisher
- philpof102-svg
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 0.2.1
- Last push
- 2026-08-18T19:50:05Z
- Repository state
- ativo
- Language
- JavaScript
- License
- MIT
- Added
- 2026-08-29 04:01:00
- Updated
- 2026-08-29 04:01:00
- Origin id
io.github.philpof102-svg/xsignal
README
# ⚡ xsignal **Pay-per-call data ingredients for AI agents on Base**, via x402 (USDC). The flagship is the one thing no other x402 signal does: **`get_intent` abstains** — it returns *"no verdict"* (and says so) when it isn't confident enough, instead of always answering and always charging. **3 free calls per wallet** to try, then from **$0.01**. Verify-only: never signs or moves funds. ## The tools (flagship first) | Tool / route | Price | What you get | |---|---|---| | **`get_preflight`** · `GET /preflight?addr=0x…` | $0.05 | **The composed Base preflight:** fuses on-chain safety (SAFE/WATCH/AVOID + rug flags, via MainStreet) with momentum into one verdict — GO / CAUTION / AVOID. Safety gates momentum, so it never green-lights a token that can rug. | | **`get_intent`** · `GET /intent?addr=0x…&min_confidence=0.7` | $0.01 | An outcome-priced momentum verdict (`gaining`/`fading`) **only if** confidence clears your bar, else a calibrated `abstain`. Paid answers carry a keyless tamper-evidence receipt. | | `get_token_brief` · `GET /brief?addr=0x…` | $0.05 | A **meal**: fuses market intel + cited social signal into a "what is happening with $TOKEN now" brief. | | `get_signal` · `GET /signal?q=<topic>` | $0.01 | A scored (virality + freshness) and **cited** real-time X/social signal. | | `get_token_intel` · `GET /token?addr=0x…` | $0.01 | Base token market data (liquidity/volume/price/age/flow + flags). Best as an input to the brief. | | `POST /mcp` | — | MCP (streamable-http): `tools/list` discovers the 5 tools; a `tools/call` returns an x402 **payment pointer**. | | `GET /health` · `/.well-known/mcp.json` · `/.well-known/agent-card.json` · `/skill.md` | free | health + agent discovery + the installable skill (no data). | ## Try it free (3 calls per wallet) Add `?wallet=0xYourAddress` to any route for **3 free full results**, so you can evaluate quality before paying. After 3, that wallet pays via x402. ```bash curl "https://xsignal-production.up.railway.app/intent?addr=0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed&min_confidence=0.5&wallet=0xYourAddr" ``` Then run the example — a **watchlist alerter** that surfaces only the tokens confidently moving (and stays quiet on the rest): ```bash WALLET=0xYourAddr node examples/watchlist-alerter.js ``` ## Pay with x402 (beyond the free probe) The first post-probe request returns **HTTP 402** with an `accepts` array (price in USDC, network `base`, `payTo`). Pay with `x402-fetch`/`x402-axios` and a funded Base wallet, resubmit with the `X-PAYMENT` header, get the result. `/intent` is pay-first: you pay, then get a verdict **or** an honest abstain. ## Safety **We never sign or move funds.** x402 means we *receive* USDC to `payTo`; payment is **verify-only** via a facilitator. Signals are scored from public X posts + public DEX data — *verify before acting; not financial advice.* Confidence is a mechanical heuristic, not a calibrated probability or a prediction. ## Config (env) | Var | Purpose | |---|---| | `XSIGNAL_PAYTO` | address that receives USDC (public; no key). Default = the operator address. | | `XSIGNAL_PRICE_USD` / `XSIGNAL_BRIEF_PRICE_USD` / `XSIGNAL_INTENT_PRICE_USD` | per-call prices (default `0.01` / `0.05` / `0.01`) | | `XSIGNAL_PROBE_FREE` | free probe calls per wallet (default `3`) | | `X402_NETWORK` / `FACILITATOR_URL` | `base` (mainnet CDP, needs `CDP_API_KEY_ID`/`CDP_API_KEY_SECRET`) or `base-sepolia` (keyless x402.org) | | `X_BEARER_TOKEN` **or** `XAI_API_KEY` | live X/Grok source for `get_signal` (token intel + intent are keyless via DexScreener). No key → a labelled DEMO seed. | ## Run ```bash npm start # :4520 npm test # full self-test suite (signal · tokenintel · brief · intent · x402 · sources · server) ``` Zero **runtime** deps for the core (plain Node >=18); `@coinbase/x402` is used only for CDP-facilitator auth on mainnet.