@topolo/mcp 0.7.0 → 0.7.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/README.md CHANGED
@@ -201,10 +201,33 @@ npx @modelcontextprotocol/inspector node dist/index.js
201
201
 
202
202
  ## Release Flow
203
203
 
204
- Preferred flow: push a `v<x.y.z>` tag to `main`; GitHub Actions typechecks,
205
- tests, builds, verifies the tag matches `package.json`, and publishes to npm via
206
- the `NPM_TOKEN` secret. Operators may publish directly with an npm token only
207
- after running the same package checks and `npm pack --dry-run`.
204
+ Agent packages are released locally from the `staging` branch after its package
205
+ gates pass. Publish in dependency order (`@topolo/sdk`, `@topolo/cli`, then
206
+ `@topolo/mcp`) so every public dependency already exists in the registry.
207
+
208
+ For each package, run its tests, typecheck, build, and tarball verification:
209
+
210
+ ```bash
211
+ pnpm --dir packages/topolo-mcp test
212
+ pnpm --dir packages/topolo-mcp typecheck
213
+ pnpm --dir packages/topolo-mcp build
214
+ node tooling/verify-npm-package.mjs packages/topolo-mcp
215
+ ```
216
+
217
+ The npm token is stored in the macOS Keychain under `registry.npmjs.org`. Use a
218
+ temporary npm config so the token is never written into the repository or
219
+ printed:
220
+
221
+ ```bash
222
+ printf '//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}\n' > /tmp/topolo-release.npmrc
223
+ NODE_AUTH_TOKEN="$(security find-generic-password -s registry.npmjs.org -w)" \
224
+ NPM_CONFIG_USERCONFIG=/tmp/topolo-release.npmrc \
225
+ sh -c 'cd packages/topolo-mcp && npm publish --access public'
226
+ ```
227
+
228
+ After publishing, install exact versions into an empty temporary directory and
229
+ exercise the SDK exports, CLI version command, MCP exports, and `topolo-mcp`
230
+ executable before updating `topoloPublishedVersion`.
208
231
 
209
232
  ## Phase 2 (planned)
210
233
 
package/dist/dispatch.js CHANGED
@@ -79,7 +79,7 @@ var TOOLS = [
79
79
  {
80
80
  name: "topolo_search_applications",
81
81
  title: "Search Topolo applications the agent can reach",
82
- description: "Searches the credential-scoped application registry with a bounded page and continuation cursor. Returns granted permissions, API URL, and launch URL without loading the global platform catalog.",
82
+ description: "Searches the credential-scoped application registry with a bounded page and continuation cursor. Returns actionService as the canonical selector for topolo_search_actions, plus granted permissions, API URL, and launch URL without loading the global platform catalog.",
83
83
  requiredScopes: [],
84
84
  destructive: false,
85
85
  inputSchema: {
@@ -102,6 +102,7 @@ var TOOLS = [
102
102
  return {
103
103
  id,
104
104
  appId: entry.appId,
105
+ actionService: entry.appId,
105
106
  slug: entry.slug,
106
107
  name: entry.name,
107
108
  apiBaseUrl: entry.apiBaseUrl,
@@ -128,7 +129,7 @@ var TOOLS = [
128
129
  properties: {
129
130
  service: {
130
131
  type: "string",
131
- description: "Required app id, slug, or name."
132
+ description: "Required application selector. Prefer actionService from topolo_search_applications; canonical app id, slug, and name are also accepted."
132
133
  },
133
134
  query: { type: "string" },
134
135
  cursor: { type: "string" },
package/dist/http.js CHANGED
@@ -3098,9 +3098,9 @@ var require_data = __commonJS({
3098
3098
  }
3099
3099
  });
3100
3100
 
3101
- // ../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js
3101
+ // ../../node_modules/.pnpm/fast-uri@3.1.3/node_modules/fast-uri/lib/utils.js
3102
3102
  var require_utils = __commonJS({
3103
- "../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/utils.js"(exports, module) {
3103
+ "../../node_modules/.pnpm/fast-uri@3.1.3/node_modules/fast-uri/lib/utils.js"(exports, module) {
3104
3104
  "use strict";
3105
3105
  var isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
3106
3106
  var isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
@@ -3411,9 +3411,9 @@ var require_utils = __commonJS({
3411
3411
  }
3412
3412
  });
3413
3413
 
3414
- // ../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js
3414
+ // ../../node_modules/.pnpm/fast-uri@3.1.3/node_modules/fast-uri/lib/schemes.js
3415
3415
  var require_schemes = __commonJS({
3416
- "../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/lib/schemes.js"(exports, module) {
3416
+ "../../node_modules/.pnpm/fast-uri@3.1.3/node_modules/fast-uri/lib/schemes.js"(exports, module) {
3417
3417
  "use strict";
3418
3418
  var { isUUID } = require_utils();
3419
3419
  var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu;
@@ -3621,9 +3621,9 @@ var require_schemes = __commonJS({
3621
3621
  }
3622
3622
  });
3623
3623
 
3624
- // ../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js
3624
+ // ../../node_modules/.pnpm/fast-uri@3.1.3/node_modules/fast-uri/index.js
3625
3625
  var require_fast_uri = __commonJS({
3626
- "../../node_modules/.pnpm/fast-uri@3.1.2/node_modules/fast-uri/index.js"(exports, module) {
3626
+ "../../node_modules/.pnpm/fast-uri@3.1.3/node_modules/fast-uri/index.js"(exports, module) {
3627
3627
  "use strict";
3628
3628
  var { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require_utils();
3629
3629
  var { SCHEMES, getSchemeHandler } = require_schemes();
@@ -3836,7 +3836,7 @@ var require_fast_uri = __commonJS({
3836
3836
  if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {
3837
3837
  if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) {
3838
3838
  try {
3839
- parsed.host = URL.domainToASCII(parsed.host.toLowerCase());
3839
+ parsed.host = new URL("http://" + parsed.host).hostname;
3840
3840
  } catch (e) {
3841
3841
  parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e;
3842
3842
  }
@@ -15887,7 +15887,7 @@ var TOOLS = [
15887
15887
  {
15888
15888
  name: "topolo_search_applications",
15889
15889
  title: "Search Topolo applications the agent can reach",
15890
- description: "Searches the credential-scoped application registry with a bounded page and continuation cursor. Returns granted permissions, API URL, and launch URL without loading the global platform catalog.",
15890
+ description: "Searches the credential-scoped application registry with a bounded page and continuation cursor. Returns actionService as the canonical selector for topolo_search_actions, plus granted permissions, API URL, and launch URL without loading the global platform catalog.",
15891
15891
  requiredScopes: [],
15892
15892
  destructive: false,
15893
15893
  inputSchema: {
@@ -15910,6 +15910,7 @@ var TOOLS = [
15910
15910
  return {
15911
15911
  id,
15912
15912
  appId: entry.appId,
15913
+ actionService: entry.appId,
15913
15914
  slug: entry.slug,
15914
15915
  name: entry.name,
15915
15916
  apiBaseUrl: entry.apiBaseUrl,
@@ -15936,7 +15937,7 @@ var TOOLS = [
15936
15937
  properties: {
15937
15938
  service: {
15938
15939
  type: "string",
15939
- description: "Required app id, slug, or name."
15940
+ description: "Required application selector. Prefer actionService from topolo_search_applications; canonical app id, slug, and name are also accepted."
15940
15941
  },
15941
15942
  query: { type: "string" },
15942
15943
  cursor: { type: "string" },
package/dist/index.js CHANGED
@@ -72,6 +72,7 @@ var APP_API_URLS = {
72
72
  bugfix: "https://bugfix.topolo.app",
73
73
  bytes: "https://bytes.topolo.app",
74
74
  calendar: "https://calendar.topolo.app",
75
+ campaigns: "https://campaigns.topolo.app",
75
76
  capacity: "https://capacity.topolo.app",
76
77
  chat: "https://chat.topolo.app",
77
78
  commerce: "https://commerce.topolo.app",
@@ -330,6 +331,38 @@ var APPLICATIONS = {
330
331
  }
331
332
  ]
332
333
  },
334
+ "campaigns": {
335
+ "id": "campaigns",
336
+ "appDir": "TopoloCampaigns",
337
+ "name": "topolo-campaigns",
338
+ "packageName": "topolo-campaigns",
339
+ "productionUrl": "https://campaigns.topolo.app",
340
+ "services": [
341
+ "campaigns"
342
+ ],
343
+ "deployTargets": [
344
+ {
345
+ "name": "topolo-campaigns",
346
+ "kind": "worker",
347
+ "apiUrl": "https://campaigns.topolo.app",
348
+ "domains": [
349
+ "campaigns.topolo.app"
350
+ ],
351
+ "routes": [
352
+ "campaigns.topolo.app"
353
+ ],
354
+ "appId": "campaigns"
355
+ },
356
+ {
357
+ "name": "topolo-campaigns-api",
358
+ "kind": "worker",
359
+ "apiUrl": null,
360
+ "domains": [],
361
+ "routes": [],
362
+ "appId": null
363
+ }
364
+ ]
365
+ },
333
366
  "capacity": {
334
367
  "id": "capacity",
335
368
  "appDir": "TopoloCapacity",
@@ -2980,6 +3013,7 @@ var APP_API_URLS2 = {
2980
3013
  bugfix: "https://bugfix.topolo.app",
2981
3014
  bytes: "https://bytes.topolo.app",
2982
3015
  calendar: "https://calendar.topolo.app",
3016
+ campaigns: "https://campaigns.topolo.app",
2983
3017
  capacity: "https://capacity.topolo.app",
2984
3018
  chat: "https://chat.topolo.app",
2985
3019
  commerce: "https://commerce.topolo.app",
@@ -3372,7 +3406,7 @@ var TOOLS = [
3372
3406
  {
3373
3407
  name: "topolo_search_applications",
3374
3408
  title: "Search Topolo applications the agent can reach",
3375
- description: "Searches the credential-scoped application registry with a bounded page and continuation cursor. Returns granted permissions, API URL, and launch URL without loading the global platform catalog.",
3409
+ description: "Searches the credential-scoped application registry with a bounded page and continuation cursor. Returns actionService as the canonical selector for topolo_search_actions, plus granted permissions, API URL, and launch URL without loading the global platform catalog.",
3376
3410
  requiredScopes: [],
3377
3411
  destructive: false,
3378
3412
  inputSchema: {
@@ -3395,6 +3429,7 @@ var TOOLS = [
3395
3429
  return {
3396
3430
  id,
3397
3431
  appId: entry.appId,
3432
+ actionService: entry.appId,
3398
3433
  slug: entry.slug,
3399
3434
  name: entry.name,
3400
3435
  apiBaseUrl: entry.apiBaseUrl,
@@ -3421,7 +3456,7 @@ var TOOLS = [
3421
3456
  properties: {
3422
3457
  service: {
3423
3458
  type: "string",
3424
- description: "Required app id, slug, or name."
3459
+ description: "Required application selector. Prefer actionService from topolo_search_applications; canonical app id, slug, and name are also accepted."
3425
3460
  },
3426
3461
  query: { type: "string" },
3427
3462
  cursor: { type: "string" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topolo/mcp",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Model Context Protocol server for the Topolo platform. Exposes scope-gated tools that third-party agents (Claude, Codex, etc.) can call natively.",
5
5
  "type": "module",
6
6
  "bin": {