curatedmcp 2.0.0 → 2.0.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/cli/add.js CHANGED
@@ -79,7 +79,7 @@ export function parseEnvFlags(args) {
79
79
  async function fetchStackConfig(slug) {
80
80
  const url = `${API_URL}/api/launcher/stack-config?slug=${encodeURIComponent(slug)}`;
81
81
  const res = await fetch(url, {
82
- headers: { "User-Agent": "@curatedmcp/launcher/1.0.0" },
82
+ headers: { "User-Agent": "curatedmcp/2.0.0" },
83
83
  });
84
84
  if (res.status === 404) {
85
85
  throw new Error(`Server "${slug}" not found in the CuratedMCP catalog. ` +
package/dist/cli/init.js CHANGED
@@ -9,12 +9,12 @@ const CONFIG_SNIPPET = JSON.stringify({
9
9
  mcpServers: {
10
10
  curatedmcp: {
11
11
  command: "npx",
12
- args: ["-y", "@curatedmcp/launcher"],
12
+ args: ["-y", "curatedmcp"],
13
13
  },
14
14
  },
15
15
  }, null, 2);
16
16
  const INSTRUCTIONS = `
17
- @curatedmcp/launcher — The MCP Hub
17
+ curatedmcp — The CuratedMCP Agent
18
18
  Add this entry to your AI client's MCP config:
19
19
 
20
20
  ${CONFIG_SNIPPET}
@@ -27,9 +27,9 @@ Config locations:
27
27
  Claude Code ~/.claude/mcp.json (or .claude/mcp.json in your project)
28
28
 
29
29
  Then add servers to your stack:
30
- launcher add github # interactive — prompts for GITHUB_TOKEN
31
- launcher add postgres # adds the Postgres server
32
- launcher list # see your stack
30
+ curatedmcp add github # interactive — prompts for GITHUB_TOKEN
31
+ curatedmcp add postgres # adds the Postgres server
32
+ curatedmcp list # see your stack
33
33
 
34
34
  Servers in your stack live at:
35
35
  ${stackPath()}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAiClC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAgClC"}
package/dist/cli/list.js CHANGED
@@ -6,7 +6,7 @@ export function listStack() {
6
6
  const stack = readStack();
7
7
  if (stack.entries.length === 0) {
8
8
  console.log("Your stack is empty.");
9
- console.log(`Add a server with \`launcher add <slug>\`.`);
9
+ console.log(`Add a server with \`curatedmcp add <slug>\`.`);
10
10
  console.log(`Browse https://curatedmcp.com/marketplace to find one.`);
11
11
  return 0;
12
12
  }
@@ -25,8 +25,7 @@ export function listStack() {
25
25
  // One-line upsell — only when the user has 2+ servers, so it's relevant, not spam.
26
26
  if (stack.entries.length >= 2) {
27
27
  console.log("");
28
- console.log(`Tip: get continuous security audits for everything in your stack →`);
29
- console.log(` https://curatedmcp.com/sentinel`);
28
+ console.log(`Tip: run \`curatedmcp audit\` to security-scan everything in your stack.`);
30
29
  }
31
30
  return 0;
32
31
  }
@@ -6,7 +6,7 @@ import { removeEntry, stackPath } from "../stack.js";
6
6
  export function removeFromStack(slug) {
7
7
  const removed = removeEntry(slug);
8
8
  if (!removed) {
9
- console.error(`"${slug}" is not in your stack. Run \`launcher list\` to see what is.`);
9
+ console.error(`"${slug}" is not in your stack. Run \`curatedmcp list\` to see what is.`);
10
10
  return 1;
11
11
  }
12
12
  console.log(`Removed \`${slug}\` from stack (${stackPath()}). Restart your AI client for the change to take effect.`);
package/dist/cli.js CHANGED
@@ -107,7 +107,7 @@ export async function runCli(argv) {
107
107
  case "add": {
108
108
  const slug = rest.find((a) => !a.startsWith("-"));
109
109
  if (!slug) {
110
- console.error("Usage: launcher add <slug> [--env KEY=value ...]");
110
+ console.error("Usage: curatedmcp add <slug> [--env KEY=value ...]");
111
111
  return 1;
112
112
  }
113
113
  const env = parseEnvFlags(rest);
@@ -118,7 +118,7 @@ export async function runCli(argv) {
118
118
  case "remove": {
119
119
  const slug = rest.find((a) => !a.startsWith("-"));
120
120
  if (!slug) {
121
- console.error("Usage: launcher remove <slug>");
121
+ console.error("Usage: curatedmcp remove <slug>");
122
122
  return 1;
123
123
  }
124
124
  return removeFromStack(slug);
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,KAAK,EAAc,MAAM,YAAY,CAAC;AAIpD,yDAAyD;AACzD,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAWD,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAiC;IAEjD;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;YAK9B,UAAU;IA6CxB;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IA0B1C;;;OAGG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;uBAsE82U,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAA+J,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAA+J,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;;wBAA8L,CAAC;qBAA2C,CAAC;;;;wBAA4I,CAAC;qBAA2C,CAAC;;uBAA6E,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAAkK,CAAC;oBAA0C,CAAC;gBAAsC,CAAC;uBAA6C,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;iBAAsF,CAAC;;wBAAyD,CAAC;qBAA2C,CAAC;qBAA6C,CAAC;;iBAA8E,CAAC;;;;yBAAiH,CAAC;kDAAiF,CAAC;;;;;;;;;;;yBAAgV,CAAC;kDAAiF,CAAC;;;;;IA5C58a,kEAAkE;IAC5D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,KAAK,EAAc,MAAM,YAAY,CAAC;AAIpD,yDAAyD;AACzD,UAAU,OAAO;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;CACtB;AAWD,qBAAa,KAAK;IAChB,OAAO,CAAC,QAAQ,CAAiC;IAEjD;;;OAGG;IACG,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;YAK9B,UAAU;IA6CxB;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IA0B1C;;;OAGG;IACG,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;uBAsE42U,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAA+J,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAA+J,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;;wBAA8L,CAAC;qBAA2C,CAAC;;;;wBAA4I,CAAC;qBAA2C,CAAC;;uBAA6E,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;;;uBAAkK,CAAC;oBAA0C,CAAC;gBAAsC,CAAC;uBAA6C,CAAC;wBAA4B,CAAC;wBAAgE,CAAC;4BAAkD,CAAC;;iBAAkE,CAAC;;;iBAAsF,CAAC;;wBAAyD,CAAC;qBAA2C,CAAC;qBAA6C,CAAC;;iBAA8E,CAAC;;;;yBAAiH,CAAC;kDAAiF,CAAC;;;;;;;;;;;yBAAgV,CAAC;kDAAiF,CAAC;;;;;IA5C18a,kEAAkE;IAC5D,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC"}
package/dist/proxy.js CHANGED
@@ -112,7 +112,7 @@ export class Proxy {
112
112
  const toolName = prefixedName.slice(sepIdx + PREFIX_SEPARATOR.length);
113
113
  const state = this.children.get(slug);
114
114
  if (!state) {
115
- throw new Error(`Server "${slug}" is not in your stack. Run \`launcher list\` to see what's loaded.`);
115
+ throw new Error(`Server "${slug}" is not in your stack. Run \`curatedmcp list\` to see what's loaded.`);
116
116
  }
117
117
  if (state.error) {
118
118
  throw new Error(state.error);
package/dist/telemetry.js CHANGED
@@ -55,7 +55,7 @@ export class Telemetry {
55
55
  method: "POST",
56
56
  headers: {
57
57
  "Content-Type": "application/json",
58
- "User-Agent": "@curatedmcp/launcher/1.0.1",
58
+ "User-Agent": "curatedmcp/2.0.0",
59
59
  },
60
60
  body: JSON.stringify(payload),
61
61
  }).catch(() => {
@@ -2,7 +2,7 @@ const API_URL = process.env.CURATOR_API_URL || "https://www.curatedmcp.com";
2
2
  export async function getServerDetails(slug) {
3
3
  const url = `${API_URL}/api/servers/${slug}`;
4
4
  const res = await fetch(url, {
5
- headers: { "User-Agent": "@curatedmcp/launcher/1.0.0" },
5
+ headers: { "User-Agent": "curatedmcp/2.0.0" },
6
6
  });
7
7
  if (!res.ok) {
8
8
  if (res.status === 404) {
@@ -8,7 +8,7 @@ export async function installServer(slug, client = "claude") {
8
8
  // Fetch server metadata
9
9
  const url = `${API_URL}/api/servers/${slug}`;
10
10
  const res = await fetch(url, {
11
- headers: { "User-Agent": "@curatedmcp/launcher/1.0.0" },
11
+ headers: { "User-Agent": "curatedmcp/2.0.0" },
12
12
  });
13
13
  if (!res.ok) {
14
14
  if (res.status === 404) {
@@ -7,7 +7,7 @@ export async function searchServers({ query, category, limit = 10, }) {
7
7
  params.set("limit", Math.min(limit, 50).toString());
8
8
  const url = `${API_URL}/api/launcher/search?${params}`;
9
9
  const res = await fetch(url, {
10
- headers: { "User-Agent": "@curatedmcp/launcher/1.0.0" },
10
+ headers: { "User-Agent": "curatedmcp/2.0.0" },
11
11
  });
12
12
  if (!res.ok) {
13
13
  throw new Error(`Search failed: ${res.status} ${res.statusText}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "curatedmcp",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "The CuratedMCP agent — discover, run, audit, and govern every MCP server your AI tools (Claude, Cursor, Windsurf, Copilot, Gemini) use",
5
5
  "license": "MIT",
6
6
  "type": "module",