@rileycraig/plugin-x402-agentstore 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -24
- package/dist/index.js +130 -55
- package/package.json +35 -6
package/README.md
CHANGED
|
@@ -1,34 +1,48 @@
|
|
|
1
1
|
# @rileycraig/plugin-x402-agentstore
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Pay-per-call data tools for ElizaOS agents — settled in USDC over [x402](https://x402.org) on Base. No API keys. No signup. Payment is the auth.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Install once; your agent can search the web, read on-chain state, rug-check tokens, and check brand AI-visibility — paying per call in USDC automatically. Same model as BlockRun / Exa / Firecrawl, on independent rails, often cheaper.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
| Action | What it does | Price |
|
|
10
|
-
|---|---|---|
|
|
11
|
-
| `AI_VISIBILITY_CHECK` | Does AI recommend a brand/token? Score 0–100 + who AI names instead | free teaser / $0.95 full |
|
|
12
|
-
| `DEX_TOKEN_DATA` | Live DEX price, volume, liquidity, buy/sell flow for any token | $0.002 |
|
|
13
|
-
| `TOKEN_SECURITY_CHECK` | Pre-trade rug check: honeypot, sell tax, mint/owner risk + verdict | $0.002 |
|
|
14
|
-
| `AI_CATEGORY_RANKING` | Who AI recommends across a whole category, ranked | $0.02 |
|
|
15
|
-
| `COUNTRY_ECONOMICS` | GDP, inflation, unemployment for 200+ countries | $0.005 |
|
|
16
|
-
|
|
17
|
-
Paid calls settle from the agent's own x402 wallet on Base. Free teasers work with no payment.
|
|
18
|
-
|
|
19
|
-
## Install
|
|
7
|
+
This is how high-volume x402 services actually get called: not by being listed in a registry, but by being a **pre-installed tool inside the agents people run.** (BlockRun gets its volume by being ClawRouter inside OpenClaw; this puts the same kind of tools inside ElizaOS.)
|
|
20
8
|
|
|
21
9
|
```bash
|
|
22
10
|
npm install @rileycraig/plugin-x402-agentstore
|
|
23
11
|
```
|
|
24
12
|
|
|
25
13
|
```ts
|
|
26
|
-
import
|
|
27
|
-
|
|
28
|
-
// add to your ElizaOS character / runtime plugins:
|
|
29
|
-
plugins: [x402AgentStorePlugin]
|
|
14
|
+
import x402AgentStore from "@rileycraig/plugin-x402-agentstore";
|
|
15
|
+
// add to your ElizaOS character's plugins: [ x402AgentStore ]
|
|
30
16
|
```
|
|
31
17
|
|
|
18
|
+
## What your agent gets
|
|
19
|
+
|
|
20
|
+
| Action | What it does | Price (USDC) |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `WEB_SEARCH` | One call → Hacker News + GitHub + Stack Overflow + Wikipedia, unified & ranked | ~$0.004 |
|
|
23
|
+
| `WIKIPEDIA_LOOKUP` | Fast factual grounding | ~$0.001 |
|
|
24
|
+
| `ONCHAIN_BALANCE` | Native + ERC-20 balance, any address, 6 chains | ~$0.001 |
|
|
25
|
+
| `ONCHAIN_GAS` | Live gas price, 6 chains | ~$0.001 |
|
|
26
|
+
| `ONCHAIN_TX_STATUS` | Tx status + receipt by hash | ~$0.001 |
|
|
27
|
+
| `TOKEN_SECURITY_CHECK` | Pre-trade rug check (honeypot, tax, mint/owner risk) | ~$0.002 |
|
|
28
|
+
| `DEX_TOKEN_DATA` | Live DEX price / liquidity / flow | ~$0.002 |
|
|
29
|
+
| `TOKEN_LAUNCHES_FEED` | New & trending token feed for sniping agents | ~$0.003 |
|
|
30
|
+
| `AI_VISIBILITY_CHECK` | Does ChatGPT/Perplexity recommend a brand? (unique) | free teaser / paid |
|
|
31
|
+
| `AI_CATEGORY_RANKING` | Which brands AI recommends in a category | ~$0.02 |
|
|
32
|
+
|
|
33
|
+
**Cheaper than the field:** `WEB_SEARCH` bundles 4 sources for ~$0.004 vs Firecrawl's $0.01/search; on-chain reads from $0.001.
|
|
34
|
+
|
|
35
|
+
## How payment works (x402)
|
|
36
|
+
|
|
37
|
+
Every paid call returns `HTTP 402` with the price. If your ElizaOS runtime has an x402-enabled fetch, it signs a USDC payment locally (your key never leaves the machine) and retries with the `X-PAYMENT` header — you get live data. No accounts, no cards, no KYC. Free teasers (`/samples`, `/score`) work with no payment.
|
|
38
|
+
|
|
39
|
+
## Trust & verification (check us before you pay)
|
|
40
|
+
|
|
41
|
+
- **Live store:** https://store.agentexchange.work — `/status`, `/healthz`, free `/samples` of every product.
|
|
42
|
+
- **Discovery:** A2A agent card at `/.well-known/agent.json`, x402 catalog at `/.well-known/x402`, full `/openapi.json`, MCP at `/mcp`.
|
|
43
|
+
- **On-chain proof:** every payment is a public USDC transfer on Base → `0xc91cE6291eDC0713ec753BAFBA002506ffb2b95c` (audit on BaseScan).
|
|
44
|
+
- **Indexed:** Coinbase x402 Bazaar + x402scan.
|
|
45
|
+
|
|
32
46
|
## Build & publish
|
|
33
47
|
|
|
34
48
|
```bash
|
|
@@ -38,9 +52,6 @@ npm publish --access public
|
|
|
38
52
|
# then submit to the ElizaOS plugin registry so every ElizaOS agent can discover it
|
|
39
53
|
```
|
|
40
54
|
|
|
41
|
-
##
|
|
42
|
-
The agent economy runs on agents calling tools inside their frameworks. This plugin makes the x402 Agent Store's unique data — especially **AI-visibility** (does AI recommend you?), which nothing else offers — a one-line install for the entire ElizaOS ecosystem.
|
|
55
|
+
## License
|
|
43
56
|
|
|
44
|
-
|
|
45
|
-
- MCP (Claude/Cursor/Windsurf): https://store.agentexchange.work/mcp
|
|
46
|
-
- License: MIT
|
|
57
|
+
MIT © Riley Craig
|
package/dist/index.js
CHANGED
|
@@ -13,106 +13,181 @@ async function callStore(runtime, path) {
|
|
|
13
13
|
}
|
|
14
14
|
return res.json();
|
|
15
15
|
}
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
var lastText = (message) => {
|
|
17
|
+
var _a;
|
|
18
|
+
return (((_a = message == null ? void 0 : message.content) == null ? void 0 : _a.text) || "").trim();
|
|
19
|
+
};
|
|
20
|
+
var webSearch = {
|
|
21
|
+
name: "WEB_SEARCH",
|
|
22
|
+
similes: ["SEARCH_THE_WEB", "RESEARCH", "FIND_CODE", "LOOK_IT_UP", "GROUND_ANSWER", "FIND_SOURCES"],
|
|
23
|
+
description: "Search the web in ONE paid call \u2014 returns unified, ranked results from Hacker News, GitHub, Stack Overflow and Wikipedia. The call research/coding/answer agents make to ground a response or find code/sources. Pay-per-call (~$0.004) in USDC via x402, no API key.",
|
|
24
|
+
validate: async () => true,
|
|
25
|
+
handler: async (runtime, message, _state, _o, callback) => {
|
|
26
|
+
const q = lastText(message).replace(/^(search( the web)?( for)?|research|find|look up)\s+/i, "").trim();
|
|
27
|
+
if (!q) {
|
|
28
|
+
if (callback) callback({ text: "Provide a search query.", content: { error: "query required" } });
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const data = await callStore(runtime, `/web/search?q=${encodeURIComponent(q)}`);
|
|
32
|
+
if (callback) callback({ text: `Web search results for "${q}": ${JSON.stringify(data)}`, content: data });
|
|
33
|
+
return;
|
|
34
|
+
},
|
|
35
|
+
examples: []
|
|
36
|
+
};
|
|
37
|
+
var wikipedia = {
|
|
38
|
+
name: "WIKIPEDIA_LOOKUP",
|
|
39
|
+
similes: ["FACT_CHECK", "DEFINE", "WHAT_IS", "ENCYCLOPEDIA", "GROUND_FACT"],
|
|
40
|
+
description: "Fast factual grounding: pull the Wikipedia summary for any topic/person/place to fact-check or ground an answer. Pay-per-call (~$0.001) in USDC via x402, no API key.",
|
|
41
|
+
validate: async () => true,
|
|
42
|
+
handler: async (runtime, message, _state, _o, callback) => {
|
|
43
|
+
const q = lastText(message).replace(/^(what is|who is|define|wikipedia|look up)\s+/i, "").trim();
|
|
44
|
+
if (!q) {
|
|
45
|
+
if (callback) callback({ text: "Provide a topic to look up.", content: { error: "topic required" } });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const data = await callStore(runtime, `/web/wikipedia?q=${encodeURIComponent(q)}`);
|
|
49
|
+
if (callback) callback({ text: `Wikipedia: ${JSON.stringify(data)}`, content: data });
|
|
50
|
+
return;
|
|
51
|
+
},
|
|
52
|
+
examples: []
|
|
53
|
+
};
|
|
54
|
+
var CHAINS = "base|ethereum|eth|optimism|arbitrum|polygon|matic|bsc|bnb";
|
|
55
|
+
var pickChain = (t, d = "base") => {
|
|
56
|
+
var _a;
|
|
57
|
+
return (((_a = t.match(new RegExp(`\\b(${CHAINS})\\b`, "i"))) == null ? void 0 : _a[1]) || d).toLowerCase();
|
|
58
|
+
};
|
|
59
|
+
var chainBalance = {
|
|
60
|
+
name: "ONCHAIN_BALANCE",
|
|
61
|
+
similes: ["WALLET_BALANCE", "TOKEN_BALANCE", "CHECK_BALANCE", "HOW_MUCH_USDC", "ADDRESS_HOLDINGS"],
|
|
62
|
+
description: "Read the native + ERC-20 token balance of any wallet address across Base, Ethereum, Optimism, Arbitrum, Polygon and BSC. No RPC node needed. The balance read wallet/payment/treasury agents make constantly. Pay-per-call (~$0.001) in USDC via x402, no API key.",
|
|
20
63
|
validate: async () => true,
|
|
21
64
|
handler: async (runtime, message, _state, _o, callback) => {
|
|
22
65
|
var _a;
|
|
23
|
-
const text = (
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
66
|
+
const text = lastText(message);
|
|
67
|
+
const addr = (((_a = text.match(/0x[0-9a-fA-F]{40}/)) == null ? void 0 : _a[0]) || "").toLowerCase();
|
|
68
|
+
if (!addr) {
|
|
69
|
+
if (callback) callback({ text: "Provide a wallet address (0x...).", content: { error: "address required" } });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const data = await callStore(runtime, `/chain/balance?address=${addr}&chain=${pickChain(text)}`);
|
|
73
|
+
if (callback) callback({ text: `Balance for ${addr}: ${JSON.stringify(data)}`, content: data });
|
|
74
|
+
return;
|
|
75
|
+
},
|
|
76
|
+
examples: []
|
|
77
|
+
};
|
|
78
|
+
var chainGas = {
|
|
79
|
+
name: "ONCHAIN_GAS",
|
|
80
|
+
similes: ["GAS_PRICE", "GWEI", "NETWORK_FEE", "IS_GAS_HIGH", "WHEN_TO_TX"],
|
|
81
|
+
description: "Live gas price for Base, Ethereum, Optimism, Arbitrum, Polygon or BSC \u2014 the read agents make before sending a transaction to time it cheaply. Pay-per-call (~$0.001) in USDC via x402, no API key.",
|
|
82
|
+
validate: async () => true,
|
|
83
|
+
handler: async (runtime, message, _state, _o, callback) => {
|
|
84
|
+
const data = await callStore(runtime, `/chain/gas?chain=${pickChain(lastText(message))}`);
|
|
85
|
+
if (callback) callback({ text: `Gas: ${JSON.stringify(data)}`, content: data });
|
|
86
|
+
return;
|
|
87
|
+
},
|
|
88
|
+
examples: []
|
|
89
|
+
};
|
|
90
|
+
var chainTx = {
|
|
91
|
+
name: "ONCHAIN_TX_STATUS",
|
|
92
|
+
similes: ["TX_STATUS", "DID_IT_CONFIRM", "TRANSACTION_RECEIPT", "CHECK_TX"],
|
|
93
|
+
description: "Look up the status and receipt of any transaction hash (confirmed/failed, block, gas used) across Base, Ethereum, Optimism, Arbitrum, Polygon or BSC \u2014 the read settlement/payment agents make to confirm a transfer landed. Pay-per-call (~$0.001) in USDC via x402, no API key.",
|
|
94
|
+
validate: async () => true,
|
|
95
|
+
handler: async (runtime, message, _state, _o, callback) => {
|
|
96
|
+
var _a;
|
|
97
|
+
const text = lastText(message);
|
|
98
|
+
const hash = ((_a = text.match(/0x[0-9a-fA-F]{64}/)) == null ? void 0 : _a[0]) || "";
|
|
99
|
+
if (!hash) {
|
|
100
|
+
if (callback) callback({ text: "Provide a transaction hash (0x... 64 hex chars).", content: { error: "tx hash required" } });
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const data = await callStore(runtime, `/chain/tx?hash=${hash}&chain=${pickChain(text)}`);
|
|
104
|
+
if (callback) callback({ text: `Tx ${hash}: ${JSON.stringify(data)}`, content: data });
|
|
105
|
+
return;
|
|
106
|
+
},
|
|
107
|
+
examples: []
|
|
108
|
+
};
|
|
109
|
+
var tokenSecurity = {
|
|
110
|
+
name: "TOKEN_SECURITY_CHECK",
|
|
111
|
+
similes: ["RUG_CHECK", "HONEYPOT_CHECK", "IS_TOKEN_SAFE", "PRE_TRADE_SAFETY", "CAN_I_SELL"],
|
|
112
|
+
description: "Pre-trade rug check for any token contract: honeypot, buy/sell tax, mintable, owner-can-reclaim, transfer-pausable, blacklist, holder count + a DANGER/HIGH_RISK/CAUTION/OK verdict. The call to make BEFORE buying any token. Pay-per-call (~$0.002) in USDC via x402.",
|
|
113
|
+
validate: async () => true,
|
|
114
|
+
handler: async (runtime, message, _state, _o, callback) => {
|
|
115
|
+
var _a;
|
|
116
|
+
const text = lastText(message);
|
|
117
|
+
const addr = (((_a = text.match(/0x[0-9a-fA-F]{40}/)) == null ? void 0 : _a[0]) || "").toLowerCase();
|
|
118
|
+
const chain = pickChain(text, "ethereum");
|
|
119
|
+
if (!addr) {
|
|
120
|
+
if (callback) callback({ text: "Provide a token contract address (0x...) to run a rug check.", content: { error: "address required" } });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const data = await callStore(runtime, `/crypto/security?address=${addr}&chain=${chain}`);
|
|
124
|
+
if (callback) callback({ text: `Token security for ${addr} on ${chain}: ${JSON.stringify(data)}`, content: data });
|
|
125
|
+
return;
|
|
30
126
|
},
|
|
31
127
|
examples: []
|
|
32
128
|
};
|
|
33
129
|
var dexToken = {
|
|
34
130
|
name: "DEX_TOKEN_DATA",
|
|
35
131
|
similes: ["TOKEN_PRICE", "CRYPTO_DEX", "TOKEN_LIQUIDITY", "TOKEN_VOLUME"],
|
|
36
|
-
description: "Live decentralized-exchange data for any token (price, 24h volume, liquidity, buy/sell flow, momentum) across every chain.
|
|
132
|
+
description: "Live decentralized-exchange data for any token (price, 24h volume, liquidity, buy/sell flow, momentum) across every chain. Pay-per-call (~$0.002) in USDC via x402.",
|
|
37
133
|
validate: async () => true,
|
|
38
134
|
handler: async (runtime, message, _state, _o, callback) => {
|
|
39
|
-
|
|
40
|
-
const q = (((_a = message == null ? void 0 : message.content) == null ? void 0 : _a.text) || "").replace(/^(price|token|dex)\s+(of\s+)?/i, "").trim();
|
|
135
|
+
const q = lastText(message).replace(/^(price|token|dex)\s+(of\s+)?/i, "").trim();
|
|
41
136
|
const data = await callStore(runtime, `/crypto/dex?q=${encodeURIComponent(q)}`);
|
|
42
137
|
if (callback) callback({ text: `DEX data for ${q}: ${JSON.stringify(data)}`, content: data });
|
|
43
|
-
return
|
|
138
|
+
return;
|
|
44
139
|
},
|
|
45
140
|
examples: []
|
|
46
141
|
};
|
|
47
142
|
var tokenLaunches = {
|
|
48
143
|
name: "TOKEN_LAUNCHES_FEED",
|
|
49
144
|
similes: ["NEW_TOKENS", "TRENDING_TOKENS", "WHAT_LAUNCHED", "FIND_NEW_COINS", "SNIPE_FEED"],
|
|
50
|
-
description: "Discovery feed for trading/sniping agents: newest
|
|
145
|
+
description: "Discovery feed for trading/sniping agents: newest + most-boosted tokens across Solana, Base, Ethereum, BSC and more. Each item chains into TOKEN_SECURITY_CHECK (rug check) and DEX_TOKEN_DATA. Poll on a loop to find candidates. Pay-per-call (~$0.003) in USDC via x402.",
|
|
51
146
|
validate: async () => true,
|
|
52
147
|
handler: async (runtime, message, _state, _o, callback) => {
|
|
53
|
-
|
|
54
|
-
const text = ((_a = message == null ? void 0 : message.content) == null ? void 0 : _a.text) || "";
|
|
148
|
+
const text = lastText(message);
|
|
55
149
|
const chainM = text.match(/\b(solana|base|ethereum|eth|bsc|bnb|polygon|arbitrum)\b/i);
|
|
56
150
|
const chain = chainM ? `&chain=${chainM[1].toLowerCase()}` : "";
|
|
57
151
|
const data = await callStore(runtime, `/crypto/launches?limit=15${chain}`);
|
|
58
152
|
if (callback) callback({ text: `New & trending token launches: ${JSON.stringify(data)}`, content: data });
|
|
59
|
-
return
|
|
153
|
+
return;
|
|
60
154
|
},
|
|
61
155
|
examples: []
|
|
62
156
|
};
|
|
63
|
-
var
|
|
64
|
-
name: "
|
|
65
|
-
similes: ["
|
|
66
|
-
description: "
|
|
157
|
+
var aiVisibility = {
|
|
158
|
+
name: "AI_VISIBILITY_CHECK",
|
|
159
|
+
similes: ["DOES_AI_RECOMMEND", "BRAND_VISIBILITY", "GEO_CHECK", "AI_REPUTATION"],
|
|
160
|
+
description: "Check whether AI assistants (ChatGPT/Perplexity/Gemini) recommend a brand or token in its category. Returns a 0-100 AI-visibility score, mention rate, and which competitors AI names instead. Free teaser via /score; full audit via paid /brands/check. Unique to this store.",
|
|
67
161
|
validate: async () => true,
|
|
68
162
|
handler: async (runtime, message, _state, _o, callback) => {
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
const
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
const data = await callStore(runtime, `/crypto/security?address=${addr}&chain=${chain}`);
|
|
79
|
-
if (callback) callback({ text: `Token security for ${addr} on ${chain}: ${JSON.stringify(data)}`, content: data });
|
|
80
|
-
return true;
|
|
163
|
+
const text = lastText(message);
|
|
164
|
+
const m = text.match(/(.+?)\s+(?:in|for)\s+(.+)/i);
|
|
165
|
+
const brand = ((m == null ? void 0 : m[1]) || text).replace(/^(check|is|does ai recommend)\s+/i, "").trim();
|
|
166
|
+
const category = ((m == null ? void 0 : m[2]) || "its category").trim();
|
|
167
|
+
const data = await callStore(runtime, `/score?brand=${encodeURIComponent(brand)}&category=${encodeURIComponent(category)}`);
|
|
168
|
+
if (callback) callback({ text: `AI-visibility for ${brand}: ${JSON.stringify(data)}`, content: data });
|
|
169
|
+
return;
|
|
81
170
|
},
|
|
82
171
|
examples: []
|
|
83
172
|
};
|
|
84
173
|
var categoryRanking = {
|
|
85
174
|
name: "AI_CATEGORY_RANKING",
|
|
86
175
|
similes: ["WHO_DOES_AI_RECOMMEND", "CATEGORY_LEADERBOARD", "BEST_IN_CATEGORY"],
|
|
87
|
-
description: "Ask which brands AI recommends across a whole category right now, ranked by mention share.
|
|
176
|
+
description: "Ask which brands AI recommends across a whole category right now, ranked by mention share. Pay-per-call (~$0.02) in USDC via x402.",
|
|
88
177
|
validate: async () => true,
|
|
89
178
|
handler: async (runtime, message, _state, _o, callback) => {
|
|
90
|
-
|
|
91
|
-
const category = (((_a = message == null ? void 0 : message.content) == null ? void 0 : _a.text) || "").replace(/^(who does ai recommend (for|in)|best|ranking for)\s+/i, "").trim();
|
|
179
|
+
const category = lastText(message).replace(/^(who does ai recommend (for|in)|best|ranking for)\s+/i, "").trim();
|
|
92
180
|
const data = await callStore(runtime, `/category/ranking?category=${encodeURIComponent(category)}`);
|
|
93
181
|
if (callback) callback({ text: `AI category ranking for ${category}: ${JSON.stringify(data)}`, content: data });
|
|
94
|
-
return
|
|
95
|
-
},
|
|
96
|
-
examples: []
|
|
97
|
-
};
|
|
98
|
-
var countryEconomics = {
|
|
99
|
-
name: "COUNTRY_ECONOMICS",
|
|
100
|
-
similes: ["GDP", "INFLATION", "MACRO_DATA", "COUNTRY_FINANCE"],
|
|
101
|
-
description: "Economic indicators (GDP, growth, inflation, unemployment, GDP/capita, population) for 200+ countries. Paid per call ($0.005) via x402.",
|
|
102
|
-
validate: async () => true,
|
|
103
|
-
handler: async (runtime, message, _state, _o, callback) => {
|
|
104
|
-
var _a;
|
|
105
|
-
const country = (((_a = message == null ? void 0 : message.content) == null ? void 0 : _a.text) || "USA").replace(/[^A-Za-z ]/g, "").trim().slice(0, 40) || "USA";
|
|
106
|
-
const data = await callStore(runtime, `/macro/country?country=${encodeURIComponent(country)}`);
|
|
107
|
-
if (callback) callback({ text: `Economic indicators for ${country}: ${JSON.stringify(data)}`, content: data });
|
|
108
|
-
return true;
|
|
182
|
+
return;
|
|
109
183
|
},
|
|
110
184
|
examples: []
|
|
111
185
|
};
|
|
112
186
|
var x402AgentStorePlugin = {
|
|
113
187
|
name: "x402-agentstore",
|
|
114
|
-
description: "
|
|
115
|
-
|
|
188
|
+
description: "Pay-per-call data tools for ElizaOS agents over x402 (USDC on Base, no API key): WEB SEARCH (HN+GitHub+StackOverflow+Wikipedia in one call), ON-CHAIN READS (balance, gas, tx status across Base/Ethereum/Optimism/Arbitrum/Polygon/BSC), a trading lane (token rug-check, live DEX data, new-token feed), and unique AI-visibility/GEO data. Free samples at /samples.",
|
|
189
|
+
// Headline demand lanes first (web search + on-chain reads), then trading, then unique AI-visibility.
|
|
190
|
+
actions: [webSearch, wikipedia, chainBalance, chainGas, chainTx, tokenSecurity, dexToken, tokenLaunches, aiVisibility, categoryRanking],
|
|
116
191
|
providers: [],
|
|
117
192
|
evaluators: []
|
|
118
193
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rileycraig/plugin-x402-agentstore",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "ElizaOS plugin: x402
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "ElizaOS plugin: pay-per-call data tools over x402 (USDC on Base, no API key). WEB SEARCH (Hacker News + GitHub + Stack Overflow + Wikipedia in one call) for research/coding/grounding agents, ON-CHAIN READS (wallet balance, gas, tx status across Base/Ethereum/Optimism/Arbitrum/Polygon/BSC), a trading lane (token rug-check, live DEX data, new-token feed), and unique AI-visibility/GEO data.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
"types": "./dist/index.d.ts"
|
|
13
13
|
}
|
|
14
14
|
},
|
|
15
|
-
"files": [
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
16
18
|
"scripts": {
|
|
17
19
|
"build": "tsup src/index.ts --format esm --clean"
|
|
18
20
|
},
|
|
@@ -23,10 +25,37 @@
|
|
|
23
25
|
"tsup": "^8.0.0",
|
|
24
26
|
"typescript": "^5.4.0"
|
|
25
27
|
},
|
|
26
|
-
"keywords": [
|
|
28
|
+
"keywords": [
|
|
29
|
+
"elizaos",
|
|
30
|
+
"elizaos-plugin",
|
|
31
|
+
"x402",
|
|
32
|
+
"web-search",
|
|
33
|
+
"search",
|
|
34
|
+
"research",
|
|
35
|
+
"grounding",
|
|
36
|
+
"onchain",
|
|
37
|
+
"rpc",
|
|
38
|
+
"wallet-balance",
|
|
39
|
+
"gas",
|
|
40
|
+
"transaction",
|
|
41
|
+
"rug-check",
|
|
42
|
+
"honeypot",
|
|
43
|
+
"dex",
|
|
44
|
+
"trading",
|
|
45
|
+
"ai-visibility",
|
|
46
|
+
"geo",
|
|
47
|
+
"agent",
|
|
48
|
+
"agentic",
|
|
49
|
+
"base",
|
|
50
|
+
"usdc",
|
|
51
|
+
"micropayments",
|
|
52
|
+
"pay-per-call"
|
|
53
|
+
],
|
|
27
54
|
"author": "Riley Craig <rileycraig14@gmail.com>",
|
|
28
55
|
"license": "MIT",
|
|
29
56
|
"agentConfig": {
|
|
30
57
|
"pluginType": "elizaos:plugin:1.0.0"
|
|
31
|
-
}
|
|
32
|
-
|
|
58
|
+
},
|
|
59
|
+
"packageType": "plugin",
|
|
60
|
+
"platform": "node"
|
|
61
|
+
}
|