@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.
Files changed (3) hide show
  1. package/README.md +35 -24
  2. package/dist/index.js +130 -55
  3. package/package.json +35 -6
package/README.md CHANGED
@@ -1,34 +1,48 @@
1
1
  # @rileycraig/plugin-x402-agentstore
2
2
 
3
- **Put paid AI data tools inside any ElizaOS agent.** This plugin gives ElizaOS agents native actions that call the [x402 Agent Store](https://store.agentexchange.work) and pay per request in USDC via [x402](https://www.x402.org) no API keys, no subscriptions.
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
- 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 our tools inside ElizaOS the same way.)
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
- ## Actions
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 { x402AgentStorePlugin } from "@rileycraig/plugin-x402-agentstore";
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
- ## Why
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
- - Store: https://store.agentexchange.work · Free samples: https://store.agentexchange.work/samples
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 aiVisibility = {
17
- name: "AI_VISIBILITY_CHECK",
18
- similes: ["DOES_AI_RECOMMEND", "BRAND_VISIBILITY", "GEO_CHECK", "AI_REPUTATION"],
19
- 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.",
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 = (((_a = message == null ? void 0 : message.content) == null ? void 0 : _a.text) || "").trim();
24
- const m = text.match(/(.+?)\s+(?:in|for)\s+(.+)/i);
25
- const brand = ((m == null ? void 0 : m[1]) || text).replace(/^(check|is|does ai recommend)\s+/i, "").trim();
26
- const category = ((m == null ? void 0 : m[2]) || "its category").trim();
27
- const data = await callStore(runtime, `/score?brand=${encodeURIComponent(brand)}&category=${encodeURIComponent(category)}`);
28
- if (callback) callback({ text: `AI-visibility for ${brand}: ${JSON.stringify(data)}`, content: data });
29
- return true;
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. Paid per call ($0.002) via x402.",
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
- var _a;
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 true;
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 token launches plus the most-boosted/promoted tokens across Solana, Base, Ethereum, BSC and more. Each item includes chain, contract, socials and next_calls that chain into TOKEN_SECURITY_CHECK (rug check) and DEX_TOKEN_DATA (market data). Poll on a loop to find candidates. Paid per call ($0.003) via x402.",
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
- var _a;
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 true;
153
+ return;
60
154
  },
61
155
  examples: []
62
156
  };
63
- var tokenSecurity = {
64
- name: "TOKEN_SECURITY_CHECK",
65
- similes: ["RUG_CHECK", "HONEYPOT_CHECK", "IS_TOKEN_SAFE", "PRE_TRADE_SAFETY", "CAN_I_SELL"],
66
- description: "Pre-trade safety / rug check for any token contract: honeypot status, buy/sell tax, mintable, owner-can-reclaim, transfer-pausable, blacklist, holder count, plus a DANGER/HIGH_RISK/CAUTION/OK verdict. The call to make BEFORE buying any token. Paid per call ($0.002) via x402.",
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
- var _a, _b;
70
- const text = ((_a = message == null ? void 0 : message.content) == null ? void 0 : _a.text) || "";
71
- const addr = (((_b = text.match(/0x[0-9a-fA-F]{40}/)) == null ? void 0 : _b[0]) || "").toLowerCase();
72
- const chainM = text.match(/\b(ethereum|eth|base|bsc|bnb|polygon|matic|arbitrum|optimism|avalanche|avax)\b/i);
73
- const chain = ((chainM == null ? void 0 : chainM[1]) || "ethereum").toLowerCase();
74
- if (!addr) {
75
- if (callback) callback({ text: "Provide a token contract address (0x...) to run a rug check.", content: { error: "address required" } });
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. Paid per call ($0.02) via x402.",
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
- var _a;
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 true;
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: "x402 Agent Store data tools for ElizaOS: AI-visibility/GEO, live DEX token data, AI category rankings, prediction-market odds, and country economics \u2014 pay-per-call in USDC via x402, no API keys.",
115
- actions: [aiVisibility, dexToken, tokenLaunches, tokenSecurity, categoryRanking, countryEconomics],
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.1.0",
4
- "description": "ElizaOS plugin: x402 Agent Store data tools AI-visibility/GEO, live DEX token data, AI category rankings, prediction-market odds, country economics. Pay-per-call in USDC via x402, no API keys.",
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": ["dist"],
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": ["elizaos", "elizaos-plugin", "x402", "ai-visibility", "geo", "crypto", "dex", "agent", "base", "usdc"],
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
+ }