obyte-mcp 0.1.2 → 0.2.1

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/dist/tools.js CHANGED
@@ -1,9 +1,12 @@
1
+ import { assetExplorerUrl, summarizeBalanceAmounts } from "./amounts.js";
1
2
  import { envelopeConfig } from "./config.js";
2
3
  import { executeEnvelope } from "./envelope.js";
4
+ import { fetchAssetHolders } from "./explorerClient.js";
3
5
  import { assertNoSecrets } from "./secretGuard.js";
4
6
  import * as schemas from "./schemas.js";
5
7
  import { getAssetBySymbol, getDecimalsBySymbolOrAsset, getSymbolByAsset, resolveAsset } from "./symbols.js";
6
8
  import { textResult } from "./toolResult.js";
9
+ import { checkForUpdate } from "./updateCheck.js";
7
10
  export function registerObyteTools(server, clients, config) {
8
11
  const context = { server, clients, config };
9
12
  for (const tool of [...recommendedTools(context), ...rawTools(context), ...symbolTools(context)]) {
@@ -16,10 +19,15 @@ function resolveNetwork(value, defaultNetwork) {
16
19
  function withNetworkNote(description, config) {
17
20
  return `${description}\n\nNetwork: this server serves both Obyte networks at once. Pass "network":"mainnet" or "network":"testnet" to choose; when omitted it defaults to ${config.defaultNetwork}. If the user has not made the network explicit, confirm which network they mean before calling.`;
18
21
  }
22
+ const AMOUNTS_DESCRIPTION_NOTE = 'Amounts: raw ledger amounts in this output are integers in the asset\'s smallest units (base is GBYTE with 9 decimals). Never show raw integers to users: prefer display_total fields when present, otherwise resolve decimals with obyte_resolve_asset or obyte_get_decimals_by_symbol_or_asset and divide by 10^decimals.';
23
+ function toolDescription(tool, config) {
24
+ const base = withNetworkNote(tool.description, config);
25
+ return tool.amounts ? `${base}\n\n${AMOUNTS_DESCRIPTION_NOTE}` : base;
26
+ }
19
27
  function registerTool(context, tool) {
20
28
  context.server.registerTool(tool.name, {
21
29
  title: tool.title,
22
- description: withNetworkNote(tool.description, context.config),
30
+ description: toolDescription(tool, context.config),
23
31
  inputSchema: tool.schema,
24
32
  annotations: {
25
33
  title: tool.title,
@@ -40,14 +48,15 @@ function registerTool(context, tool) {
40
48
  return textResult(text);
41
49
  });
42
50
  }
43
- function recommendedTools(_context) {
51
+ function recommendedTools(context) {
44
52
  return [
45
53
  {
46
54
  name: "obyte_analyze_address",
47
55
  title: "Analyze Obyte Address",
48
56
  schema: schemas.analyzeAddressSchema,
49
- description: "Recommended first tool for understanding an Obyte address. Returns balances and optional definition, profile units, attestations, and bounded history. Use this instead of several raw calls when an agent needs an address overview. Output is a stable JSON envelope and may be truncated.",
50
- handler: async (args, { client }) => {
57
+ amounts: true,
58
+ description: "Recommended first tool whenever the user pastes an Obyte address (a 32-character base32 string) or asks about an Obyte wallet, balance, or account. Returns balances with a decimals-aware balance_summary (symbols, decimals, display totals), plus optional definition, profile units, attestations, and bounded history. Use this instead of several raw calls. Output is a stable JSON envelope and may be truncated.",
59
+ handler: async (args, { client, network }) => {
51
60
  const [balances, profileUnits, definition, attestations, history] = await Promise.all([
52
61
  client.getBalances([args.address]),
53
62
  client.getProfileUnits([args.address]),
@@ -55,14 +64,27 @@ function recommendedTools(_context) {
55
64
  args.include_attestations ? client.getAttestations(args.address).catch((error) => ({ error: String(error) })) : undefined,
56
65
  args.include_history ? client.getHistory([args.address]).catch((error) => ({ error: String(error) })) : undefined
57
66
  ]);
58
- return { address: args.address, balances, profile_units: profileUnits, definition, attestations, history };
67
+ const balanceSummary = await summarizeBalanceAmounts(client, balances, {
68
+ configuredRegistryAddress: network.tokenRegistryAddress,
69
+ network: network.network
70
+ });
71
+ return {
72
+ address: args.address,
73
+ balances,
74
+ balance_summary: balanceSummary,
75
+ profile_units: profileUnits,
76
+ definition,
77
+ attestations,
78
+ history
79
+ };
59
80
  }
60
81
  },
61
82
  {
62
83
  name: "obyte_analyze_unit",
63
84
  title: "Analyze Obyte Unit",
64
85
  schema: schemas.analyzeUnitSchema,
65
- description: "Recommended tool for inspecting one Obyte unit. Fetches the joint and, when requested, follows the AA response chain for trigger units. Use when the user provides a unit hash and asks what happened. Output is hub data wrapped in a stable JSON envelope.",
86
+ amounts: true,
87
+ description: "Recommended tool whenever the user pastes an Obyte unit hash (a 44-character base64 string, usually ending in \"=\") or asks about an Obyte transaction. Fetches the joint and, when requested, follows the AA response chain for trigger units. Payment output amounts are raw smallest units. Output is hub data wrapped in a stable JSON envelope.",
66
88
  handler: async (args, { client }) => ({
67
89
  unit: args.unit,
68
90
  joint: await client.getJoint(args.unit),
@@ -73,22 +95,58 @@ function recommendedTools(_context) {
73
95
  name: "obyte_analyze_aa",
74
96
  title: "Analyze Autonomous Agent",
75
97
  schema: schemas.analyzeAaSchema,
76
- description: "Recommended tool for summarizing an autonomous agent. Returns AA balances, selected state vars by prefix, and optional AA responses. Use for AA debugging or state inspection. State vars are sorted by key and output may be truncated.",
77
- handler: async (args, { client }) => ({
78
- address: args.address,
79
- balances: args.include_balances ? await client.getAaBalances(args.address) : undefined,
80
- state_vars: args.state_var_prefix ? await client.getAaStateVars(args.address, args.state_var_prefix) : undefined,
81
- aa_responses: args.include_responses ? await client.getAaResponses(args.address) : undefined
82
- })
98
+ amounts: true,
99
+ description: "Recommended tool for summarizing an Obyte autonomous agent (AA). Returns AA balances with a decimals-aware balance_summary, selected state vars by prefix, and optional AA responses. Use for AA debugging or state inspection. State var amounts are raw smallest units. State vars are sorted by key and output may be truncated.",
100
+ handler: async (args, { client, network }) => {
101
+ const balances = args.include_balances ? await client.getAaBalances(args.address) : undefined;
102
+ const [balanceSummary, stateVars, aaResponses] = await Promise.all([
103
+ balances !== undefined
104
+ ? summarizeBalanceAmounts(client, balances, {
105
+ configuredRegistryAddress: network.tokenRegistryAddress,
106
+ network: network.network
107
+ })
108
+ : undefined,
109
+ args.state_var_prefix ? client.getAaStateVars(args.address, args.state_var_prefix) : undefined,
110
+ args.include_responses ? client.getAaResponses(args.address) : undefined
111
+ ]);
112
+ return {
113
+ address: args.address,
114
+ balances,
115
+ balance_summary: balanceSummary,
116
+ state_vars: stateVars,
117
+ aa_responses: aaResponses
118
+ };
119
+ }
83
120
  },
84
121
  {
85
122
  name: "obyte_resolve_asset",
86
123
  title: "Resolve Obyte Asset",
87
124
  schema: schemas.resolveAssetSchema,
88
- description: "Recommended tool for resolving an asset id or token symbol in the selected network's registry. Returns asset, symbol, and decimals when available. Registry mappings are convenience metadata, not proof of legitimacy.",
89
- handler: async (args, { client, network }) => resolveAsset(client, args.value, {
90
- configuredRegistryAddress: network.tokenRegistryAddress,
91
- tokenRegistryAddress: args.token_registry_address
125
+ description: "Recommended tool for resolving an Obyte asset id (44-character base64 string) or token symbol (like GBYTE or OUSD) in the selected network's registry. Returns asset, symbol, and decimals when available. Always call this (or obyte_get_decimals_by_symbol_or_asset) before presenting amounts of unknown assets to users. Registry mappings are convenience metadata, not proof of legitimacy.",
126
+ handler: async (args, { client, network }) => {
127
+ const result = (await resolveAsset(client, args.value, {
128
+ configuredRegistryAddress: network.tokenRegistryAddress,
129
+ tokenRegistryAddress: args.token_registry_address
130
+ }));
131
+ const urlTarget = typeof result.symbol === "string" ? result.symbol : args.value;
132
+ return {
133
+ ...result,
134
+ explorer_asset_url: assetExplorerUrl(network.network, urlTarget),
135
+ holders_hint: "Open explorer_asset_url to see the asset description and current holders. Explorer amounts are already in display units - do not divide them by 10^decimals again."
136
+ };
137
+ }
138
+ },
139
+ {
140
+ name: "obyte_get_asset_holders",
141
+ title: "Get Asset Holders",
142
+ schema: schemas.assetHoldersSchema,
143
+ amounts: true,
144
+ description: 'Recommended tool whenever the user asks who holds an Obyte asset, wants a top-holders list, or asks about distribution/concentration of a token. Accepts a token symbol (like GBYTE or OUSD) or a 44-character asset id and returns holders sorted by balance descending with raw and display amounts, plus total supply. Data comes from the Obyte explorer (a centralized convenience service), not the hub, and may lag slightly. Up to 100 holders per call.',
145
+ handler: async (args, { network }) => fetchAssetHolders({
146
+ network: network.network,
147
+ value: args.asset_or_symbol,
148
+ limit: args.limit ?? 20,
149
+ timeoutMs: context.config.timeoutMs
92
150
  })
93
151
  },
94
152
  {
@@ -96,23 +154,26 @@ function recommendedTools(_context) {
96
154
  title: "Prepare AA Dry Run",
97
155
  schema: schemas.prepareAaDryRunSchema,
98
156
  dryRun: true,
99
- description: "Recommended tool for simulating an autonomous-agent trigger through the selected network's hub. This does not sign, broadcast, or mutate local state. Dry-run tools are not marked idempotent and are not retried by default.",
157
+ amounts: true,
158
+ description: "Recommended tool for simulating an Obyte autonomous-agent trigger through the selected network's hub. Trigger and response amounts are raw smallest units (1 GBYTE = 1e9 bytes) - convert user-facing amounts before building the trigger. This does not sign, broadcast, or mutate local state. Dry-run tools are not marked idempotent and are not retried by default.",
100
159
  handler: async (args, { client }) => ({ address: args.address, dry_run: await client.dryRunAa(args.address, args.trigger) })
101
160
  },
102
161
  {
103
162
  name: "obyte_get_portfolio_summary",
104
163
  title: "Get Portfolio Summary",
105
164
  schema: schemas.portfolioSummarySchema,
106
- description: "Recommended tool for summarizing balances for up to 20 addresses. Optionally enriches asset ids with symbols and decimals from the selected token registry. Use for user-facing balance explanations rather than raw get_balances.",
107
- handler: async (args, { client }) => {
165
+ amounts: true,
166
+ description: "Recommended tool for summarizing balances for up to 20 addresses. Returns raw balances plus totals_by_asset with symbols, decimals, and display totals already divided by 10^decimals (resolve_symbols controls registry lookups). Use for user-facing balance explanations rather than raw get_balances.",
167
+ handler: async (args, { client, network }) => {
108
168
  const balances = await client.getBalances(args.addresses);
109
- return {
110
- addresses: args.addresses,
111
- balances,
112
- symbol_resolution: args.resolve_symbols
113
- ? { note: "Use obyte_resolve_asset for per-asset details when the balance map contains non-base assets." }
114
- : undefined
115
- };
169
+ const summary = await summarizeBalanceAmounts(client, balances, {
170
+ configuredRegistryAddress: network.tokenRegistryAddress,
171
+ tokenRegistryAddress: args.token_registry_address,
172
+ resolve: args.resolve_symbols,
173
+ maxResolvedAssets: 20,
174
+ network: network.network
175
+ });
176
+ return { addresses: args.addresses, balances, ...summary };
116
177
  }
117
178
  }
118
179
  ];
@@ -123,7 +184,7 @@ function rawTools(context) {
123
184
  name: "obyte_get_network_info",
124
185
  title: "Get Obyte Network Info",
125
186
  schema: schemas.networkInfoSchema,
126
- description: "Returns the effective MCP runtime configuration for both networks: default network, per-network hub URL and token registry, config precedence, limits, and witnesses cache metadata. Use before other calls when network selection matters.",
187
+ description: "Returns the effective MCP runtime configuration for both networks: default network, per-network hub URL and token registry, config precedence, limits, witnesses cache metadata, and whether a newer obyte-mcp version is published (mention it to the user when update_available is true). Use before other calls when network selection matters.",
127
188
  handler: async () => ({
128
189
  default_network: context.config.defaultNetwork,
129
190
  default_network_source: context.config.defaultNetworkSource,
@@ -137,7 +198,8 @@ function rawTools(context) {
137
198
  witnesses_cache: {
138
199
  mainnet: context.clients.mainnet.getWitnessesCacheInfo(),
139
200
  testnet: context.clients.testnet.getWitnessesCacheInfo()
140
- }
201
+ },
202
+ update: await checkForUpdate()
141
203
  })
142
204
  },
143
205
  {
@@ -172,7 +234,8 @@ function rawTools(context) {
172
234
  name: "obyte_get_balances",
173
235
  title: "Get Balances",
174
236
  schema: schemas.addressesSchema,
175
- description: "Raw hub read. Fetches balances for 1 to 20 addresses. Use obyte_get_portfolio_summary for agent-friendly summaries.",
237
+ amounts: true,
238
+ description: "Raw hub read. Fetches balances for 1 to 20 addresses. Use obyte_get_portfolio_summary for agent-friendly summaries with decimals-adjusted display totals.",
176
239
  handler: async (args, { client }) => client.getBalances(args.addresses)
177
240
  },
178
241
  {
@@ -200,6 +263,7 @@ function rawTools(context) {
200
263
  name: "obyte_get_history",
201
264
  title: "Get Address History",
202
265
  schema: schemas.getHistorySchema,
266
+ amounts: true,
203
267
  description: "Raw hub read. Returns history for 1 to 20 addresses. If witnesses are omitted, the server uses the 10-minute witnesses cache or fetches witnesses from the hub.",
204
268
  handler: async (args, { client }) => client.getHistory(args.addresses, args.witnesses, args.update_witnesses)
205
269
  },
@@ -221,6 +285,7 @@ function rawTools(context) {
221
285
  name: "obyte_get_aa_response_chain",
222
286
  title: "Get AA Response Chain",
223
287
  schema: schemas.triggerUnitSchema,
288
+ amounts: true,
224
289
  description: "Raw hub read. Returns the autonomous-agent response chain for a trigger unit.",
225
290
  handler: async (args, { client }) => client.getAaResponseChain(args.trigger_unit)
226
291
  },
@@ -228,6 +293,7 @@ function rawTools(context) {
228
293
  name: "obyte_get_aa_responses",
229
294
  title: "Get AA Responses",
230
295
  schema: schemas.aaOrAasSchema,
296
+ amounts: true,
231
297
  description: "Raw hub read. Returns AA responses for one AA address or up to 20 AA addresses.",
232
298
  handler: async (args, { client }) => client.getAaResponses(args.aa ?? args.aas)
233
299
  },
@@ -243,6 +309,7 @@ function rawTools(context) {
243
309
  title: "Dry Run AA",
244
310
  schema: schemas.dryRunAaSchema,
245
311
  dryRun: true,
312
+ amounts: true,
246
313
  description: "Raw hub dry run. Simulates triggering an autonomous agent with a JSON trigger payload. It does not sign or broadcast. Not retried by default and not marked idempotent.",
247
314
  handler: async (args, { client }) => client.dryRunAa(args.address, args.trigger)
248
315
  },
@@ -257,14 +324,16 @@ function rawTools(context) {
257
324
  name: "obyte_get_aa_balances",
258
325
  title: "Get AA Balances",
259
326
  schema: schemas.aaAddressSchema,
260
- description: "Raw hub read. Returns balances held by one autonomous agent address.",
327
+ amounts: true,
328
+ description: "Raw hub read. Returns balances held by one autonomous agent address. Use obyte_analyze_aa for a decimals-aware summary.",
261
329
  handler: async (args, { client }) => client.getAaBalances(args.address)
262
330
  },
263
331
  {
264
332
  name: "obyte_get_aa_state_vars",
265
333
  title: "Get AA State Vars",
266
334
  schema: schemas.getAaStateVarsSchema,
267
- description: "Raw hub read. Returns autonomous-agent state variables, optionally bounded by prefix/range. Prefix length is limited to 128 characters. Map-like output is sorted by key.",
335
+ amounts: true,
336
+ description: "Raw hub read. Returns autonomous-agent state variables, optionally bounded by prefix/range. State vars holding amounts are raw smallest units. Prefix length is limited to 128 characters. Map-like output is sorted by key.",
268
337
  handler: async (args, { client }) => client.getAaStateVars(args.address, args.var_prefix, args.var_prefix_from, args.var_prefix_to)
269
338
  }
270
339
  ];
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Lightweight npm-registry version check so agents can tell users when a newer
3
+ * obyte-mcp is published. Fail-silent, 3s timeout, one request per process,
4
+ * opt-out via OBYTE_NO_UPDATE_CHECK (or the conventional NO_UPDATE_NOTIFIER).
5
+ */
6
+ export interface UpdateStatus {
7
+ current: string;
8
+ latest: string | null;
9
+ /** true = newer version published; false = up to date; null = check disabled or failed. */
10
+ update_available: boolean | null;
11
+ note?: string;
12
+ }
13
+ export declare function isUpdateCheckDisabled(env?: NodeJS.ProcessEnv): boolean;
14
+ export declare function checkForUpdate(fetchImpl?: typeof fetch, env?: NodeJS.ProcessEnv): Promise<UpdateStatus>;
15
+ /** Test hook: clears the per-process cache. */
16
+ export declare function resetUpdateCheckCache(): void;
@@ -0,0 +1,80 @@
1
+ import { PACKAGE_NAME, PACKAGE_VERSION } from "./constants.js";
2
+ const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
3
+ const CHECK_TIMEOUT_MS = 3_000;
4
+ let cached;
5
+ export function isUpdateCheckDisabled(env = process.env) {
6
+ return Boolean(env.OBYTE_NO_UPDATE_CHECK?.trim()) || Boolean(env.NO_UPDATE_NOTIFIER?.trim());
7
+ }
8
+ export function checkForUpdate(fetchImpl = fetch, env = process.env) {
9
+ if (isUpdateCheckDisabled(env)) {
10
+ return Promise.resolve({
11
+ current: PACKAGE_VERSION,
12
+ latest: null,
13
+ update_available: null,
14
+ note: "Update check disabled via OBYTE_NO_UPDATE_CHECK."
15
+ });
16
+ }
17
+ cached ??= fetchLatest(fetchImpl);
18
+ return cached;
19
+ }
20
+ /** Test hook: clears the per-process cache. */
21
+ export function resetUpdateCheckCache() {
22
+ cached = undefined;
23
+ }
24
+ async function fetchLatest(fetchImpl) {
25
+ try {
26
+ const controller = new AbortController();
27
+ const timer = setTimeout(() => controller.abort(), CHECK_TIMEOUT_MS);
28
+ let response;
29
+ try {
30
+ response = await fetchImpl(REGISTRY_URL, {
31
+ headers: { Accept: "application/json", "User-Agent": `${PACKAGE_NAME}/${PACKAGE_VERSION} (update check)` },
32
+ signal: controller.signal
33
+ });
34
+ }
35
+ finally {
36
+ clearTimeout(timer);
37
+ }
38
+ if (!response.ok)
39
+ return checkFailed();
40
+ const payload = (await response.json());
41
+ const latest = typeof payload?.version === "string" ? payload.version : null;
42
+ if (!latest)
43
+ return checkFailed();
44
+ const updateAvailable = compareVersions(latest, PACKAGE_VERSION) > 0;
45
+ const status = { current: PACKAGE_VERSION, latest, update_available: updateAvailable };
46
+ if (updateAvailable) {
47
+ status.note = `A newer obyte-mcp ${latest} is published (running ${PACKAGE_VERSION}). Unpinned npx configs pick it up on the next client restart; tell the user an update is available.`;
48
+ }
49
+ return status;
50
+ }
51
+ catch {
52
+ return checkFailed();
53
+ }
54
+ }
55
+ function checkFailed() {
56
+ return {
57
+ current: PACKAGE_VERSION,
58
+ latest: null,
59
+ update_available: null,
60
+ note: "Update check failed (offline or registry unreachable); this does not affect Obyte tools."
61
+ };
62
+ }
63
+ /** Compares the numeric major.minor.patch parts; prerelease tails are ignored. */
64
+ function compareVersions(a, b) {
65
+ const parse = (value) => value
66
+ .split(".")
67
+ .slice(0, 3)
68
+ .map((part) => {
69
+ const numeric = Number.parseInt(part, 10);
70
+ return Number.isFinite(numeric) ? numeric : 0;
71
+ });
72
+ const [aParts, bParts] = [parse(a), parse(b)];
73
+ for (let index = 0; index < 3; index += 1) {
74
+ const diff = (aParts[index] ?? 0) - (bParts[index] ?? 0);
75
+ if (diff !== 0)
76
+ return diff;
77
+ }
78
+ return 0;
79
+ }
80
+ //# sourceMappingURL=updateCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../src/updateCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAgB/D,MAAM,YAAY,GAAG,8BAA8B,YAAY,SAAS,CAAC;AACzE,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,IAAI,MAAyC,CAAC;AAE9C,MAAM,UAAU,qBAAqB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACxE,OAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,YAA0B,KAAK,EAAE,MAAyB,OAAO,CAAC,GAAG;IAClG,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,IAAI;YACZ,gBAAgB,EAAE,IAAI;YACtB,IAAI,EAAE,kDAAkD;SACzD,CAAC,CAAC;IACL,CAAC;IACD,MAAM,KAAK,WAAW,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,SAAS,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,SAAuB;IAChD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;QACrE,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE;gBACvC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,GAAG,YAAY,IAAI,eAAe,iBAAiB,EAAE;gBAC1G,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,WAAW,EAAE,CAAC;QAEvC,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAC;QACjE,MAAM,MAAM,GAAG,OAAO,OAAO,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7E,IAAI,CAAC,MAAM;YAAE,OAAO,WAAW,EAAE,CAAC;QAElC,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAiB,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;QACrG,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,GAAG,qBAAqB,MAAM,0BAA0B,eAAe,sGAAsG,CAAC;QAC3L,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,WAAW;IAClB,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,IAAI;QACtB,IAAI,EAAE,0FAA0F;KACjG,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,KAAK,GAAG,CAAC,KAAa,EAAY,EAAE,CACxC,KAAK;SACF,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACP,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obyte-mcp",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "mcpName": "io.github.taump/obyte-mcp",
5
5
  "description": "Local stdio MCP server for querying Obyte mainnet and testnet hubs.",
6
6
  "type": "module",
package/server.json CHANGED
@@ -8,13 +8,13 @@
8
8
  "url": "https://github.com/Taump/obyte-mcp",
9
9
  "source": "github"
10
10
  },
11
- "version": "0.1.2",
11
+ "version": "0.2.1",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "npm",
15
15
  "registryBaseUrl": "https://registry.npmjs.org",
16
16
  "identifier": "obyte-mcp",
17
- "version": "0.1.2",
17
+ "version": "0.2.1",
18
18
  "runtimeHint": "npx",
19
19
  "transport": {
20
20
  "type": "stdio"